Linux/How-to/CreerPaquetDebian
Un article de Queret.net Wiki.
Sommaire |
Créer son propre paquet Debian
Introduction
Nous allons ici nous baser sur un exemple concret.
Debian ne charge pas au boot du systeme les regles iptables. J'ai donc fait un script qui est a placé dans /etc/init.d/ et à mettre dans les rc.d pour qu'il soit pris en compte au boot de la machine.
Pour l'exemple, nous allons ici automatiser les differentes étapes.
A l'installation les différentes étapes manuelles sont :
# cp iptables /etc/init.d/ # cp functions /etc/init.d/ # update-rc.d iptables start 20 3 4 5 .
Et si l'on veux tout désinstaller les étapes manuelles sont :
# rm -f /etc/init.d/iptables # rm -f /etc/init.d/functions # update-rc.d -n -f iptables remove
Apres la création de notre paquet debian il nous suffira de faire pour l'installation :
# dpkg -i iptablesboot.deb
Ou pour la désinstallation :
# dpkg --purge iptablesboot
Les fichiers iptables et functions sont téléchargeable ici : http://www.queret.net/download/how-to_CreerPaquetDebian/
Création de l'arboresence
Il faut créer un répertoire avec le nom de votre paquet. Celui-ci doit contenir un répertoire DEBIAN.
# mkdir -p iptablesboot/DEBIAN
Le gestionnaire de paquets de la distribution va reproduire la structure à l'intérieur du répertoire paquet sur le système de fichier.
# mkdir iptablesboot/etc/init.d # cp iptables iptablesboot/etc/init.d # cp functions iptablesboot/etc/init.d
Vous pouvez ajouter des informations (copyright, README, changelog, changelog.Debian ... ) à propos de du paquet dans le répertoire : /usr/share/doc/iptablesboot.
# mkdir -p iptablesboot/usr/share/doc/iptablesboot
Voici un exemple de fichier copyright :
This package was debianized by Yoann QUERET <yoann@queret.net> Copyright: This software is copyright (c) 2006 by Auteur.
Création du fichier DEBIAN/control
Il nous faut créer le fichier control qui est utilisé par le gestionnaire de paquets de la distribution Debian. Il permet de contrôler les dépendances du paquet.
Package: iptablesboot Version: 1.0 Section: base Priority: optional Architecture: all Depends: bash (>= 2.0) Maintainer: Yoann QUERET <yoann@queret.net> Description: Load iptables rules at boot time Load iptables rules at boot time
La ligne Depends permet de gérer les dépendances du paquet. La syntaxe de cette ligne est décrite dans la charte Debian.
Création du fichier DEBIAN/postinst
Ce fichier sera executé après que les fichiers soit copier.
Il va nous servir à executer la commande pour que le script iptables soit lancé au boot.
#!/bin/sh -e
# postinst script for iptablesboot
#
if [ -x "/etc/init.d/iptables" ]; then
update-rc.d iptables defaults >/dev/null
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d iptables start || exit 0
else
/etc/init.d/iptables start || exit 0
fi
fi
Création du fichier DEBIAN/prerm
Ce fichier sera executé avant que les fichiers soit effacé lors d'une désinstallation.
Il va nous servir à executer la commande pour que le script iptables ne soit plus lancé au boot.
#!/bin/sh -e
# postrm script for iptablesboot
#
if [ -x "/etc/init.d/iptables" ]; then
if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then
invoke-rc.d iptables stop || exit 0
else
/etc/init.d/iptables stop || exit 0
fi
fi
L'arboresence finale
Une fois que vous aurez fini l'arboresence du répertoire paquet, celle-ci devra ressembler à ceci :
iptablesboot
|-- DEBIAN
| |-- control
| |-- postinst
| `-- prerm
|-- etc
| `-- init.d
| |-- iptables
| `-- functions
`-- usr
`-- share
`-- doc
`-- iptablesboot
|-- changelog
|-- readme
`-- copyright
Créer le paquet à l'aide de dpkg-deb
Revenons tout d'abort dans le repertoire parent de notre repertoire iptablesboot
Il ne vous reste plus qu'à créer le paquet à l'aide de la commande dpkg-deb.
# dpkg-deb --build iptablesboot dpkg-deb: building package `iptablesboot' in `iptablesboot.deb'.
Ce paquet peut être installé comme n'importe quel paquet Debian à l'aide de la commande dpkg.
# dpkg -i iptablesboot.deb Selecting previously deselected package paquet. (Reading database ... 101856 files and directories currently installed.) Unpacking paquet (from iptablesboot.deb) ... Setting up iptablesboot (1.0) ...
Ce paquet peut être désinstallé comme à l'habitude.
#dpkg --remove --purge iptablesboot.deb
