Comment créer un paquet .deb étape par étape

Dernière mise à jour: 04/12/2025
Auteur: Isaac
  • Un paquet .deb combine les fichiers d'installation et les métadonnées dans une structure de répertoires avec un dossier DEBIAN obligatoire.
  • Le fichier de contrôle définit le nom, la version, l'architecture, les dépendances et les descriptions, ainsi que des scripts tels que postinst et postrm.
  • dpkg-deb et dpkg-buildpackage vous permettent de générer des paquets à partir de structures simples ou de code source complexe avec prise en charge de debhelper.
  • Les tests, l'installation et, si nécessaire, la mise à niveau des paquets garantissent une intégration propre et maintenable dans Debian et les systèmes dérivés.

Guide étape par étape pour créer un package .deb

Si vous utilisez Debian, Ubuntu ou une distribution dérivée, vous pourriez avoir besoin, tôt ou tard, de créer votre propre paquet .deb pour installer des scripts, des binaires, des fonds d'écran ou toute autre ressource de manière propre et reproductible. Un emballage soigné est non seulement plus professionnel, mais il vous fait aussi gagner du temps lorsque vous souhaitez déployer le même paquet sur plusieurs machines ou le partager avec d'autres utilisateurs.

Même si cela peut paraître un peu compliqué au premier abord, la réalité est que Le format .deb obéit à des règles très claires.Un paquet se compose d'une structure de répertoires spécifique, de fichiers de contrôle contenant les informations relatives au paquet et, éventuellement, de scripts de maintenance exécutés à différentes étapes de l'installation ou de la désinstallation. La compréhension de ces concepts de base vous permettra de créer aussi bien un simple fichier .deb copiant un paquet qu'un paquet plus complexe. scénario en /usr/bin jusqu'à des packs plus élaborés comprenant des polices, des fonds d'écran ou des applications complètes compilées à partir du code source.

Qu'est-ce qu'un paquet .deb exactement ?

Un fichier avec l' extension .deb est le format de paquet logiciel utilisé par Debian et toutes ses distributions dérivées (Ubuntu, Deepin basé sur Debian, etc.). Ce fichier contient, compressés, les fichiers qui seront installés sur votre système ainsi qu'un ensemble de métadonnées décrivant le paquet : nom, version, architecture, dépendances, scripts de post-installation, etc.

Le programme de bas niveau qui gère ces paquets est dpkg , qui prend en charge le décompression, l'installation, la configuration et la suppression des fichiers .deb. Des outils plus conviviaux comme apt , aptitude ou des gestionnaires de paquets graphiques tels que Synaptic , PackageKit , Gdebi ou le Centre logiciel Ubuntu fonctionnent par-dessus. Cependant, lors de la création manuelle d'un fichier .deb, vous utiliserez presque toujours dpkg et dpkg-deb.

Concrètement, un paquet .deb n'est rien de plus qu'un un fichier installable sur les systèmes Debian qui intègre tout ce qui est nécessaire pour déployer correctement une application ou des ressources. Comparé à un simple tar.gz À l'instar d'une AppImage, le fichier .deb s'intègre au système de paquets, respecte les chemins standard et permet une gestion ordonnée des dépendances et des versions.

Structure interne d'un paquet deb

Structure de base d'un paquet .deb

Avant de faire ses valises, il est essentiel de comprendre que Un fichier .deb est créé à partir d'un dossier racine dont le nom correspond généralement à celui du paquet (par exemple miapp, fuentes-personales, debetc.). Dans ce dossier, nous avons deux grands blocs : le dossier DEBIAN (en majuscules) et la hiérarchie d'installation où les fichiers du package seront copiés.

Le tapis DEBIAN contient les fichiers de contrôle du paquet. L'élément obligatoire est controloù sont définis le nom du paquet, sa version, son architecture, ses dépendances, sa description, etc. De plus, des scripts spéciaux peuvent être créés, tels que : post-installation y après-midiqui s'exécutent automatiquement après l'installation ou la suppression du paquet.

