J’ai pu observer de nombreuses personnes, ces dernières années, essayant d’utiliser dpkg --build
pour créer des paquets Debian. Et, de fait, si vous lisez les pages de manuel de dpkg et de dpkg-deb, l’option semble bien appropriée à cet usage :
-b, --build répertoire [archive|répertoire]
Crée une archive Debian avec l’arborescence contenue dans
répertoire
.répertoire
doit posséder un sous-répertoire DEBIAN qui contient les fichiers de contrôle tel que le fichier « control » lui-même. Ce répertoire n’apparaît pas dans l’archive de l’arborescence du paquet binaire ; mais les fichiers qu’il contient sont mis dans la zone de contrôle du paquet binaire.
On peut en conclure que oui, effectivement, dpkg-deb est l’outil créant en dernière étape les fichiers .deb (aussi connus sous le nom de paquets binaires). Ce qui ne veut pas dire que vous êtes censé appeler un tel outil « bas-niveau » vous-même. En effet, si vous souhaitez empaqueter proprement un logiciel, vous devez plutôt créer un paquet source Debian, qui partira du code source amont pour créer des paquets binaires respectant la charte technique Debian.
Créer un tel paquet source implique également de préparer une arborescence de répertoires (mais avec un sous-répertoire « debian »), ce qui est probablement plus compliqué que d’appliquer dpkg -b
à un répertoire ciselé « à la main ». Mais le résultat en est d’autant plus versatile : les outils utilisés apportent une valeur ajoutée en analysant/modifiant dynamiquement les fichiers à l’intérieur de votre paquet (par exemple, les dépendances envers les bibliothèques C requises par votre paquet sont insérées automatiquement).
Si cette méthodologie vous était inconnue, vous souhaiterez peut-être approfondir le sujet grâce au manuel du Nouveau Mainteneur ou à la Charte Debian.
Ceci est une traduction de mon article Avoid a newbie packager mistake: don’t build your Debian packages with dpkg -b contribuée par Weierstrass01.
Abonnez-vous à ce blog par RSS ou par email pour recevoir tous les prochains articles et améliorer votre maîtrise de Debian/Ubuntu.
SQP says
Les quelques fois ou j’ai utilisé la commande, c’était pour empaqueter des fichiers de données (icones, thèmes, images…) pour des programmes déjà installés.
Tu conseilles quoi comme méthode dans ce cas la ?
(juste pour pouvoir ranger des fichiers proprement au bon endroit dans /usr/share sur plusieurs machines)
Raphaël Hertzog says
@SQP, je conseille la même chose, créer un paquet source ca se fait en 30 secondes avec dh_make. Ensuite tu configure debian/paquet.install pour lister les fichiers à installer et leur emplacement, et puis voilà.
Évidemment un peu de ménage dans debian/ et personnaliser debian/control est nécessaire, mais ce n’est vraiment pas long.
Gamoth says
Bonjour,
Je suis à peu près dans la même situation que SQP. Mon logiciel est à but local uniquement (non distribution sur les dépôts).
Il contient quelques scripts shell à placer dans /usr/loca/, quelques fichiers de configuration dans /etc et quelques logs dans /var/log.
Je n’ai jamais crée de paquet donc j’ai cherché un peu partout sur la toile pour avoir un tutoriel complet mais cela s’est révélé infructueux.
Soit le tutoriel portait sur des paquets sources soit il utilisait dpkg -b.
Est-ce que cela serait possible de détailler un peu les étapes ou de m’indiquer une page le faisant clairement ?
Merci et bonne continuation.
Desidia says
Si je suis satisfait de la Debian de manière générale, j’avoue que la construction d’un paquet – sauf en partant des paquets sources Debian – m’a toujours semblé extrêmement ardue. Les quelques fois où je dois compiler quelque chose qui n’est pas dans les dépôts, j’utilise checkinstall, que j’ai connu quand j’utilisais la Slackware.
On compile son logiciel comme à l’ordinnaire, mais on remplace le « make install » par checkinstall, ce qui crée le paquet qu’on installe ultérieurement. C’est peut-être une méthode au rabais (pour les dépendances, la configuration, etc.) , mais ça offre l’avantage de pouvoir désinstaller avec les commandes habituelles.