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 15/04/2018, 11:39]
moths-art [Foire aux questions]
tutoriel:creer_un_paquet [Le 23/10/2023, 12:12] (Version actuelle)
polobuntu [Création du paquet source]
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 63: Ligne 63:
 ==== Création du paquet source ==== ==== Création du paquet source ====
  
-Pour notre exemple nous allons construire le paquet de l'​application [[:​ePDFView]],​ petite application de consultation de documents PDF.+Pour notre exemplenous allons construire le paquet de l'​application [[:​ePDFView]], ​une petite application de consultation de documents PDF.
  
-Après avoir supprimé le contenu de notre dossier « ~/​packaging » pour repartir d'une situation propre, on télécharge les sources ​du dit logiciel.+Après avoir supprimé le contenu de notre dossier « ~/​packaging » pour repartir d'une situation propre, on télécharge les sources ​dudit logiciel.
  
 Donc dans **~/​packaging** : Donc dans **~/​packaging** :
  
-<note warning>Faites attention ​à bien être dans **~/​packaging** : ''​rm -rf''​ efface tout sans confirmation !</​note>​+<note warning>Veillez ​à bien être dans le répertoire ​**~/​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
  
 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 tarballafin 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).+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 ​du nouveau ​ nom 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.gz   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 la section précédente.
  
-Puis on décompresse cette archive et on entre dans le répertoire contenant les sources :+Ensuite, ​on décompresse cette archive et on entre dans le répertoire contenant les sources :
  
   tar zxvf epdfview_0.1.5.orig.tar.gz   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 ​lors de 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.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]])). +Maintenant que les sources sont là, ainsi que le fichier ​« .orig.tar.gz »,​ on va pouvoir créer le paquet. Pour celail faut créer le dossier « debian/​ » dans le dossier des sources (rappelons ​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|section1]])). 