Le reste de la structure se réplique les chemins système où vous souhaitez que vos fichiers se retrouventSi vous souhaitez installer un script dans /usr/binVous devrez créer miapp/usr/bin/ et placez-y le fichier exécutable. S'il s'agit de fichiers sources, vous utiliserez /usr/share/fonts/S'il s'agit de papiers peints, peut-être /usr/share/backgrounds/Le programme d'installation décompresse simplement le contenu du fichier .deb dans ces répertoires, en respectant la hiérarchie.


mkdir deb
mkdir -p deb/usr/bin
cp execute.sh deb/usr/bin/

Puis, à l'intérieur deb, vous créeriez deb/DEBIAN/ et le dossier deb/DEBIAN/control avec les métadonnées du paquet. Cette structure sera ensuite empaquetée avec dpkg-deb o dpkg -b pour générer le fichier .deb final.

Le fichier de contrôle : le cœur du paquet

fichier de contrôle d'un paquet deb

À l'intérieur du dossier DEBIAN Le fichier est obligatoire. control, qui définit toutes les informations de base concernant le paquetIl s'agit d'un fichier texte brut sans extension qui contient des champs au format Clave: ValorUne par ligne. Voici quelques-uns des champs les plus courants :


Package: nombre-del-paquete
Version: 1.0
Section: misc
Priority: optional
Architecture: all
Maintainer: Nombre Apellido <email@dominio>
Depends: paquete1, paquete2
Replaces: paquete-viejo (>= 1.0)
Description: descripción corta
descripción larga del paquete en una o varias líneas

La campagne Forfait indique le nom du paquet interne et Il n'autorise ni les espaces ni les traits de soulignement.Seules les lettres minuscules, les chiffres et les traits d'union sont généralement utilisés (-). C'est le nom que le système de gestion de paquets verra lors de son installation.

  Erreur 0x80240069 lors de l'utilisation de WSUS sous Windows 11 24H2 : causes, symptômes et solution

La campagne Version Il spécifie la version exacte du paquet et il est important de le mettre à jour à chaque modification importante. Vous pouvez suivre un format simple comme 1.0 ou un type plus élaboré 1.0-3 pour indiquer les modifications apportées au sein d'une même version logicielle. Si vous devez annuler des modifications, apprenez comment procéder. revenir à une version précédente d'un paquet.

Champs Blog y Priorité Ils aident à trier le colis. Blog Cela pourrait être quelque chose comme misc, custom, netetc., particulièrement utile si vous prévoyez de publier le paquet dans un dépôt. Priorité Cela reflète l'importance : les valeurs communes sont required, important, standard, optional o extraétant optional le plus courant pour les forfaits personnalisés.

La campagne Architecture Veuillez préciser l'architecture pour laquelle le package est destiné : amd64, i386, x86, arm64etc. Si le paquet ne contient que des scripts ou des fichiers indépendants de l'architecture (tels que des images, des polices ou des scripts bash ou Python), vous pouvez utiliser tous pour indiquer qu'il fonctionne sur n'importe quelle plateforme.

Le champ « Responsable » indique le développeur ou la personne en charge du paquet, généralement avec son nom et son adresse électronique. Le champ « Remplace » permet d'indiquer les paquets ou versions que ce nouveau paquet remplace, ce qui est utile lors de la publication d'une nouvelle version devant remplacer une version précédemment installée. Si vous préférez gérer plusieurs versions, consultez la procédure d'installation de deux versions du même paquet sous Linux.

