Dans ce guide étape par étape, voyons comment créer des packages Debian à partir de la source sur Debian, Ubuntu et d'autres systèmes basés sur APT comme Linux Mint.
Les systèmes Debian et basés sur Debian comme Ubuntu utilisent Advanced Package Tool , ou APT en bref, pour installer, mettre à jour, mettre à niveau et supprimer des logiciels à partir de la ligne de commande.
Habituellement, le gestionnaire de packages APT stocke la liste des référentiels dans le fichier nommé /etc/apt/sources.list
et dans n'importe quel fichier avec le suffixe .list
sous le répertoire /etc/apt/sources.list.d/
.
Lorsque nous installons un paquet, apt
La commande récupère la version binaire ou pré-compilée du package donné à partir de ces référentiels.
En plus d'installer des packages binaires, APT peut également vous permettre de télécharger le code source d'un package. Ainsi, vous pouvez ensuite ajouter des fonctionnalités dans la source, créer le package à partir du code source et enfin installer la version modifiée du package.
Pourquoi devrions-nous créer un package à partir des sources ?
Il peut y avoir de nombreuses raisons de construire un paquet à partir des sources. Voici quelques raisons auxquelles je pourrais penser maintenant :
- Inspectez le code source pour trouver un bogue.
- Ajouter de nouvelles fonctionnalités dans les packages qui ne sont plus activement développés.
- Installez la version la plus récente d'un package à partir de la source. En règle générale, les packages des dépôts officiels peuvent être un peu anciens.
- Et plus important :apprenez à créer des packages Debian à partir des sources.
Installer les outils de compilation nécessaires
Afin de construire un paquet binaire à partir des sources, nous devons d'abord installer les outils de construction nécessaires. Selon l'outil de ligne de commande utilisé pour créer le package binaire, vous devrez peut-être installer l'un des packages suivants :
- dpkg-dev
- devscripts
Ces packages fournissent de nombreux outils pour créer des packages binaires à partir du code source.
Pour installer "dpkg-dev"
, exécutez :
$ sudo apt install dpkg-dev
La commande pour installer "devscripts"
le paquet est :
$ sudo apt install devscripts
Activer les référentiels sources
Assurez-vous d'avoir activé les référentiels source.
Pour ce faire, ouvrez /etc/apt/sources.list
fichier :
$ sudo vim /etc/apt/sources.list
Vous y verrez quelques lignes comme ci-dessous :
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted # deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
Dans le fichier ci-dessus, toutes les lignes commençant par un ou deux dièses (#) ne sont que des commentaires, à titre indicatif uniquement. Et les lignes sans hachage sont les dépôts apt .
Dans le référentiel apt, les lignes commençant par "deb" sont relatives aux packages binaires, qui peuvent être installés à l'aide du gestionnaire de packages apt par les utilisateurs. Et les lignes commençant par "deb-src" sont relatives aux paquets sources. Ceci est utile pour les développeurs. Par défaut, le "deb-src" est commenté dans la liste des sources.
Pour télécharger les packages source, vous devez décommenter la ligne "deb-src". Supprimez le # symbole pour décommenter une ligne. Après avoir décommenté, les lignes du référentiel devraient ressembler à celles ci-dessous :
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://in.archive.ubuntu.com/ubuntu focal main restricted deb-src http://in.archive.ubuntu.com/ubuntu focal main restricted [...]
Enregistrez et fermez le fichier. Mettez à jour la liste des référentiels à l'aide de la commande :
$ sudo apt update
Télécharger les packages sources
Téléchargez la source d'un paquet en utilisant "apt source <package-name>"
commande. Par exemple, la commande suivante téléchargera le code source du "Hello World!"
programme :
$ apt source hello
Exemple de résultat :
Reading package lists... Done Need to get 734 kB of source archives. Get:1 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (dsc) [1847 B] Get:2 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (tar) [726 kB] Get:3 http://in.archive.ubuntu.com/ubuntu focal/main hello 2.10-2ubuntu2 (diff) [6560 B] Fetched 734 kB in 2s (336 kB/s) dpkg-source: info: extracting hello in hello-2.10 dpkg-source: info: unpacking hello_2.10.orig.tar.gz dpkg-source: info: unpacking hello_2.10-2ubuntu2.debian.tar.xz
Comme vous pouvez le voir, j'ai téléchargé le code source du programme Hello World.
$ ls hello-2.10 hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2.dsc hello_2.10.orig.tar.gz
Afficher le contenu réel du code source :
$ ls hello-2.10/ ABOUT-NLS ChangeLog INSTALL NEWS README-release aclocal.m4 configure debian lib man tests AUTHORS ChangeLog.O Makefile.am README THANKS build-aux configure.ac doc m4 po COPYING GNUmakefile Makefile.in README-dev TODO config.in contrib hello.1 maint.mk src
Installer les dépendances de construction pour le package
Ensuite, nous devons également installer les dépendances pour ce paquet. Pour ce faire, exécutez :
$ sudo apt build-dep hello
Nous avons maintenant téléchargé le code source du package et installé les dépendances nécessaires à la construction de ce package. Effectuez ensuite les modifications dans le code source.
Modifier le code source d'un paquet debian
Cd dans le répertoire contenant la source du package. Dans notre cas, il s'agit de hello-2.10 .
$ cd hello-2.10
Modifiez le code selon vos souhaits. Le code est dans le fichier "hello.c"
sous "src"
répertoire.
$ vi src/hello.c
Ajustez le code et/ou apportez des modifications. Une fois la modification du code terminée, enregistrez et fermez le fichier.
Il est maintenant temps de créer le package .deb proprement dit.
Créer des packages Debian à partir des sources
Nous avons téléchargé le code source et modifié le code. Construisons le paquet à partir de la source. Nous pouvons le faire de trois manières :
- Utiliser
"dpkg-buildpackage"
commande - Utiliser
"debuild"
commande - Téléchargez le code source et créez-le directement
Méthode 1 - Utilisation de dpkg-buildpackage :
Assurez-vous d'avoir installé "dpkg-dev"
paquet.
Puis exécutez la commande suivante pour compiler le package à partir des sources :
$ dpkg-buildpackage -rfakeroot -b -uc -us
Ici,
dpkg-buildpackage
- Commande permettant de créer des packages binaires ou sources à partir de sources.-rfakeroot
- Créez un environnement fakeroot pour simuler les privilèges root (pour éviter les problèmes de propriété et d'autorisation).-b
- Construisez uniquement le paquet binaire.-uc
- Ne signez pas cryptographiquement le changelog. c'est-à-dire Ne signez pas le.buildinfo
et.changes
fichiers-us
- Ne signez pas le paquet source.
Assurez-vous d'exécuter la commande ci-dessus dans le répertoire principal de l'arborescence des sources. Sinon, cela ne fonctionnera pas.
Si la compilation réussit, vous verrez un message comme ci-dessous :
[...] dpkg-deb: building package 'hello' in '../hello_2.10-2ubuntu2_amd64.deb'. dpkg-deb: building package 'hello-dbgsym' in 'debian/.debhelper/scratch-space/build-hello/hello-dbgsym_2.10-2ubuntu2_amd64.deb'. Renaming hello-dbgsym_2.10-2ubuntu2_amd64.deb to hello-dbgsym_2.10-2ubuntu2_amd64.ddeb dpkg-genbuildinfo --build=binary dpkg-genchanges --build=binary >../hello_2.10-2ubuntu2_amd64.changes dpkg-genchanges: info: binary-only upload (no source code included) dpkg-source --after-build . dpkg-buildpackage: info: binary-only upload (no source included)
Toutes nos félicitations! Nous avons construit avec succès un package .deb à partir de la source. Maintenant, revenez au répertoire parent et vous verrez le fichier .deb nouvellement construit :
$ cd ..
$ ls
Exemple de résultat :
hello-2.10 hello_2.10-2ubuntu2.dsc hello_2.10-2ubuntu2_amd64.deb hello-dbgsym_2.10-2ubuntu2_amd64.ddeb hello_2.10-2ubuntu2_amd64.buildinfo hello_2.10.orig.tar.gz hello_2.10-2ubuntu2.debian.tar.xz hello_2.10-2ubuntu2_amd64.changes
Méthode 2 - Utilisation de la déconstruction
Assurez-vous d'avoir installé les "devscripts"
paquet.
Ensuite, construisez le paquet binaire en exécutant la commande suivante à partir de l'arborescence des sources :
$ debuild -b -uc -us
Une fois la construction réussie, le résultat .deb
package sera enregistré dans le répertoire parent.
Méthode 3 – Télécharger et créer directement
C'est la méthode la plus simple et la plus simple que les deux méthodes ci-dessus. Dans cette méthode, nous téléchargeons le code source du package et passons le "--compile"
option pour construire le binaire en une seule ligne de commande ci-dessous :
$ sudo apt-get source --compile hello
La commande ci-dessus téléchargera le code source de "hello"
programmez et construisez le .deb
package et enregistrez-le dans le répertoire courant.
Installez le fichier .deb
Allez à l'emplacement où le .deb
le fichier est enregistré et installez-le comme ci-dessous :
$ sudo dpkg -i hello_2.10-2ubuntu2_amd64.deb
Si vous voyez un message d'erreur de dépendances manquantes, exécutez :
$ sudo apt install -f
Comme vous pouvez le voir, créer un paquet debian à partir des sources sous Linux est très simple !
Lire connexe :
- Comment créer des packages à partir de la source à l'aide de CheckInstall
- Comment créer facilement des packages Linux pour plusieurs plates-formes
- Recréer les paquets binaires Debian déjà installés sur un système
- Comment convertir des packages Linux avec Alien
- Comment convertir des packages DEB en packages Arch Linux
J'espère que cela vous aidera.