Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
tutoriel:creer_un_paquet [Le 24/04/2017, 20:08] 78.217.56.69 les archives sont désormais au format lzma (xz) |
tutoriel:creer_un_paquet [Le 09/10/2021, 16:45] 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 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 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 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> | ||
---- | ---- |