La campagne Dépend Indiquez les dépendances qui doivent être installées avant ou pendant l'installation du paquet. Par exemple, si votre application est écrite en Python et que vous n'installez pas vous-même les bibliothèques via un script, vous pouvez spécifier ici les paquets nécessaires. apte Résolvez-les automatiquement. Si votre paquet gère déjà cela (par exemple, en téléchargeant les dépendances depuis un script d'installation), vous pouvez le laisser tel quel. Depends: vider.

Enfin, le champ Description présente une particularité : la première ligne contient une brève description , et les lignes suivantes (facultatives) forment la description détaillée. Chaque ligne de la description détaillée doit impérativement commencer par un espace . Cela permet aux outils Debian de distinguer les deux parties et d'afficher correctement les informations dans les listes de paquets et les gestionnaires de paquets.

Scripts post-installation et post-suppression : automatisation des tâches

En plus du fichier controldans le dossier DEBIAN Vous pouvez créer plusieurs scripts de maintenance qui s'exécutent automatiquement à différents moments. Les plus couramment utilisés dans les packages simples sont : post-installation y après-midibien qu'il en existe d'autres comme preinst o prerm pour les cas plus complexes.

Le script de post-installation s'exécute après la décompression et l'installation des fichiers . C'est l'endroit idéal pour exécuter des commandes de configuration : par exemple, lancer le programme d'installation de votre application, régénérer les caches, recharger les services ou modifier les fichiers de configuration générés lors de l'installation.

le script après-midi ça marche après avoir retiré l'emballageIl est généralement utilisé pour nettoyer les fichiers résiduels qui ne font pas strictement partie du package ou pour annuler les modifications apportées à la configuration du système. Par exemple, vous pouvez supprimer un dossier créé dans /usr/share/fonts/fuentes-personales/ après avoir désinstallé un pack de polices.

Ces scripts sont simplement fichiers texte exécutables Ce fichier contient les commandes à exécuter, généralement en bash. L'ajout de cette ligne n'est pas obligatoire. #!/bin/bash Au départ, bien que ce soit une bonne pratique, il est important qu'ils disposent des autorisations d'exécution appropriées, généralement quelque chose comme 755 (c'est-à-dire, lecture et exécution pour tous, écriture réservée au propriétaire). En général, il est recommandé qu'ils soient compris entre 0555 y 0755.


#!/bin/bash
rm -Rf /usr/share/fonts/fuentes-personales/

Le paquet sera alors supprimé. dpkg -r o apt remove, Le répertoire spécifié disparaîtra automatiquement.éviter le gaspillage inutile dans le système.

Création de la hiérarchie des répertoires de packages

Pour que le package fonctionne comme prévu, vous devez jouer dans votre dossier racine la structure exacte où vous souhaitez installer les fichiers. L'idée est que ce que vous mettez dans miapp/usr/bin/ se terminera par /usr/bin/, quoi qu'il y ait dans miapp/usr/share/fonts/ se terminera par /usr/share/fonts/ et ainsi de suite.

Imaginez que vous souhaitiez créer un paquet qui installe de nouvelles polices sur votre système. L'arborescence des répertoires pourrait ressembler à ceci :


fuentes-personales/
├── DEBIAN/
│ └── control
└── usr/
└── share/
└── fonts/
└── fuentes-personales/
├── fuente1.ttf
└── fuente2.otf

Dans ce cas, lors de l'installation du paquet, Les polices seront copiées dans /usr/share/fonts/personal-fonts/Si vous publiez ultérieurement une nouvelle version avec des polices supplémentaires ou améliorées, il vous suffira de mettre à jour le contenu de ce dossier et de télécharger la version dans le fichier. control.

Un autre scénario typique consiste à emballer un script téléchargé depuis GitHubPar exemple, un outil que vous souhaitez placer dans /opt et peut-être ajouter un lanceur dans /usr/binVous pourriez télécharger le projet (par exemple) 4nonimizer), créer un dossier deb/opt/ et insérez le code complet ici :

  Que puis-je faire pour bloquer l'accès à Facebook ? Comment supprimer l'accès restreint sur Facebook ?


mkdir -p deb/opt/
cp -R 4nonimizer deb/opt/

Si vous souhaitez également qu'une commande soit exécutée lors de l'installation du paquet, comme 4nonimizer installVous pourriez utiliser un script post-installation Configurez le programme pour qu'il exécute automatiquement cette commande après la décompression des fichiers. Ainsi, l'utilisateur n'aura qu'à installer le fichier .deb, et c'est tout, sans aucune manipulation supplémentaire.

N'oubliez pas qu'avant de compiler le paquet, il est fortement recommandé que le propriétaire du dossier racine soit l'utilisateur root , car, lors de l'exécution, les fichiers système appartiennent à cet utilisateur. Vous pouvez modifier le propriétaire avec :


