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


Ressources

Autres liens