Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
tutoriel:creer_un_paquet [Le 19/03/2018, 11:10]
L'Africain
tutoriel:creer_un_paquet [Le 23/10/2023, 11:33]
polobuntu [Prérequis]
Ligne 5: Ligne 5:
 ====== Comment créer des paquets ? ====== ====== Comment créer des paquets ? ======
  
-<​note>​Ici il est expliqué comment créer un paquet .deb depuis des sourcespour créer un .deb depuis une archive binaire voir [[tutoriel:​creation_deb|Création d'un paquet deb à partir d'une archive]]</​note>​+<​note>​Ici il est expliqué comment créer un paquet .deb depuis des sources ​pour créer un .deb depuis une archive binaire voir [[tutoriel:​creation_deb|Création d'un paquet deb à partir d'une archive]]</​note>​
  
-Dans une version récente d'un système [[:​GNU]]/​[[:​Linux]] ​comme peut l'être Ubuntu, ​l'​installation de logiciels est devenue ​extrêmement facile grâce à [[:software-center|La logithèque]] ou aux outils [[:​apt-get]] (en ligne de commande) ou [[:​Synaptic]] (Gnome) ou [[:Muon]] (KDE). Ces outils donnent accès à des [[:​dépôts]] contenant plus de 49000 paquets (([[https://​launchpad.net/​ubuntu/​vivid/​amd64|Ubuntu Vivid (15.04) dispose de 49031 paquets pour l'​architecture amd64]])). Pourtant, la richesse de l'​univers des [[wpfr>​logiciels libres]] fait que, malgré ce nombre important, il existe encore des applications qui ne sont pas empaquetées. Nous allons donc nous intéresser ici à la création de paquets Debian (les fameux fichiers « .deb », utilisés aussi dans Ubuntu) à partir des sources d'une application existante. +Dans une version récente d'un système [[:​GNU]]/​[[:​Linux]] ​telle qu'​Ubuntu, ​installer des logiciels est devenu ​extrêmement facile grâce à [[:gnome-software|La logithèque]] ou aux outils [[:​apt-get]] (en ligne de commande) ou [[:​Synaptic]] (Gnome) ou [[:Muon]] (KDE). Ces outils donnent accès à des [[:​dépôts]] contenant plus de 49000 paquets (([[https://​launchpad.net/​ubuntu/​vivid/​amd64|Ubuntu Vivid (15.04) dispose de 49031 paquets pour l'​architecture amd64]])). Pourtant, la richesse de l'​univers des [[wpfr>​logiciels libres]] fait que, malgré ce nombre important, il existe encore des applications qui ne sont pas empaquetées. Nous allons donc nous intéresser ici à la création de paquets Debian (les fameux fichiers « .deb », utilisés aussi dans Ubuntu) à partir des sources d'une application existante. 
-<note aide>Il est aussi possible de créer un paquet d'une façon très simple avec [[:​checkinstall]]. Cette est décrit la procédure détaillée pour une validation sur des dépôts officiels que ne permet pas checkinstall.</​note>​+<note aide>Il est aussi possible de créer un paquet d'une façon très simple avec [[:​checkinstall]]. Cette page décrit la procédure détaillée pour une validation sur des dépôts officiels que ne permet pas checkinstall.</​note>​
  
-===== Pré-requis ​=====+===== Prérequis ​=====
  
-Pour pouvoir suivre cette documentation un certain nombre de pré-requis sont nécessaires ​:+Pour pouvoir suivre cette documentationun certain nombre de prérequis doivent être satisfaits ​:
  
-  * Les dépôts source doivent être disponibles dans synaptic (décommentez les lignes qui commencent par deb-src dans /​etc/​apt/​sources.list) +  * Les dépôts source doivent être disponibles dans synaptic (décommentez les lignes qui commencent par deb-src dans /​etc/​apt/​sources.list). 
-  * [[tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​debhelper,​cdbs,​lintian,​build-essential,​fakeroot,​devscripts,​pbuilder,​dh-make,​debootstrap|debhelper cdbs lintian build-essential fakeroot devscripts pbuilder dh-make debootstrap]]**+  * [[tutoriel:​comment_installer_un_paquet|Installez les paquets]] **[[apt>​debhelper,​cdbs,​lintian,​build-essential,​fakeroot,​devscripts,​pbuilder,​dh-make,​debootstrap|debhelper cdbs lintian build-essential fakeroot devscripts pbuilder dh-make debootstrap]]**.
  
  
Ligne 22: Ligne 22:
 ==== Paquet binaire et paquet source ==== ==== Paquet binaire et paquet source ====
  
-Commençons par une petite précision technique : +Commençons par une petite précision technique :
  
-- Un paquet binaire est un paquet (.deb) qui contient les fichiers nécessaires à l'​application pour pouvoir fonctionner sur votre ordinateur. C'est ce que nous allons nous efforcer de créer.  +- Un paquet binaire est un paquet (.deb) qui contient les fichiers nécessaires à l'​application pour pouvoir fonctionner sur votre ordinateur. C'est ce que nous allons nous efforcer de créer. 
-Tous les paquets binaires disponibles dans les dépôts Ubuntu ont été construits à partir de paquets sources. ​+Tous les paquets binaires disponibles dans les dépôts Ubuntu ont été construits à partir de paquets sources.
  
 - Un paquet source est un ensemble de fichiers (attention le terme de paquet est utilisé par analogie. Il n'y a pas ici de fichier conteneur comme peut l'​être le .deb pour les binaires) contenant les sources originelles de l'​application,​ ainsi que les indications des modifications nécessaires à la création du paquet debian. - Un paquet source est un ensemble de fichiers (attention le terme de paquet est utilisé par analogie. Il n'y a pas ici de fichier conteneur comme peut l'​être le .deb pour les binaires) contenant les sources originelles de l'​application,​ ainsi que les indications des modifications nécessaires à la création du paquet debian.
Ligne 31: Ligne 31:
 ==== Étude d'un exemple de paquet source ==== ==== Étude d'un exemple de paquet source ====
  
-Pour illustrer cela, nous allons examiner le contenu d'un paquet source. Pour cela il faut le télécharger d'un des dépôts source configuré pour apt. +Pour illustrer cela, nous allons examiner le contenu d'un paquet source. Pour cela il faut le télécharger d'un des dépôts source configuré pour apt.
  
 Commençons par créer le dossier dans lequel nous allons travailler. Commençons par créer le dossier dans lequel nous allons travailler.
Ligne 71: Ligne 71:
 <note warning>​Faites attention à bien être dans **~/​packaging** : ''​rm -rf''​ efface tout sans confirmation !</​note>​ <note warning>​Faites attention à bien être dans **~/​packaging** : ''​rm -rf''​ efface tout sans confirmation !</​note>​
  
-  cd ~/packaging +  cd ~/​packaging ​&& ​rm -rf * # on nettoie :-)
-  ​rm -rf * # on nettoie :-)+
   mkdir epdfview && cd epdfview   mkdir epdfview && cd epdfview
   wget http://​gauvain.pocentek.net/​u-classroom/​2006-08-31/​epdfview-0.1.5.tar.gz   wget http://​gauvain.pocentek.net/​u-classroom/​2006-08-31/​epdfview-0.1.5.tar.gz
Ligne 175: Ligne 174:
 === Le fichier « copyright » === === Le fichier « copyright » ===
  
-Le squelette de ce fichier est plutôt clair, pas vraiment besoin de s'​étendre dessus. Mais le contenu n'est pas toujours évident à déterminer. Il y a un fichier « COPYING » dans le répertoire source, qui contient dans notre exemple la GPL en entier. ​+Le squelette de ce fichier est plutôt clair, pas vraiment besoin de s'​étendre dessus. Mais le contenu n'est pas toujours évident à déterminer. Il y a un fichier « COPYING » dans le répertoire source, qui contient dans notre exemple la GPL en entier.
 Notez que ce n'est pas ce fichier qui sert de référence pour définir la licence, mais les fichiers source (qui contiennent le code, souvent présents dans un dossier « src/​ »). Notez que ce n'est pas ce fichier qui sert de référence pour définir la licence, mais les fichiers source (qui contiennent le code, souvent présents dans un dossier « src/​ »).
  
Ligne 199: Ligne 198:
 Jetons d'​abord un coup d'oeil aux champs concernant le paquet source : Jetons d'​abord un coup d'oeil aux champs concernant le paquet source :
   * Source: le nom du logiciel que vous packagez   * Source: le nom du logiciel que vous packagez
-  * Section: la catégorie dans laquelle pourra se trouver le paquet source (voir [[http://​www.debian.org/​doc/​debian-policy/​ch-archive.html#​s-subsections]] pour la liste des sections)+  * Section: la catégorie dans laquelle pourra se trouver le paquet source (voir [[https://​www.debian.org/​doc/​debian-policy/​ch-archive.html#​s-subsections]] pour la liste des sections)
   * Priority: l'​importance du paquet. Le kernel a en général une importance plus grande qu'un applet pour le panel KDE ;)   * Priority: l'​importance du paquet. Le kernel a en général une importance plus grande qu'un applet pour le panel KDE ;)
   * Maintainer: Le mainteneur du paquet, en l'​occurrence : vous <​adresse@foo.bar>​   * Maintainer: Le mainteneur du paquet, en l'​occurrence : vous <​adresse@foo.bar>​
   * Build-Depends:​ la liste des paquets nécessaires à la compilation des sources (/!\, les paquets nécessaires à la compilation sont en général différents de ceux nécessaires à l'​exécution du programme compilé)   * Build-Depends:​ la liste des paquets nécessaires à la compilation des sources (/!\, les paquets nécessaires à la compilation sont en général différents de ceux nécessaires à l'​exécution du programme compilé)
  
-  * Standards-Version:​ la version de la "​debian policy"​ actuelle, à laquelle vous devez vous référer ([[http://​www.debian.org/​doc/​debian-policy/​]])+  * Standards-Version:​ la version de la "​debian policy"​ actuelle, à laquelle vous devez vous référer ([[https://​www.debian.org/​doc/​debian-policy/​]])
  
 La debian policy peut faire peur... mais c'est la référence pour l'​empaquetage debian/​ubuntu. La debian policy peut faire peur... mais c'est la référence pour l'​empaquetage debian/​ubuntu.
  
-Jetons ensuite un coup d'oeil aux champs concernant le paquet binaire : +Jetons ensuite un coup d'oeil aux champs concernant le paquet binaire :
   * Package: le nom du paquet binaire (qui peut différer du nom du paquet source)   * Package: le nom du paquet binaire (qui peut différer du nom du paquet source)
   * Architecture:​ l'​architecture pour laquelle sera valable le paquet binaire. Ça peut être une architecture unique (i386, powerpc...),​ une liste ou "​all"​ (un seul et même paquet binaire sera utilisable sur toutes les architectures,​ comme dans le cas d'une application python ou d'un script bash), ou encore "​any"​ (dans ce cas le paquet source doit être compilé sur chacune des architectures disponibles)   * Architecture:​ l'​architecture pour laquelle sera valable le paquet binaire. Ça peut être une architecture unique (i386, powerpc...),​ une liste ou "​all"​ (un seul et même paquet binaire sera utilisable sur toutes les architectures,​ comme dans le cas d'une application python ou d'un script bash), ou encore "​any"​ (dans ce cas le paquet source doit être compilé sur chacune des architectures disponibles)
Ligne 230: Ligne 229:
 === Le fichier « compat » === === Le fichier « compat » ===
  
-Ce fichier sert à indiquer la compatibilité debhelper. ​+Ce fichier sert à indiquer la compatibilité debhelper.
  
 === Le fichier « rules » === === Le fichier « rules » ===
Ligne 242: Ligne 241:
   * build: correspond au `make` ($(MAKE))   * build: correspond au `make` ($(MAKE))
   * install: correspond au `make install`   * install: correspond au `make install`
 +
 +<note important>//​ATTENTION//​ : si l'on met un fichier Makefile à la racine de son projet, rules lancera la première cible ce qui est potentiellement catastrophique (si la 1ère cible est "​debuild",​ il tournera en boucle par exemple)</​note>​
  
 Ici l'​installation se fait dans "​$(CURDIR)/​debian/​epdfview",​ donc dans le dossier « debian/​ » créé tout à l'​heure. Ici l'​installation se fait dans "​$(CURDIR)/​debian/​epdfview",​ donc dans le dossier « debian/​ » créé tout à l'​heure.
Ligne 356: Ligne 357:
 </​code>​ </​code>​
  
-Pour initialiser pbuilder, tapez dans votre terminal : +Pour initialiser pbuilder, tapez dans votre terminal :
  
 <​code>​ <​code>​
Ligne 364: Ligne 365:
 La première ligne permet d'​activer l'​utilisation des dépôts universe et multiverse sous dapper (désactivés par défaut). La seconde crée le chroot et le compresse. La première ligne permet d'​activer l'​utilisation des dépôts universe et multiverse sous dapper (désactivés par défaut). La seconde crée le chroot et le compresse.
  
-<note idée>​Pour faire un chroot d'une autre version d'​ubuntu que celle que vous utilisez actuellement (pour créer un paquet compatible),​ vous pouvez ajouter à la fin de la deuxième commande ''​--distribution feisty'': ​+<note idée>​Pour faire un chroot d'une autre version d'​ubuntu que celle que vous utilisez actuellement (pour créer un paquet compatible),​ vous pouvez ajouter à la fin de la deuxième commande ''​​%%--%%distribution feisty'': ​
  
   sudo pbuilder create --distribution feisty ​   sudo pbuilder create --distribution feisty ​
Ligne 390: Ligne 391:
 Une fois cette étape terminée, votre .deb est dans **/​var/​cache/​pbuilder/​result** Une fois cette étape terminée, votre .deb est dans **/​var/​cache/​pbuilder/​result**
  
-En dernière étape, nous allons vérifier quelques points : +En dernière étape, nous allons vérifier quelques points :
   * d'​abord les dépendances<​code bash>   * d'​abord les dépendances<​code bash>
 dpkg -f /​var/​cache/​pbuilder/​result/​epdfview*deb dpkg -f /​var/​cache/​pbuilder/​result/​epdfview*deb
Ligne 402: Ligne 403:
  
 Cet avertissement de lintian : Cet avertissement de lintian :
-> W: epdfview: old-fsf-address-in-copyright-file ​+> W: epdfview: old-fsf-address-in-copyright-file
 n'est pas un bloqueur. n'est pas un bloqueur.
  
Ligne 467: Ligne 468:
 FIXME FIXME
 <note tip>Une des solutions pour tester est d'​utiliser un système virtualisé (à l'aide de [[::​virtualbox|VirtualBox]] par exemple). En utilisant correctement les //​snapshots//,​ on peut facilement faire un rollback du système virtualisé avant l'​installation du paquet.</​note>​ <note tip>Une des solutions pour tester est d'​utiliser un système virtualisé (à l'aide de [[::​virtualbox|VirtualBox]] par exemple). En utilisant correctement les //​snapshots//,​ on peut facilement faire un rollback du système virtualisé avant l'​installation du paquet.</​note>​
 +
 +<note tip>Une autre solution est d'​utiliser Docker.</​note>​
  
 ---- ----
  • tutoriel/creer_un_paquet.txt
  • Dernière modification: Le 23/10/2023, 12:12
  • par polobuntu