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
tutoriel:creer_un_paquet [Le 24/04/2017, 20:13]
78.217.56.69 archives désormais au format lzma (xz)
tutoriel:creer_un_paquet [Le 09/10/2021, 16:45] (Version actuelle)
88.166.188.193 [Création du paquet source] Makefile à la racine du projet
Ligne 7: Ligne 7:
 <​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>​ <​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 [[:Apper]] (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]] 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.
 <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 est décrit la procédure détaillée pour une validation sur des dépôts officiels que ne permet pas checkinstall.</​note>​
  
Ligne 45: Ligne 45:
   * un répertoire xfce4-xkb-plugin-0.4.1   * un répertoire xfce4-xkb-plugin-0.4.1
   * et les fichiers suivants :   * et les fichiers suivants :
-    * xfce4-xkb-plugin_0.4.1.orig.tar.xz+    * xfce4-xkb-plugin_0.4.1.orig.tar.gz
     * xfce4-xkb-plugin_0.4.1-0ubuntu5.dsc     * xfce4-xkb-plugin_0.4.1-0ubuntu5.dsc
     * xfce4-xkb-plugin_0.4.1-0ubuntu5.diff.gz     * xfce4-xkb-plugin_0.4.1-0ubuntu5.diff.gz
Ligne 51: Ligne 51:
 <​note>​Vous obtiendrez exactement ces fichiers si vous êtes sous Dapper, peut-être une autre version sous d'​autres versions d'​Ubuntu.</​note>​ <​note>​Vous obtiendrez exactement ces fichiers si vous êtes sous Dapper, peut-être une autre version sous d'​autres versions d'​Ubuntu.</​note>​
  
-Le fichier **xfce4-xkb-plugin_0.4.1.orig.tar.xz** est en fait l'​archive contenant les fichiers sources tels que l'on peut les obtenir sur le site du projet (typiquement ceux que l'on installe avec « ''​./​configure && make && make install''​ »). Le répertoire est d'​ailleurs issu de la décompression de cette archive. Seul le nom du fichier a été changé pour des raisons que nous préciserons plus tard.+Le fichier **xfce4-xkb-plugin_0.4.1.orig.tar.gz** est en fait l'​archive contenant les fichiers sources tels que l'on peut les obtenir sur le site du projet (typiquement ceux que l'on installe avec « ''​./​configure && make && make install''​ »). Le répertoire est d'​ailleurs issu de la décompression de cette archive. Seul le nom du fichier a été changé pour des raisons que nous préciserons plus tard.
  
 Le fichier **xfce4-xkb-plugin_0.4.1-0ubuntu5.dsc** contient la description du paquet source (et des deux autres fichiers, avec leur taille et leur somme MD5). Le fichier **xfce4-xkb-plugin_0.4.1-0ubuntu5.dsc** contient la description du paquet source (et des deux autres fichiers, avec leur taille et leur somme MD5).
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.xz+  wget http://​gauvain.pocentek.net/​u-classroom/​2006-08-31/​epdfview-0.1.5.tar.gz
  
 On utilise ici le site de Gloubiboulga en lieu et place du site officiel, car ce dernier est particulièrement lent. On utilise ici le site de Gloubiboulga en lieu et place du site officiel, car ce dernier est particulièrement lent.
-Une fois les sources récupérées,​ la **première** chose à faire est de renommer le tarball, afin de pouvoir créer un paquet source correct par la suite. Attention le format de ce nom est important. Une erreur ici n'est pas particulièrement désastreuse,​ mais met en péril la qualité du paquet source. La syntaxe est //​paquet_version.orig.tar.xz// (notez le « _ » à la place du « - » d'​origine).+Une fois les sources récupérées,​ la **première** chose à faire est de renommer le tarball, afin de pouvoir créer un paquet source correct par la suite. Attention le format de ce nom est important. Une erreur ici n'est pas particulièrement désastreuse,​ mais met en péril la qualité du paquet source. La syntaxe est //​paquet_version.orig.tar.gz// (notez le « _ » à la place du « - » d'​origine).
 Il faut donc exécuter dans le terminal : Il faut donc exécuter dans le terminal :
  
-  mv epdfview-0.1.5.tar.gz epdfview_0.1.5.orig.tar.xz+  mv epdfview-0.1.5.tar.gz epdfview_0.1.5.orig.tar.gz
  
 Notez le nom similaire au fichier correspondant que nous avons trouvé dans le chapitre précédent. Notez le nom similaire au fichier correspondant que nous avons trouvé dans le chapitre précédent.
Ligne 86: Ligne 85:
 Puis on décompresse cette archive et on entre dans le répertoire contenant les sources : Puis on décompresse cette archive et on entre dans le répertoire contenant les sources :
  
