GNU/Linux >> Tutoriels Linux >  >> Debian

Comment construire des paquets Debian à partir de la source

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 :

  1. dpkg-dev
  2. 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 :

  1. Utiliser "dpkg-buildpackage" commande
  2. Utiliser "debuild" commande
  3. 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.


Debian
  1. Comment extraire des fichiers de l'archive de paquets Debian DEB

  2. Comment compiler l'outil de compression Brotli à partir de la source sur Debian 9

  3. Comment passer de Debian 10 à Debian 11

  4. Comment créer des packages à partir de la source à l'aide de CheckInstall

  5. Debian - Comment connaître le référentiel source d'un paquet dans Debian ?

Comment créer un paquet Ubuntu à partir de la source

Comment ajouter un référentiel à Debian

Comment mettre à jour Debian 10 vers Debian 11

Comment ajouter un référentiel à Debian

Comment installer un programme à partir de la source sous Linux

Comment supprimer des packages d'Ubuntu et de Debian