sudo chown -R root:root ./deb

Générez manuellement le paquet .deb

Une fois que vous avez préparé la structure avec le dossier DEBIAN, l'archive controlles scripts possibles postinst/postrm et la hiérarchie dans laquelle les fichiers sont stockés, l'étape suivante est créer le package .debIl existe plusieurs façons de procéder, mais les plus courantes pour les paquets simples sont dpkg -b y dpkg-deb --build.


dpkg -b ./deb /home/usuario/SCRIPTS.deb

Dans le cas de la demande miappL'ordre habituel serait quelque chose comme :


cd ruta/donde/este/miapp
dpkg-deb --build miapp

Cela créera un fichier dont le nom sera similaire à myapp.deb Ou, selon votre configuration et l'endroit d'où vous le lancez, un fichier suivant un modèle comme miapp-1.0_amd64.debCe fichier constituera alors le package installable que vous pourrez copier sur d'autres machines ou télécharger sur un dépôt.

Après le montage, vous pouvez consulter les informations internes du colis avec :


dpkg --info fuentes-personales.deb

La commande affichera des données telles que la taille, les sections, la priorité, le responsable de la maintenance, l'architecture, une description courte et longue, ainsi que des références aux scripts de maintenance (par exemple, postinst o postrm) si vous les avez inclus.

Installez et testez votre package .deb

Une fois le fichier .deb généré, il est temps de vérifier qu'il fonctionne comme prévu . Vous pouvez l'installer depuis une interface graphique, à l'aide d'outils comme GDebi ou le gestionnaire de paquets de votre distribution, ou directement depuis le terminal.


sudo dpkg -i nombre-del-paquete.deb

Si votre système vous signale des dépendances rompues, vous pouvez les corriger avec sudo apt -f installqui tentera de télécharger et d'installer les paquets manquants. C'est une bonne idée. Vérifiez ensuite que les fichiers ont bien été installés aux emplacements prévus. (par exemple, vérifier si le script est dans /usr/bin ou si les sources apparaissent dans le répertoire correspondant et sont reconnues par le système).

Pour consulter à nouveau les détails du paquet après l'installation ou simplement en vérifier le contenu, vous disposez également des options suivantes :


dpkg --info nombre-del-paquete.deb

Et si vous souhaitez le désinstaller, il vous suffit d'utiliser :


sudo dpkg -r nombre-del-paquete

Si vous avez correctement défini un script postrm , cette phase exécutera les tâches de nettoyage que vous avez planifiées, supprimant les répertoires ou fichiers résiduels afin de laisser le système aussi propre que possible.

Compilation à partir du code source et reconstruction des packages avancés

Au-delà de la simple création de paquets pour les scripts ou les ressources statiques, il est courant, dans les environnements plus avancés, de recompiler des paquets existants à partir de leur code source . Cela peut s'avérer nécessaire si vous avez besoin d'une version plus récente d'un programme que celle fournie avec votre distribution, ou si vous souhaitez modifier les options de compilation par défaut.

Ce processus de compilation d'une version plus récente d'un paquet pour qu'elle fonctionne sur une distribution stable est généralement appelé rétroportage . En règle générale, on prend le code source d'une version plus récente de Debian (par exemple, Testing ou Unstable), on l'adapte, puis on reconstruit le fichier .deb pour qu'il soit compatible avec votre système stable.

Pour télécharger le code source d'un paquet déjà présent dans les dépôts, vous pouvez utiliser :


apt source nombre-del-paquete

Par exemple, avec samba:


apt source samba

Cette commande est responsable de télécharger les fichiers sources (normalement un .dsc contrôle et un ou plusieurs fichiers compressés .tar.gz, .tar.xzetc.), vérifiez leur intégrité et extrayez-les dans un répertoire dont le nom combine le nom du paquet et la version, par exemple samba-4.13.13+dfsg.

Si vous avez directement l'URL du fichier. .dsc Sur un miroir Debian ou sur le site web du responsable de la maintenance, une autre option pratique consiste à utiliser obtenir (extrait de l'emballage) devscripts), qui télécharge le fichier .dsc, les fichiers associés et vérifie les signatures à l'aide de dscverify et extrait le package source, laissant tout prêt à l'emploi.

  Windows 10 : Comment utiliser une manette PlayStation 3