-  tar zxvf epdfview_0.1.5.orig.tar.xz+  tar zxvf epdfview_0.1.5.orig.tar.gz
   cd epdfview-0.1.5   cd epdfview-0.1.5
  
 Une règle d'or dans la création de paquets est de **ne pas toucher au tarball d'​origine**. La seule chose autorisée est de le renommer (c'est même nécessaire). Ne pas modifier le tarball permet de bien distinguer le travail de l'​auteur de celui du packageur (empaqueteur). Une règle d'or dans la création de paquets est de **ne pas toucher au tarball d'​origine**. La seule chose autorisée est de le renommer (c'est même nécessaire). Ne pas modifier le tarball permet de bien distinguer le travail de l'​auteur de celui du packageur (empaqueteur).
-Maintenant que les sources sont là, ainsi que le « .orig.tar.xz », on va pouvoir créer le paquet. Pour cela il faut créer le dossier « debian/​ » dans le dossier des sources (je vous rappelle que c'est ce dossier « debian » qui va donner les différents fichiers contenus dans notre paquet source (cf. [[#​etude_du_contenu_d_un_paquet_debian_source|chap1]])).+Maintenant que les sources sont là, ainsi que le « .orig.tar.gz », on va pouvoir créer le paquet. Pour cela il faut créer le dossier « debian/​ » dans le dossier des sources (je vous rappelle que c'est ce dossier « debian » qui va donner les différents fichiers contenus dans notre paquet source (cf. [[#​etude_du_contenu_d_un_paquet_debian_source|chap1]])).
 Pour créer un squelette de dossier « debian/​ »,​ utilisez dh_make installé disponible dans le paquet dh-make (cf. [[#​pré-requis]]). Pour créer un squelette de dossier « debian/​ »,​ utilisez dh_make installé disponible dans le paquet dh-make (cf. [[#​pré-requis]]).
  
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 280: Ligne 281:
 </​code>​ </​code>​
  
-Le '​-S'​ permet de construire un paquet source, le '​--lintian-opts -i' donne une information sur les messages d'​erreur de lintian, le '​-sa'​ permet d'​inclure le .orig.tar.xz dans l'​upload vers une archive (à retenir lorsque vous uploaderez votre premier paquet sur [[http://​revu.tauware.de| REVU]], le système de QA d'​Ubuntu,​ permettant aux contributeurs de faire rentrer des paquets et surtout, comme son nom l'​indique,​ de les faire vérifier par des MOTUs).+Le '​-S'​ permet de construire un paquet source, le '​--lintian-opts -i' donne une information sur les messages d'​erreur de lintian, le '​-sa'​ permet d'​inclure le .orig.tar.gz dans l'​upload vers une archive (à retenir lorsque vous uploaderez votre premier paquet sur [[http://​revu.tauware.de| REVU]], le système de QA d'​Ubuntu,​ permettant aux contributeurs de faire rentrer des paquets et surtout, comme son nom l'​indique,​ de les faire vérifier par des MOTUs).
 La commande utilise automatiquement fakeroot (commande simulant les privilèges super-utilisateur) si rien est précisé (voir le man de debuild). La commande utilise automatiquement fakeroot (commande simulant les privilèges super-utilisateur) si rien est précisé (voir le man de debuild).
  
Ligne 429: Ligne 430:
 === Après avoir exécuté `debuild -S -sa`, je n'ai pas de .diff.gz ! === === Après avoir exécuté `debuild -S -sa`, je n'ai pas de .diff.gz ! ===
  
-C'est que la syntaxe de votre .orig.tar.xz n'est pas correcte. Vérifiez bien qu'il est de la forme : nomDuPaquet**_**x.y.z.orig.tar.xz+C'est que la syntaxe de votre .orig.tar.gz n'est pas correcte. Vérifiez bien qu'il est de la forme : nomDuPaquet**_**x.y.z.orig.tar.gz
  
 Notez le '​_'​ (pas de '​-'​),​ qui est souvent source d'​erreur. Notez le '​_'​ (pas de '​-'​),​ qui est souvent source d'​erreur.
  
-Lors de l'​exécution de `debuild -S -sa`, vous pouvez vérifier qu'il a bien créé le .diff.gz et tenu compte de votre .orig.tar.xz en cherchant les lignes suivantes : +Lors de l'​exécution de `debuild -S -sa`, vous pouvez vérifier qu'il a bien créé le .diff.gz et tenu compte de votre .orig.tar.gz en cherchant les lignes suivantes : 
-  dpkg-source:​ building foo using existing foo_x.y.z.orig.tar.xz+  dpkg-source:​ building foo using existing foo_x.y.z.orig.tar.gz
   dpkg-source:​ building foo in foo_x.y.z-0ubuntu1.diff.gz   dpkg-source:​ building foo in foo_x.y.z-0ubuntu1.diff.gz
  
Ligne 447: Ligne 448:
   gzip -9 foo-x.y.z.tar   gzip -9 foo-x.y.z.tar
  
-Renommez enfin votre archive pour avoir un .orig.tar.xz correct.+Renommez enfin votre archive pour avoir un .orig.tar.gz correct.
  
 === De nombreuses applications sous Ubuntu sont disponibles via plusieurs paquets notamment app.deb et app-common.deb. Comment cela est il obtenu ? === === De nombreuses applications sous Ubuntu sont disponibles via plusieurs paquets notamment app.deb et app-common.deb. Comment cela est il obtenu ? ===
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.1493057634.txt.gz
  • Dernière modification: Le 24/04/2017, 20:13
  • par 78.217.56.69