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 21/08/2010, 14:40]
89.170.96.227
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 4: Ligne 4:
  
 ====== Comment créer des paquets ? ====== ====== Comment créer des paquets ? ======
-===== Présentation ===== 
  
-Dans une version récente d'un système [[:​GNU]]/​[[:​Linux]] comme peut l'​être Ubuntul'​installation de logiciels est devenue extrêmement facile grâce aux outils ​[[:apt-get]] (en ligne de commande) ou [[:​Synaptic]] (Gnome) ou [[:Adept]] et [[:​Kpackagekit]] (KDE) ou [[:​Aptitude]]. Ces outils donnent accès à des dépôts contenant pas loin de 28000 paquets. Pourtant, la richesse de l'univers des logiciels libres fait que, malgré ce nombre important, il existe encore des applications qui ne sont pas packagé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>​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>​
  
 +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>​
  
-==== Pré-requis ====+===== Pré-requis ​=====
  
 Pour pouvoir suivre cette documentation un certain nombre de pré-requis sont nécessaires : Pour pouvoir suivre cette documentation un certain nombre de pré-requis sont nécessaires :
  
   * 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]] **debhelper cdbs lintian build-essential fakeroot devscripts pbuilder dh-make debootstrap** ([[apt://debhelper,cdbs,lintian,build-essential,fakeroot,devscripts,pbuilder,dh-make,debootstrap|en 1 clic]]).+  * [[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 21: Ligne 22:
 ==== Paquet binaire et paquet source ==== ==== Paquet binaire et paquet source ====
  
-Commençons par une petite précision technique. Les paquets binaires sont les paquets ​(.deb) qui contiennent ​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. 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.+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. ​ 
 +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.
  
 ==== Étude d'un exemple de paquet source ==== ==== Étude d'un exemple de paquet source ====
Ligne 45: 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.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écompressionde 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 65: 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 213: Ligne 218:
  
 La difficulté principale de cette étape est d'​indiquer correctement les Build-Depends. Elles peuvent être déterminées en fouillant les sources ou en compilant à la main l'​application (grâce aux messages d'​erreurs du ./configure notamment). Elles sont quelquefois indiquées sur le site du projet. La difficulté principale de cette étape est d'​indiquer correctement les Build-Depends. Elles peuvent être déterminées en fouillant les sources ou en compilant à la main l'​application (grâce aux messages d'​erreurs du ./configure notamment). Elles sont quelquefois indiquées sur le site du projet.
-Attention lors des tests sur votre machine. Il se peut qu'une dépendance nécessaire soit déjà installée et que la compilation fonctionne (à priori) parfaitement. Cependant tous les paquets ubuntu sont compilés dans un environnement vierge. Si la ligne "​Build-Depends:"​ n'est pas exacte, la compilation risque alors d'​échouer (pbuilder ​ est un outil indispensable pour tester les Build Depends, nous en reparlerons plus tard). +Attention lors des tests sur votre machine. Il se peut qu'une dépendance nécessaire soit déjà installée et que la compilation fonctionne (à priori) parfaitement. Cependant tous les paquets ubuntu sont compilés dans un environnement vierge. Si la ligne "​Build-Depends:"​ n'est pas exacte, la compilation risque alors d'​échouer (pbuilder ​ est un outil indispensable pour tester les Build Depends, nous en reparlerons plus tard). ​Vous pouvez obtenir la liste des dépendances de epdview en exécutant cette commande: <code bash> 
 +apt-cache show epdfview 
 +</​code>​
 == Le paquet « debhelper » == == Le paquet « debhelper » ==
  
Ligne 235: 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 254: Ligne 262:
 (vous aurez remarqué que dh_installman fait partie des outils du paquet debhelper). (vous aurez remarqué que dh_installman fait partie des outils du paquet debhelper).
  
-Pour avoir des informations sur tous les outils dh_* que vous voyez listés dans ce fichier n'​hésitez pas à consulter les pages man. Une bonne partie ​d'entre elles seront francisées (n'​oubliez pas d'​installer ​le paquet manpages-fr pour pouvoir les lire).+Pour avoir des informations sur tous les outils dh_* que vous voyez listés dans ce fichier n'​hésitez pas à consulter les pages man. Elles ont toutes été traduites en français (et en espagnol). Ces traductions font partie ​intégrante de debhelper et s'installent donc automatiquement. Si votre "​locale"​ est «*.fr» alors « man dh_* » affiche directement la version française, sinon il faut le spécifier avec « man -fr dh_* ».
  
 Une fois arrivé ici notre paquet source est prêt, il ne nous reste plus qu'à le créer vraiment pour pouvoir retrouver les trois fichiers que nous avons vus plus tôt, dans notre premier exemple. Une fois arrivé ici notre paquet source est prêt, il ne nous reste plus qu'à le créer vraiment pour pouvoir retrouver les trois fichiers que nous avons vus plus tôt, dans notre premier exemple.
Ligne 345: Ligne 353:
  
 <​code>​ <​code>​
-sudo echo "​COMPONENTS=\"​main restricted universe multiverse\"" ​>> ​/​etc/​pbuilderrc+echo "​COMPONENTS=\"​main restricted universe multiverse\"" ​| sudo tee -a /​etc/​pbuilderrc
 sudo pbuilder update sudo pbuilder update
 </​code>​ </​code>​
  
-Pour initialiser ​pbuider, tapez dans votre terminal : +Pour initialiser ​pbuilder, tapez dans votre terminal : 
  
 <​code>​ <​code>​
Ligne 363: Ligne 371:
 (feisty peut être remplacé par le nom de code d'une autre version d'​Ubuntu).</​note>​ (feisty peut être remplacé par le nom de code d'une autre version d'​Ubuntu).</​note>​
  
-Ces commandes peuvent être lancées en début de travail dans un autre terminal, car cette étape peut prendre un certain temps. N'​étant utilisé qu'la fin vous pouvez très bien commencer à préparer vos paquets sources pendant ce temps.+Ces commandes peuvent être lancées en début de travail dans un autre terminal, car cette étape peut prendre un certain temps. N'​étant utilisé qu'à la fin vous pouvez très bien commencer à préparer vos paquets sources pendant ce temps.
  
  
 ===Création du paquet binaire=== ===Création du paquet binaire===
  
-Une fois l'​étape précédente terminée il ne vous reste plus qu'taper la commande suivante pour compiler votre paquet source (dans « ~/​packaging/​epdfview ») :+Une fois l'​étape précédente terminée il ne vous reste plus qu'à taper la commande suivante pour compiler votre paquet source (dans « ~/​packaging/​epdfview ») :
  
 <code bash> <code bash>
Ligne 374: Ligne 382:
 </​code>​ </​code>​
  
-Et à laisser mariner… en cas d'​erreur de dépendance (eh oui cela peut encore arriver pendant la compilation) reprendre à l'​étape **Création du paquet binaire** en ajoutant le paquet manquant avant lancer le //build//, il est possible d'​ajouter plusieurs ​paquet ​en les séparants ​avec une espace :+Et à laisser mariner… en cas d'​erreur de dépendance (eh oui cela peut encore arriver pendant la compilation) reprendre à l'​étape **Création du paquet binaire** en ajoutant le paquet manquant avant lancer le //build//, il est possible d'​ajouter plusieurs ​paquets ​en les séparant ​avec un espace :
  
 <code bash> <code bash>
Ligne 442: Ligne 450:
 Renommez enfin votre archive pour avoir un .orig.tar.gz correct. Renommez enfin votre archive pour avoir un .orig.tar.gz correct.
  
-=== De nombreuses ​application ​sous Ubuntu sont disponibles via plusieurs paquets ​notament ​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 ? ===
  
  
 Cela nécessite deux étapes : Cela nécessite deux étapes :
- +
   * Décrire les deux paquets binaires résultants dans debian/​control (en plus de la description du paquet source)   * Décrire les deux paquets binaires résultants dans debian/​control (en plus de la description du paquet source)
   * en installant les fichiers voulus dans les dossiers debian/app et debian/​app-common   * en installant les fichiers voulus dans les dossiers debian/app et debian/​app-common
Ligne 460: 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.1282394402.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)