tag:linuxfr.org,2005:/users/knaLinuxFr.org : les contenus de kna2018-04-27T18:48:39+02:00/favicon.pngtag:linuxfr.org,2005:Diary/379112018-04-25T22:37:07+02:002018-04-25T22:37:07+02:00construire un paquet debian -- KISS way (ou presque)Licence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p>Il y a eu pas mal de critiques dans un <a href="//linuxfr.org/users/seb95/journaux/construire-des-paquets-deb-pour-debian-deuxieme-partie">précédent journal</a> sur la complexité de création de paquets debian.</p>
<p>Si j'adore debian, je dois reconnaitre que c'est une distrib pas très KISS ; et la construction de paquet n'en est qu'un exemple…</p>
<p>Je présente donc ici mes méthodes pour constuire un paquet. Ce sont les plus simples que j'ai trouvé, et elles suffisent à mes besoins. Les paquets ainsi construits ne seront probablement pas acceptés dans debian, mais ça me dépanne pour un usage perso (et même pro en fait). Et c'est à mon goût pas trop complexe, enfin, j'ai pas trouvé plus simple…</p>
<h2 id="depuis-les-sources">Depuis les sources</h2>
<p>On pars d'un dossier avec les sources du soft, récupérées depuis une archive ou un repository git/mercurial/…<br>
Il faut d'abord compiler les sources et installer le soft en prenant un dossier de travail comme racine. Typiquement :</p>
<pre><code>mkdir /tmp/monpaquet
./configure
make
make install DESTDIR=/tmp/monpaquet
</code></pre>
<p>Bien sûr ici, la méthode pourra varier en fonction du soft. Le but étant d'avoir dans le dossier de travail (ici <code>/tmp/monpaquet</code> l'arborescence et les fichiers installés par le paquet.<br>
Si vous avez de la compilation à faire, il vous faudra auparavant installer <code>build-essential</code>, peut-être <code>cmake</code>. et les paquets <code>-dev</code> des libs qui en dépendent.</p>
<p>Si la doc d'installation de votre soft est un truc à base de <code>curl ... | sudo sh</code> et bien… faites au mieux !</p>
<p>Vous pouvez éventuellement y ajouter d'autres fichiers (un .desktop, un unit systemd,…)</p>
<p>Il faudra dans ce dossier créer un sous dossier DEBIAN/ avec au moins un fichier control.</p>
<pre><code>$ cd /tmp/monpaquet
$ mkdir DEBIAN
$ editor DEBIAN/control
</code></pre>
<p>Le fichier control minimum est de la forme :</p>
<pre><code>Package:
Version:
Section:
Priority:
Architecture:
Depends:
Maintainer:
Description:
</code></pre>
<p>avec :<br>
- <strong>Package:</strong> le nom du paquet<br>
- <strong>Version:</strong> la version du paquet<br>
- <strong>Section:</strong> une des <a href="https://packages.debian.org/stable/">sections de paquets debian</a><br>
- <strong>Priority:</strong> Essential, Required, Important, Standard, Optional ou Extra. Logiquement, si c'est un package que vous ajoutez, ce sera « optional ». Si vous voulez le détail, c'est <a href="https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-priority">par là</a> <br>
- <strong>Architecture:</strong> l'architecture pour laquelle vous construisez le paquet (i486, amd64,…). Mettez « any » s'il est installable sur n'importe quel architecture (langage interprété, doc).<br>
- <strong>Depends:</strong> liste des dépendances du package, sous la forme <code>foo, bar, baz (>=2.15)</code><br>
- <strong>Maintainer:</strong> votre nom<br>
- <strong>Description:</strong> une description du soft installé</p>
<p>Vous pouvez aussi ajouter « Homepage: », et si besoin : Recommends, Suggests, Conflicts, Replace, Breaks, Provides (<a href="https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-depends">détail</a>)</p>
<p>Un exemple d'un fichier control est disponible <a href="https://www.debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html#s-package">ici</a>.</p>
<p>Vous pouvez aussi ajouter dans le dossier DEBIAN/ des scripts :<br>
- <code>preinst</code> : exécuté avant l'installation du paquet<br>
- <code>postinst</code> : exécuté après l'installation du paquet<br>
- <code>prerm</code> : exécuté avant la désinstallation du paquet<br>
- <code>postrm</code> : exécuté après la désinstallation du paquet</p>
<p>Il ne vous reste plus qu'à lancer :</p>
<pre><code># apt install fakeroot
$ fakeroot dpkg-deb --build /tmp/monpaquet nom_du_fichier.deb
</code></pre>
<h2 id="depuis-un-paquet-source-debian">Depuis un paquet source debian</h2>
<p>Quand le soft est déjà empaqueté sous debian, et que vous souhaitez faire un simple changement, il est préférable de partir du paquet source debian.</p>
<p>Ici aussi créez un répertoire de travail, et lancez les commandes depuis ce répertoire.</p>
<p>On installe d'abord les dépendances nécessaires pour construire le paquet, et on récupère le paquet source :</p>
<pre><code># apt-get build-dep <nom_du_paquet>
$ apt-get source <nom_du_paquet>
</code></pre>
<p>Si vous faites du pinning, vous pouvez préciser la release, par exemple :</p>
<pre><code># apt-get build-dep <nom_du_paquet>/stable
$ apt-get source <nom_du_paquet>/stable
</code></pre>
<p>Vous obtenez alors :<br>
- un fichier <code><paquet>_<version>.orig.tar.gz</code> qui contient les sources du soft<br>
- un dossier <code><paquet>_<version></code> qui n'est que le contenu de l'archive précédente<br>
- un fichier <code><paquet>_<version>-<revision>.dsc</code> (ici, on s'en fout)<br>
- un fichier <code><paquet>_<version>-<revision>.debian.tar.xz</code> qui contient un dossier debian/ avec les infos de construction du paquet</p>
<p>Si vous souhaitez faire des modifs dans le code source ou appliquer un patch, allez donc dans le dossier et reconstruisez l'archive <code><paquet>_<version>.orig.tar.gz</code> ensuite.</p>
<p>Si vous souhaitez modifier la constuction du paquet (typiquement, changer des options de compilation), il vous faudra désarchiver <code><paquet>_<version>-<revision>.debian.tar.xz</code> et modifier le fichier <code>debian/rules</code> (c'est grosso-modo un Makefile, en s'inspirant du contenu vous devriez vous en sortir) ; puis refaire l'archive.</p>
<p>Là il vous faudra marquer votre révision du paquet et le recompiler :</p>
<pre><code># apt install devscripts
$ dch --local <votre_nom_ou_nom_de_la_modif>
$ dpkg-buildpackage -us -uc
</code></pre>
<p>Voir aussi : <a href="https://raphaelhertzog.fr/2011/07/12/comment-recompiler-un-paquet-debian/">https://raphaelhertzog.fr/2011/07/12/comment-recompiler-un-paquet-debian/</a></p><div><a href="https://linuxfr.org/users/kna/journaux/construire-un-paquet-debian-kiss-way-ou-presque.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/114328/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/kna/journaux/construire-un-paquet-debian-kiss-way-ou-presque#comments">ouvrir dans le navigateur</a>
</p>
knahttps://linuxfr.org/nodes/114328/comments.atomtag:linuxfr.org,2005:Diary/365442016-04-25T19:07:58+02:002016-04-25T19:07:58+02:00[Bookmark] Billy Paul bronsoniséLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<p><a href="http://www.lemonde.fr/disparitions/article/2016/04/25/mort-de-billy-paul-interprete-de-me-and-mrs-jones_4907919_3382.html">http://www.lemonde.fr/disparitions/article/2016/04/25/mort-de-billy-paul-interprete-de-me-and-mrs-jones_4907919_3382.html</a></p>
<p>On trouvera plein d'autres articles sur le ouaibe qui rappelleront <em>Me and Mrs Jones</em>, pour ma part il aura surtout été le chanteur de <a href="https://www.youtube.com/watch?v=DbgYUj3jQoI">Your Song</a>, que je réécouterai probablement encore, encore et encore longtemps après sa mort.</p><div><a href="https://linuxfr.org/users/kna/journaux/bookmark-billy-paul-bronsonise.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/108829/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/users/kna/journaux/bookmark-billy-paul-bronsonise#comments">ouvrir dans le navigateur</a>
</p>
knahttps://linuxfr.org/nodes/108829/comments.atom