-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 ​qui est disponible dans le paquet dh-make (cf. [[#​pré-requis]]).
  
 La commande : La commande :
Ligne 106: Ligne 105:
 </​code>​ </​code>​
  
-Ceci vous permet de préciser quel type de package vous construisez. Ici, choisissez le type de paquet "​single"​ : répondez donc *s* à la question.+Ceci vous permet de préciser quel type de package vous voulez construire. Ici, choisissez le type de paquet "​single"​ : répondez donc *s* à la question.
  
 Pour les curieux, quelques commentaires sur les autres choix : Pour les curieux, quelques commentaires sur les autres choix :
-  * multiple binary permet de créer plusieurs paquets binaires à partir d'un unique paquet source +  * multiple binary permet de créer plusieurs paquets binaires à partir d'un unique paquet source ​; 
-  * library permet de créer une bibliothèque (lib quelque chose) +  * library permet de créer une bibliothèque (lib quelque chose) ​; 
-  * kernel module... un module pour le noyau +  * kernel module... un module pour le noyau ; 
-  * cdbs... on verra plus tard+  * cdbs... on verra plus tard.
  
 Attention, il faut saisir cette commande dans le dossier contenant les sources. Dans notre cas : Attention, il faut saisir cette commande dans le dossier contenant les sources. Dans notre cas :
Ligne 155: Ligne 154:
 Attention à la syntaxe, les espaces et ponctuations ne sont pas anodins. La compilation du paquet source étant très automatisée,​ les scripts doivent avoir des points de repère solides. Attention à la syntaxe, les espaces et ponctuations ne sont pas anodins. La compilation du paquet source étant très automatisée,​ les scripts doivent avoir des points de repère solides.
  
-Quelques mots sur les versions de paquets... Une même version d'un logiciel peut être empaquetée plusieurs fois. De même, Ubuntu étant basée sur Debian, il peut exister plusieurs modifications faites dans Ubuntu à partir du même paquet venant de chez Debian. Les versions sont donc de la forme *<​upstream_version>​-<​debian_version>​ubuntu<​ubuntu_version>​*.+Quelques mots sur les versions de paquets… Une même version d'un logiciel peut être empaquetée plusieurs fois. De même, Ubuntu étant basée sur Debian, il peut exister plusieurs modifications faites dans Ubuntu à partir du même paquet venant de chez Debian. Les versions sont donc de la forme *<​upstream_version>​-<​debian_version>​ubuntu<​ubuntu_version>​*.
 Ce qui donne pour nous (ePDFView n'​existe pas chez Debian, donc ''​debian_version''​ = 0) : //​0.1.5-0ubuntu1//​. Ce qui donne pour nous (ePDFView n'​existe pas chez Debian, donc ''​debian_version''​ = 0) : //​0.1.5-0ubuntu1//​.
  
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 ​sources ​(qui contiennent le code, souvent présents dans un dossier « src/​ »).
  
 Regardez par exemple le fichier « DocumentRectangle.cxx » dans les sources : Regardez par exemple le fichier « DocumentRectangle.cxx » dans les sources :
Ligne 182: Ligne 181:
   less ../​src/​DocumentRectangle.cxx   less ../​src/​DocumentRectangle.cxx
  
-Les quatres ​premiers paragraphes sont ceux à recopier bêtement (et oui) dans « debian/​copyright ». Ce sont ces paragraphes qui désignent le nom et l'​année du Copyright, ainsi que la licence (pas le fichier « COPYING »).+Les quatre ​premiers paragraphes sont ceux à recopier bêtement (eh oui) dans « debian/​copyright ». Ce sont ces paragraphes qui désignent le nom et l'​année du Copyright, ainsi que la licence (pas le fichier « COPYING »).
 Attention, vérifiez bien tous les fichiers sources ! Plusieurs copyrights ou licences peuvent être utilisés ! Attention, vérifiez bien tous les fichiers sources ! Plusieurs copyrights ou licences peuvent être utilisés !
 Dans notre cas, le fichier « debian/​copyright » ressemblera à : Dans notre cas, le fichier « debian/​copyright » ressemblera à :
 [[http://​gauvain.pocentek.net/​u-classroom/​2006-08-31/​debian/​copyright]] [[http://​gauvain.pocentek.net/​u-classroom/​2006-08-31/​debian/​copyright]]
  
-Il est important de faire attention à ce fichier car s'il est mal renseigné, le détenteur du copyright peut très bien aller jusqu'​à vous intenter un procès (la majorité se contenteront d'un mail vous signalant l'​erreur et, si vous êtes courtois, n'​hésiterons pas à vous aider). Mais soyez prudent(e) ​malgré tout, certains deviennent susceptibles dès que l'on écorne leur copyright.+Il est important de faire attention à ce fichier car s'il est mal renseigné, le détenteur du copyright peut très bien aller jusqu'​à vous intenter un procès (la majorité se contenteront d'un mail vous signalant l'​erreur et, si vous êtes courtois·e, n'​hésiterons pas à vous aider). Mais soyez prudent·e ​malgré tout, certains deviennent susceptibles dès que l'on écorne leur copyright.
  
-D'​ailleurs,​ lors de la réalisation d'un package n'​hésitez pas à contacter l'auteur. C'est en général assez apprécié et cela peut vous permettre de faire valider ce fichier directement auprès de la personne concernée.+D'​ailleurs,​ lors de la réalisation d'un package n'​hésitez pas à contacter l'auteur·e. C'est en général assez apprécié et cela peut vous permettre de faire valider ce fichier directement auprès de la personne concernée.
  
 === Le fichier « control » === === Le fichier « control » ===
Ligne 195: Ligne 194:
 C'est le fichier de description du paquet source et de son paquet binaire résultant. C'est le fichier de description du paquet source et de son paquet binaire résultant.
  
-Le premier paragraphe décrit le paquet source. Le(s) paragraphe(s) suivant(s) décrit(décriventle(s) paquet(s) binaire(s), car il peut y avoir plusieurs paquets binaires générés pour un seul paquet source. Les champs présents dans ce fichier squelette **doivent** être présents.+Le premier paragraphe décrit le paquet source. Le ou les paragraphes suivants ​décrivent le ou les paquets binaires, car il peut y avoir plusieurs paquets binaires générés pour un seul paquet source. Les champs présents dans ce fichier squelette **doivent** être présents.
  
 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'œil 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. ​Ce 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) ​; 
-  * Depends: les dépendances du paquet (${shlibs:​Depends} sera remplacé plus tard lors de la construction du paquet grâce à un outil fort pratique)+  * Depends: les dépendances du paquet (${shlibs:​Depends} sera remplacé plus tard lors de la construction du paquet grâce à un outil fort pratique) ​;
   * Description:​ une description courte (d'une ligne), suivie d'une description plus longue (dont chaque ligne commence par un espace). C'est cette description qui apparaît dans les propriétés du paquet dans synaptic. Le plus simple est d'​aller chercher un texte dans un  fichier readme des sources (s'il y en a un), ou sur le site de l'​auteur.   * Description:​ une description courte (d'une ligne), suivie d'une description plus longue (dont chaque ligne commence par un espace). C'est cette description qui apparaît dans les propriétés du paquet dans synaptic. Le plus simple est d'​aller chercher un texte dans un  fichier readme des sources (s'il y en a un), ou sur le site de l'​auteur.
  
Ligne 219: 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). Vous pouvez obtenir la liste des dépendances de epdview en exécutant cette commande: <code bash>+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. Cependanttous 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 apt-cache show epdfview
 </​code>​ </​code>​
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 243: Ligne 242:
   * install: correspond au `make install`   * install: correspond au `make install`
  
-Ici l'​installation se fait dans "​$(CURDIR)/​debian/​epdfview",​ donc dans le dossier « debian/​ » créé ​tout à l'​heure.+<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 (par exemple, si la 1ère cible est "​debuild",​ il tournera en boucle).</​note>​ 
 + 
 +Icil'​installation se fait dans "​$(CURDIR)/​debian/​epdfview",​ donc dans le dossier « debian/​ » créé ​précédemment.
 Le fichier « rules » que vous avez n'a pas à être modifié pour notre exemple. Le fichier « rules » que vous avez n'a pas à être modifié pour notre exemple.
 En général il n'est pas nécessaire de le modifier, c'est uniquement dans le cas où la compilation classique (''​./​configure && make && make install''​) échoue que cela devient nécessaire (dans le cas d'un logiciel utilisant cette méthode de compilation,​ bien sûr). En général il n'est pas nécessaire de le modifier, c'est uniquement dans le cas où la compilation classique (''​./​configure && make && make install''​) échoue que cela devient nécessaire (dans le cas d'un logiciel utilisant cette méthode de compilation,​ bien sûr).
-Par contre si l'on veut ajouter des éléments particuliers à l'​installation (script shell supplémentaire ou page man par exemple), c'est dans ce fichier qu'on le précise.+Par contresi l'on veut ajouter des éléments particuliers à l'​installation (script shell supplémentaire ou page man par exemple), c'est dans ce fichier qu'on le précise.
 On va d'​ailleurs ajouter une page man à notre exemple : On va d'​ailleurs ajouter une page man à notre exemple :
  
Ligne 261: 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. 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 -L fr dh_* ».+Pour avoir des informations sur tous les outils dh_* listés dans ce fichiern'​hésitez pas à consulter les pages man. Elles sont toutes 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»« man dh_* » affichera ​directement la version française, sinon il faut le spécifier avec « man -L fr dh_* ».
  
-Une fois arrivé ici notre paquet source est prêtil 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é icinotre paquet source est prêt et 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.
  
 === Le fichier « dirs » === === Le fichier « dirs » ===
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.
  
  • tutoriel/creer_un_paquet.1523785156.txt.gz
  • Dernière modification: Le 15/04/2018, 11:39
  • par moths-art