Modifier les règles de compilation et les dépendances

Quand ce dont vous avez besoin modifier les options de constructionVous devrez principalement modifier le fichier debian/rulesqui contrôle les phases de construction du paquet. Dans les cas les plus simples, vous verrez des appels clairs à ./configure ..., make ..., cmake ... ou similaire, et il vous suffira d'ajuster les options en fonction de vos besoins.

Dans les emballages qui utilisent le style moderne basé sur debhelper (avec la commande dhCes appels peuvent être plus discrets. Dans ce cas, vous devrez peut-être créer remplacements spécifique à dh_auto_configure o dh_auto_buildafin que vos paramètres supplémentaires soient exécutés lors de la configuration ou de la compilation.

Un autre fichier clé est debian/control (remarque, différent du) DEBIAN/control (à partir d'un fichier .deb déjà construit), qui décrit les paquets binaires qui seront générés à partir du code source et, surtout, de ses dépendances de compilation à travers le champ Dépend de la construction.

Ce champ contient généralement des versions de dépendances très spécifiques , conçues pour garantir que les outils de génération automatique utilisent toujours les versions de bibliothèque attendues. Cependant, lors d'une mise à jour manuelle, ces versions peuvent ne pas exister dans votre distribution stable.

Dans ces cas-là, vous pouvez envisager assouplir certaines dépendances trop strictesÀ condition d'être certain que le logiciel peut être compilé correctement avec des versions légèrement plus anciennes. Il est conseillé de lire des fichiers comme INSTALL ou la documentation du projet pour identifier les bibliothèques véritablement essentielles et leurs versions minimales requises.

Parfois, pour réussir un portage de code, il est nécessaire d' installer des paquets listés dans Build-Depends qui ne sont pas disponibles sur votre système. Ce processus peut devenir récursif et complexe si l'on n'y prend pas garde. Il est donc recommandé de limiter au maximum ce type de dépendances.

Compilez le paquet binaire à partir des sources

Une fois que vous avez appliqué les modifications nécessaires aux fichiers d'emballage (par exemple dans debian/rules y debian/control), le moment vient de régénérer le paquet binaire .debCela se fait principalement à l'aide de la commande dpkg-buildpackage, qui orchestre l'ensemble du processus de compilation et d'empaquetage conformément aux normes Debian.

Il est courant d'utiliser des options pour empêcher la signature automatique des fichiers de contrôle générés, telles que .dsc et l' .changesPar exemple, les options -nous y -uc Elles servent à indiquer que le package source et les modifications ne doivent pas être signés, ce qui est raisonnable si vous effectuez uniquement des tests locaux.

De nombreux développeurs préfèrent utiliser un outil de plus haut niveau, tel que reconstruire (également inclus dans) devscripts), qui appelle en interne dpkg-buildpackage Il effectue également une série de vérifications supplémentaires sur les paquets générés, vérifiant leur conformité à la politique de Debian et nettoyant les variables d'environnement susceptibles d'interférer avec la compilation.

Ce processus générera un ou plusieurs fichiers .deb prêts à être installés sur votre système, comme n'importe quel autre paquet. L'avantage de cette approche est qu'elle vous permet d'adapter des programmes complexes à vos besoins spécifiques ou d'intégrer des versions plus récentes à des distributions stables sans avoir à recourir à des dépôts externes potentiellement moins fiables.

Maîtriser à partir de la structure minimale avec DEBIAN/control Des scripts de base aux techniques les plus avancées de recompilation à partir du code source et de gestion des dépendances, vous avez tout ce dont vous avez besoin à portée de main. Créez et gérez vos propres paquets .debQue ce soit pour des scripts personnels, des collections d'arrière-plan ou des applications complètes, avec un niveau d'intégration système identique à celui de n'importe quel package officiel.

apt 3.0 debian-0
Article connexe:
APT 3.0 révolutionne la gestion des paquets dans Debian avec des améliorations visuelles et techniques