Skip to main content
Seb's blog

Construire des paquets DEB pour Debian (première partie)

(Édition: je décide de couper en plusieurs billets).

Cela fait un moment que ça me trotte, l'envie de refaire les billets sur la fabrication de paquets DEB et RPM, et c'est en voyant le billet de Microlinux sur comment Construire des paquets RPM pour CentOS que le courage m'est revenue.

Je ne parlerais pas de construction depuis zéro mais depuis des paquets venant de Debian SID (qu'on appel rétro-portage) et d'Ubuntu sur un système Debian stable. Toutes les étapes citées ici seront reproductibles sur toutes distributions issues de la famille Debian, aussi bien sur Ubuntu que sur Mint, c'est la grande force de ce format de paquet. L’inconvénient est qu'il est moins facile de partir de zero que le format RPM pour faire son propre paquet, sous DEB nous avons un dossier contenant une multitude de fichier alors que le RPM n'a qu'un seul fichier obligatoire, par contre sous Debian, la création du dossier et des fichiers sont grandement facilité par des automatismes (dh_make).

debvsrpm

Un mot tout d'abord, pourquoi j'aime les DEB à ce point, c'est simple: contrairement aux RPM, peu importe l'origine du paquet -j'entends par origine, la distribution DEB que ce soit un paquet venant de Mint, d'Ubuntu, de Debian, ect...- il sera toujours possible de le rétro-porter ou de le porter sur sa distribution, sans changer quoique ce soit. Par exemple il m'arrive souvent de prendre une version d'Ubuntu d'un paquet pour le rebuilder sur ma Debian, et un exemple qui me vient en tête est simplement Ubuntu qui utilise l'intégrale de l'archive Debian rebuilder pour elle. Là où les distributions RPM sont souvent peu ou pas compatible et où il faut retoucher les fichiers.spec pour arriver à ses fins. Par exemple, un spec venant de Fedora sera souvent retouché pour fabriquer un paquet sous openSUSE, on pourra s'en inspirer mais pas le copier à l'identique, faudra déjà mettre les bons noms des dépendances de build, mais aussi souvent changer la partie %build ou %install du spec. Il y a bien sur l'exception qui confirme la règle, des spec qui sont compatibles quelque soit la distribution et encore si les noms de dépendances correspondent. Bien sur la famille RedHat est totalement un contre exemple puisque Fedora est 100 compatible avec les autres distributions du groupe, comme l'est Tumbleweed vis à vis de Leap ou de SLE coté de la famille SUSE, mais un spec Rosa sera peu ou pas compatible avec une SUSE, une RedHat, voir même une Mageia...

Maintenant que j'ai dis ça, allons voir de quoi il en retourne. Il n'y a pas de paquets sources proprement parlé sous Debian, comme on peut s'attendre à trouver à la manière de RPM, non, un paquet source Debian n'est pas un truc appelé "mon-programme.deb.source" mais plutôt un ensemble de 2 archives compressées et d'un fichier:

Je partirais sur un paquet n'existant pas chez Debian mais qui est sur Ubuntu, je prendrais une version qui ne sera pas la dernière pour vous montrer la puissance des outils Debian pour mettre à jour les sources et rebuilder en directe et enfin un autre programme qui sera accessible depuis SID dans une version plus récente que sous Stable. Toutes les actions citées qui suivent seront fait avec les outils de Debian utilisés par les Devs mais sont possible d’être fait avec des outils universaux comme wget, ect... Je reprends un peu l'architecture du billet de Microlinux pour mon billet, comme pour donner une idée des étapes à suivre et comparer avec les RPM.

Mettre en place l’environnement de construction #

Plusieurs outils et méthodes sont possibles, je n'aborderais que la plus simple et pourtant la plus puissante, celle des développeurs Debian: les outils devscripts. On commence donc par les installer:

# apt install devscripts

Il nous faudra pour la suite, avoir configuré sa clé pour signer ses paquets, je ne parlerais pas de ça ici, mais on peut se documenter et suivre l'excellent tuto de Debian-facile sur la question:

https://debian-facile.org/doc:mentors:signer-un-paquet

Sinon il reste la possibilité de ne pas signer les paquets au moment de lancer debuild avec l'option -uc.

On va se faire un endroit propre dans notre /home pour la construction:

$ mkdir /home/nom-de-l'utilisateur/paquets && cd /home/nom-de-l'utilisateur/paquets

On peut nommer le dossier comme il nous chante, remplacer paquet ci-dessus par ce que vous voulez, pareil pour l'emplacement.

Téléchargement des sources depuis une distribution autres que Debian (Ubuntu) et construction d’un paquet DEB pour sa Debian stable## #

Comme dit au début du billet, je commence par un paquet venant d'Ubuntu que je compilerais pour la stable de Debian. Je prends volontairement un paquet non encore inclus dans les archives Debian, en l'occurrence Ghostwriter mais non dans sa dernière version car je compte ensuite vous montrer la simplicité de mettre un paquet dans sa dernière version via ses sources de façon presque automatique, c'est ça aussi Debian, un système qui vous simplifie la vie. Les sources Ubuntu sont disponibles depuis Launchpad, on n'aura besoin de télécharger qu'un seul fichier pour commencer et non des trois fichiers cités plus haut, le fichier DSC, on le télécharge via la commande dget:

~/Paquets/$ mkdir /ghostwriter

~/Paquets/ghostwriter$ dget https://launchpad.net/~wereturtle/+archive/ubuntu/ppa/+files/ghostwriter_1.6.0-0ppa1~trusty1.dsc

dget: retrieving https://launchpad.net/~wereturtle/+archive/ubuntu/ppa/+files/ghostwriter_1.6.0-0ppa1~trusty1.dsc % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 1942 100 1942 0 0 1793 0 0:00:01 0:00:01 --:--:-- 1793 dget: retrieving https://launchpad.net/~wereturtle/+archive/ubuntu/ppa/+files/ghostwriter_1.6.0.orig.tar.gz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 771k 100 771k 0 0 297k 0 0:00:02 0:00:02 --:--:-- 733k dget: retrieving https://launchpad.net/~wereturtle/+archive/ubuntu/ppa/+files/ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 100 2184 100 2184 0 0 2752 0 --:--:-- --:--:-- --:--:-- 5762 ghostwriter_1.6.0-0ppa1~trusty1.dsc: dscverify: ghostwriter_1.6.0-0ppa1~trusty1.dsc failed signature check: gpg: WARNING: no command supplied. Trying to guess what you mean ... gpg: Signature made sam. 07 avril 2018 23:47:46 CEST gpg: using RSA key 395C56156A3F539F gpg: Can't check signature: Pas de clef publique Validation FAILED!!

Un peu d'explication, pour recompiler un paquet Debian, il faut commencer par rapatrier son code source. Le moyen le plus simple est d'employer la commande apt-get source nom-paquet-source, qui nécessite la présence d'une ligne de type deb-src dans le fichier /etc/apt/sources.list et l'exécution préalable de la commande apt-get update. Ceci dit, il faut comprendre que pour cette commande, les sources doivent déjà être disponible dans l'archive Debian, or ce n'est pas le cas pour Ghostwriter. Il nous faut donc télécharger manuellement les sources depuis une archive DEB ou depuis le site web du programme: récupérer deux ou trois fichiers (d'extensions .dsc, .tar.comp et parfois .diff.gz ou .debian.tar.compcomp pouvant prendre les valeurs gz, bz2 ou xz selon l'outil de compression employé), puis exécuter la commande dpkg-source -x fichier.dsc. Puisque ici le fichier .dsc est disponible à une URL donnée, on peut même se simplifier la vie en utilisant dget URL : cette commande (qui fait partie du paquet devscripts ) récupère le .dsc à l'adresse indiquée, en analyse le contenu et récupère automatiquement le ou les fichiers qu'il référence. Le paquet source est même extrait localement (à moins que l'option -d ou --download-only soit spécifiée). (https://debian-handbook.info/browse/fr-FR/stable/debian-packaging.html)

On a pu voir un "gpg: Can't check signature: Pas de clef publique Validation FAILED!!" , rien de grave, je n'ai pas ajouté la clé du launchpad et donc les outils me préviennent que gpg ne peut donc pas vérifier l'authenticité et il nous décompactera pas les sources pour nous. Nos sources sont bien maintenant dans notre dossier /home/nom-de-l'utilisateur/paquets/ghostwriter, voyons ensemble dedans ce que nous avons:

~/Paquets/ghostwriter$ ls -1 ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz ghostwriter_1.6.0-0ppa1~trusty1.dsc ghostwriter_1.6.0.orig.tar.gz

Nous avons donc nos 3 fichiers essentiels, l'archive des sources amonts, l'archive de la transformation pour en faire un paquet binaire Debian, et notre fichier DSC, nous allons donc commencer par regarder ce que contient le DSC:

~/Paquets/ghostwriter$ nano ghostwriter_1.6.0-0ppa1~trusty1.dsc

-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Format: 3.0 (quilt) Source: ghostwriter Binary: ghostwriter Architecture: any Version: 1.6.0-0ppa1~trusty1 Maintainer: Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com Uploaders: wereturtle wereturtledev@gmail.com Homepage: http://wereturtle.github.io/ghostwriter/ Standards-Version: 3.9.7 Build-Depends: debhelper (>= 9), qtbase5-dev, libqt5svg5-dev, qtmultimedia5-dev, libqt5webkit5-dev, libhunspell-dev, pkg-config Package-List: ghostwriter deb editors optional arch=any Checksums-Sha1: ab272acee4319667c69f39bab246aa78a95e8cb6 789564 ghostwriter_1.6.0.orig.tar.gz 8e261ef35b6e9b5527a7d73d922b64d944bb56b5 2184 ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz Checksums-Sha256: 0bcb0bf8d0eb2b57470da01161c015ed53ad09208a954f7424451b5c59251e71 789564 ghostwriter_1.6.0.orig.tar.gz 9e4597e5c599425a88900fe2746fa5b2f3ebc1c9b83a47812fc23c0b74de8d56 2184 ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz Files: 740a5c0762bd2f14d5410af932b65776 789564 ghostwriter_1.6.0.orig.tar.gz 6010c66e0ec415e860d9a95014750fff 2184 ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz

-----BEGIN PGP SIGNATURE----- Version: GnuPG v1

iQIcBAEBAgAGBQJayTyCAAoJEDlcVhVqP1OfAzkP/1gFoezCY9How8FQU2CKGNFn SWxz/KULuwopQJzpvG/tBMA56+Owak9sNWXd6WZU+d06Xtb6r+LAT0NDvhgl2PoU GsbHHFDrMA7GP71bIz2Ng9AFgwnYDBJSvkG4o7VARSey/33iA0Xc8AsdvSv5dli8 9NzY/2rA5xdgczbjGMdAzw2lCBO5jFCPHXFrLxRtp1mQOkGYc9r9diOHcmEdjIw3 gzx0ZwUjgwV52dsSwIj61b8x4OVz9oFk4bEijGhmRVsQgsKz4xaIJAe/p0Dsc4yK +LqkshJjJxxATjoyJZWAAgvQMz8momMhg0Ht5yOCA0N/s9TxHo8tj4AKQAebD2AN YfjjE4uOGZMSBlUF1efEHukMAEgD8chIt00dYDD+7j1xaEYJeGCj5A8wgDb5jcUv hLt9TuDiG8J3ZxvxMahCly9N0tfRANWPcONnmQyRomGIGrY6l3OC94i65H3yg05/ M0c3ApsVpccLF6rFXsATYoXn7XoF7JT453qTgcRf6Fhaq79K/RZFMhFpWKEDkXve w0rUz5AVXAfbYit+95/eQwHeQ0QjtYKzTmwPFoO+yE9O0fhuMUhiMXJsvyo7IowU lYuoKoCMLVXjj4nOIan7rg7YRnXgGEgK63HKzPbLlkDdeBskcmIzO0YjHM20MUUb tmryLkhYkZY57W8/S54V =lVh1 -----END PGP SIGNATURE-----

Je ne pense pas avoir à revenir dessus, ce sont les informations classiques qu'on peut retrouver dans un SPEC. En faite ce fichier va être refait au moment de notre build, il reprend des données qui viennent de l'archive ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz et qui auront changer d'ici à ce que l'on y touche. On peut s'assurer que les archives présentes ici ont bien les mêmes signatures.

Décompressons les archives, nous pouvons bien sur le faire graphiquement, nous avons donc nos deux dossiers nouvellement décompressés, un dossier debian et un dossier ghostwriter-1.6.0, nous allons maintenant déplacer le dossier debian dans celui du ghostwriter-1.6.0 et nous irons dedans:

~/Paquets/ghostwriter$ cd ghostwriter-1.6.0/debian/

Regardons ce qu'il contient:

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ ls changelog compat control copyright dirs menu rules source watch

Le fichier changelog est un fichier essentiel dans les sources debian et sera utilisé tout au long de la vie du paquet, c'est ce fichier qui déterminera la version du paquet, sa syntaxe est stricte et on devra faire appel à dch pour faire un changement dedans. Regardons ce que donne ce fichier:

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat changelog

ghostwriter (1.6.0-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 7 Apr 2018 14:30:00 -0700

ghostwriter (1.5.0+ds2-1ppa2~trusty1) trusty; urgency=low

* Dependency fix for Artful Aardvark.

-- wereturtle wereturtledev@gmail.com Thu, 31 Aug 2017 23:00:00 -0700

ghostwriter (1.5.0+ds1-1ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 17 May 2017 13:00:00 -0700

ghostwriter (1.5.0-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 17 May 2017 11:15:00 -0700

ghostwriter (1.4.2-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sun, 23 Aug 2016 09:06:00 -0700

ghostwriter (1.4.1-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sun, 14 Aug 2016 15:02:00 -0700

ghostwriter (1.4.0-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sun, 23 Jul 2016 11:40:00 -0700

ghostwriter (1.3.1-1ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sun, 28 Feb 2016 15:40:00 -0700

ghostwriter (1.3.1-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 27 Feb 2016 15:18:00 -0700

ghostwriter (1.3.0-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 27 Feb 2016 12:51:00 -0700

ghostwriter (1.2.5-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sun, 13 Dec 2015 12:51:00 -0700

ghostwriter (1.2.4-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 28 Nov 2015 11:14:00 -0700

ghostwriter (1.2.3-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 31 Oct 2015 11:47:00 -0700

ghostwriter (1.2.2-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 10 Oct 2015 16:52:00 -0700

ghostwriter (1.2.1-0ppa1~trusty1) trusty; urgency=low

* New upstream release.

-- wereturtle wereturtledev@gmail.com Sat, 03 Oct 2015 00:04:00 -0700

ghostwriter (1.2.0-0ppa1~trusty1) trusty; urgency=low

* Initial release for Ubuntu.

-- wereturtle wereturtledev@gmail.com Sun, 27 Sep 2015 00:44:56 -0700

Les entrés sont dans l'ordre de chronologie inverse, les changements récents sont en haut. Je décide donc de changer la version et de faire référence à Debian pour marquer la "debianisation", on le fait avec dch -r.

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ dch -r

Puis je change de cette façon:

ghostwriter (1.6.0-1~schav1) unstable; urgency=low

* package for Debian

[ wereturtle ] * New upstream release.

-- Sebastien CHAVAUX seb95.scou@gmail.com Fri, 20 Apr 2018 19:21:47 +0200

C'est pré-rempli, je n'ai donc que peu de chose à faire:)

Le fichier compat contient juste un nombre identifiant la version des outils debhelper, Stretch en est à la version 9.

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat compat 9

Je continue à vous expliquer les autres fichiers car ils sont important et normalement ils sont le strict minimum pour faire un paquet propre, j'explique en survolant car ils sont tout de même explicites et en parler plus prendrait beaucoup de temps. Le fichier control est le plus important, c'est lui qui fournit toutes les informations sur les paquets sources et binaires du logiciel en cours, que ce soit le nom du paquet source, la section dans l'archive Debian (editeur, jeux, kde, ...), les dépendances de build, les noms des paquets binaires, l'architecture, les dépendances, la description, bref c'est lui qui va entre autre remplir le fichier DSC une fois notre paquet contruis.

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat control

Source: ghostwriter Section: editors Priority: optional Maintainer: Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com Uploaders: wereturtle wereturtledev@gmail.com Build-Depends: debhelper (>= 9), qtbase5-dev, libqt5svg5-dev, qtmultimedia5-dev, libqt5webkit5-dev, libhunspell-dev, pkg-config Standards-Version: 3.9.7 Homepage: http://wereturtle.github.io/ghostwriter/ #Vcs-Git: git://git.debian.org/collab-maint/ghostwriter.git #Vcs-Browser: http://git.debian.org/?p=collab-maint/ghostwriter.git;a=summary

Package: ghostwriter Architecture: any Depends: libqt5concurrent5, libqt5printsupport5, libqt5svg5, ${misc:Depends}, ${shlibs:Depends}, Suggests: hunspell-dictionary, myspell-dictionary Description: Distraction-free, themeable Markdown editor ghostwriter is a Markdown editor that provides a themable, distraction-free writing environment, along with a live HTML preview as you type, easy document navigation with an outline HUD, and export to popular document formats with Sundown, Pandoc, MultiMarkdown, Discount, cmark, or cmark-gfm processors. It also features a live word count and auto-save. Eliminate distractions in fullscreen mode, or concentrate on the current text you are writing in focus mode. It even remembers your last opened file and position within the file, so you can pick up where you last left off.

Nous pouvons ici, changer le mainteneur par nous et nous rajouter dans l'Uploaders:

Maintainer: Sebastien CHAVAUX seb95.scou@gmail.com Uploaders: Sebastien CHAVAUX seb95.scou@gmail.com, wereturtle wereturtledev@gmail.com

Le copyright est un fichier requis par la charte Debian, spécifie les informations nécessaires pour connaître l'auteur amont et sa licence.

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat copyright Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: ghostwriter Upstream-Contact: wereturtle wereturtledev@gmail.com Source: http://wereturtle.github.io/ghostwriter/ git://github.com/wereturtle/ghostwriter.git

Files: * Copyright: 2014-2018 wereturtle wereturtledev@gmail.com License: GPL-3.0+

Files: debian/* Copyright: 2015-2018 wereturtle wereturtledev@gmail.com License: GPL-3.0+

License: GPL-3.0+ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. . This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. . You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/. . On Debian systems, the complete text of the GNU General Public License version 3 can be found in "/usr/share/common-licenses/GPL-3".

Je n'y touche pas ! Pas plus que les fichiers dirs et menu.

Il peut être intéressant de regarder le fichier rules qui est celui qui contrôle la fabrication du ou des paquets, définit les étapes de construction, c'est un fichier exécutable. Par exemple, on touchera à ce fichier pour ajouter une option ou une fonction au programme.

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat rules #!/usr/bin/make -f

export QT_SELECT=qt5

%: dh $@ --parallel

Le dernier fichier que j'explique ici est assez simple, c'est celui qui va permettre de contrôler si une nouvelle version est disponible, si bien rempli, il va même télécharger via la commande uscan la dernière version, on verra ensemble son utilisation pour la mise en paquet de la nouvelle version de Ghostwriter. (plus d'info: https://www.debian.org/doc/manuals/maint-guide/dother.fr.html#watch)

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ cat watch version=3 https://github.com/wereturtle/ghostwriter/releases /wereturtle/ghostwriter/archive/v(.+).tar.gz

Donc je récapitule un peu, car j'ai quand meme noyé les étapes avec les différents fichiers et leurs contenus. Nous avons changer la version dans le changelog via dch -r et mit la raison du build, nous avons ensuite changer le mainteneur (à ne pas faire normalement mais le ubuntu donne un warning voir ma demande https://mentors.debian.net/package/ghostwriter) et nous nous sommes ajouté dans l'uploader.

Nous pouvons lancer le build via debuild mais avant il faut installer les dépendances de build:

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ su Mot de passe : (vide, normale ;p)

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian# apt-get build-dep ~/Paquets/ghostwriter/ghostwriter_1.6.0-0ppa1~trusty1.dsc Note, using file '/home/sebastien/Paquets/ghostwriter/ghostwriter_1.6.0-0ppa1~trusty1.dsc' to get the build dependencies Lecture des listes de paquets... Fait Construction de l'arbre des dépendances
Lecture des informations d'état... Fait Les NOUVEAUX paquets suivants seront installés : libhunspell-dev libqt5quickparticles5 libqt5quicktest5 libqt5svg5-dev libqt5webkit5-dev qt5-qmake qt5-qmltooling-plugins qtbase5-dev qtbase5-dev-tools qtdeclarative5-dev qtmultimedia5-dev 0 mis à jour, 11 nouvellement installés, 0 à enlever et 1 non mis à jour. Il est nécessaire de prendre 4 081 ko dans les archives. Après cette opération, 27,9 Mo d'espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n] [....]

et enfin la fabrication:

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ debuild dpkg-buildpackage -rfakeroot -us -uc dpkg-buildpackage: info: paquet source ghostwriter dpkg-buildpackage: info: version source 1.6.0-1~schav1 dpkg-buildpackage: info: distribution source unstable dpkg-buildpackage: info: source changé par Sebastien CHAVAUX seb95.scou@gmail.com dpkg-source --before-build ghostwriter-1.6.0 dpkg-buildpackage: info: architecture hôte amd64 fakeroot debian/rules clean dh clean --parallel dh_testdir -O--parallel dh_auto_clean -O--parallel make -j4 distclean make[1] : on entre dans le répertoire « /home/sebastien/Paquets/ghostwriter/ghostwriter-1.6.0 » rm -f build/release/qrc_resources.cpp rm -f build/release/moc_MainWindow.cpp build/release/moc_MarkdownEditor.cpp build/release/moc_HtmlPreview.cpp build/release/moc_TextBlockData.cpp build/release/moc_HudWindow.cpp build/release/moc_ThemeSelectionDialog.cpp build/release/moc_ThemeEditorDialog.cpp build/release/moc_AppSettings.cpp build/release/moc_DocumentManager.cpp build/release/moc_TextDocument.cpp build/release/moc_ExportDialog.cpp build/release/moc_Outline.cpp build/release/moc_MarkdownHighlighter.cpp build/release/moc_StyleSheetManagerDialog.cpp build/release/moc_SimpleFontDialog.cpp build/release/moc_TimeLabel.cpp build/release/moc_LocaleDialog.cpp build/release/moc_AbstractStatisticsWidget.cpp build/release/moc_DocumentStatistics.cpp build/release/moc_DocumentStatisticsWidget.cpp build/release/moc_SessionStatistics.cpp build/release/moc_SessionStatisticsWidget.cpp build/release/moc_PreferencesDialog.cpp build/release/moc_PreviewOptionsDialog.cpp build/release/moc_find_dialog.cpp build/release/moc_image_button.cpp build/release/moc_color_button.cpp build/release/moc_dictionary_manager.cpp buil [....] dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libpthread.so.0 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libGL.so.1 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libQt5Network.so.5 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libQt5Concurrent.so.5 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dh_installdeb -O--parallel dh_gencontrol -O--parallel dh_md5sums -O--parallel dh_builddeb -O--parallel dpkg-deb: building package 'ghostwriter-dbgsym' in '../ghostwriter-dbgsym_1.6.0-1~schav1_amd64.deb'. dpkg-deb: building package 'ghostwriter' in '../ghostwriter_1.6.0-1~schav1_amd64.deb'. dpkg-genbuildinfo dpkg-genchanges >../ghostwriter_1.6.0-1~schav1_amd64.changes dpkg-genchanges: info: inclusion du code source original dans l'envoi (« upload ») dpkg-source --after-build ghostwriter-1.6.0 dpkg-buildpackage: info: envoi complet (inclusion du code source d'origine) Now running lintian... W: ghostwriter source: maintainer-also-in-uploaders W: ghostwriter source: out-of-date-standards-version 3.9.7 (current is 3.9.8) W: ghostwriter: command-in-menu-file-and-desktop-file ghostwriter usr/share/menu/ghostwriter:7 Finished running lintian. Now signing changes and any dsc files... signfile dsc ghostwriter_1.6.0-1~schav1.dsc XXXXXXXXXXXXXXXXXXXXXXXXXXX

fixup_buildinfo ghostwriter_1.6.0-1~schav1.dsc ghostwriter_1.6.0-1~schav1_amd64.buildinfo signfile buildinfo ghostwriter_1.6.0-1~schav1_amd64.buildinfo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

fixup_changes dsc ghostwriter_1.6.0-1~schav1.dsc ghostwriter_1.6.0-1~schav1_amd64.changes fixup_changes buildinfo ghostwriter_1.6.0-1~schav1_amd64.buildinfo ghostwriter_1.6.0-1~schav1_amd64.changes signfile changes ghostwriter_1.6.0-1~schav1_amd64.changes XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Successfully signed dsc, buildinfo, changes files

Nos paquets sont construit.

On remarque que certaines dépendances pourraient être évités:

dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libpthread.so.0 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libGL.so.1 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libQt5Network.so.5 sans nécessité (il n'utilise aucun des symboles de la bibliothèque) dpkg-shlibdeps: avertissement: la dépendance pourrait être évitée si « debian/ghostwriter/usr/bin/ghostwriter » n'y était pas lié avec libQt5Concurrent.so.5 sans nécessité (il n'utilise aucun des symboles de la bibliothèque)

On remarque aussi différents warning :

Now running lintian... W: ghostwriter source: maintainer-also-in-uploaders W: ghostwriter source: out-of-date-standards-version 3.9.7 (current is 3.9.8) W: ghostwriter: command-in-menu-file-and-desktop-file ghostwriter usr/share/menu/ghostwriter:7 Finished running lintian.

Pour le premier warning, le mainteneur ne devrait pas être répété dans Uploaders, ce que je décide d'ignorer puisque par défaut Ubuntu Developers ubuntu-devel-discuss@lists.ubuntu.com fait aussi un warning, si je veux corriger c'est dans le fichier control que ça se trouve. Le second est encore plus simple et c'est dû à une inattention de ma part, j'aurais dû remarquer la version de la charte technique, c'est celle que le mainteneur se conforme de respecter en créant son paquet. Sous Stretch, nous en somme à la 3.9.8 et je modifie donc pour la prochaine fois... Pour le troisième, je suppose que c'est le :7 qui est en trop dans le fichier menu mais là je sèche :)

Maintenant qu'on a expliqué en large et en long, je récapitule les commandes:

1/ Téléchargement du DSC (penser à se mettre dans le dossier de notre future paquet):

~/Paquets/ghostwriter$ dget https://launchpad.net/~wereturtle/+archive/ubuntu/ppa/+files/ghostwriter_1.6.0-0ppa1~trusty1.dsc

2/ Installation des dépendances (en root):

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian# apt-get build-dep ~/Paquets/ghostwriter/ghostwriter_1.6.0-0ppa1~trusty1.dsc

3/ Modification de la version du programme, de la version de la distribution (Ubuntu vers Debian unstable), enfin ne pas oublier d'y mettre la raison du build (penser à se mettre dans le dossier /debian du logiciel voulu):

~/Paquets/ghostwriter/ghostwriter-1.6.0/debian$ dch -r

4/ Lancement de la construction:

debuild

Nous avons nos paquets, nos fichiers de log pour le build, le nouveau DSC changé, l'archive compressé du dossier debian avec nos modifications. Nous pourront regarder le fichier ghostwriter_1.6.0-1~schav1_amd64.changes pour voir.

~/Paquets/ghostwriter$ ls ghostwriter-1.6.0 ghostwriter_1.6.0-1~schav1_amd64.buildinfo ghostwriter_1.6.0-1~schav1.dsc ghostwriter_1.6.0-0ppa1~trusty1.debian.tar.xz ghostwriter_1.6.0-1~schav1_amd64.changes ghostwriter_1.6.0.orig.tar.gz ghostwriter_1.6.0-0ppa1~trusty1.dsc ghostwriter_1.6.0-1~schav1_amd64.deb ghostwriter-dbgsym_1.6.0-1~schav1_amd64.deb ghostwriter_1.6.0-1~schav1_amd64.build ghostwriter_1.6.0-1~schav1.debian.tar.xz

Regardons le fichier ghostwriter_1.6.0-1~schav1_amd64.changes pour voir les changements de ce builds:

~/Paquets/ghostwriter$ cat ghostwriter_1.6.0-1~schav1_amd64.changes -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256

Format: 1.8 ###date: Fri, 20 Apr 2018 19:21:47 +0200 Source: ghostwriter Binary: ghostwriter Architecture: source amd64 Version: 1.6.0-1~schav1 Distribution: unstable Urgency: low Maintainer: Sebastien CHAVAUX seb95.scou@gmail.com Changed-By: Sebastien CHAVAUX seb95.scou@gmail.com Description: ghostwriter - Distraction-free, themeable Markdown editor Changes: ghostwriter (1.6.0-1~schav1) unstable; urgency=low . * package for Debian . [ wereturtle ] * New upstream release. Checksums-Sha1: 4bd9fdbd88d6133b4a5bbf2a0d286a590dc34253 1618 ghostwriter_1.6.0-1~schav1.dsc ab272acee4319667c69f39bab246aa78a95e8cb6 789564 ghostwriter_1.6.0.orig.tar.gz 5e1ee5be9288567c128229ddb93dff65c7de562c 2224 ghostwriter_1.6.0-1~schav1.debian.tar.xz feb8290a7d05a36f8cbb526c16d29c2987bdcac9 8062606 ghostwriter-dbgsym_1.6.0-1~schav1_amd64.deb 25a815d3aec1d1423166bd9fa16b935f1c7a4009 11340 ghostwriter_1.6.0-1~schav1_amd64.buildinfo 57bf08fed54c25a626ef0995f20fddb679646b2f 384182 ghostwriter_1.6.0-1~schav1_amd64.deb Checksums-Sha256: c158e0659286cf1ad3b3a4acd86b770f41e4418861d77dea9bf070e62dd062d0 1618 ghostwriter_1.6.0-1~schav1.dsc 0bcb0bf8d0eb2b57470da01161c015ed53ad09208a954f7424451b5c59251e71 789564 ghostwriter_1.6.0.orig.tar.gz efe51ac6aa2f1e6a117130f7be880922cde8d1875889aa5f0818e76c448118c0 2224 ghostwriter_1.6.0-1~schav1.debian.tar.xz 6457444fcdf3426e1c930b043fbc698fd3f6be1655332811dfe033bdf30cbf85 8062606 ghostwriter-dbgsym_1.6.0-1~schav1_amd64.deb f793275fcd72bd85f18793396a61cddec62ee5166c715f5c8565956088650249 11340 ghostwriter_1.6.0-1~schav1_amd64.buildinfo 4dc45011023b16caccff74ebb33d48750baff66eef53a75597838efd35c54536 384182 ghostwriter_1.6.0-1~schav1_amd64.deb Files: 30bb8c33bfd1aeccbb2356e874645830 1618 editors optional ghostwriter_1.6.0-1~schav1.dsc 740a5c0762bd2f14d5410af932b65776 789564 editors optional ghostwriter_1.6.0.orig.tar.gz 252af53442e50d40f1d4a85a3f678b1f 2224 editors optional ghostwriter_1.6.0-1~schav1.debian.tar.xz 632a601524de3f5c9e5dd97c73c6d988 8062606 debug extra ghostwriter-dbgsym_1.6.0-1~schav1_amd64.deb e9e3cb40b70fde62e23543e40017034d 11340 editors optional ghostwriter_1.6.0-1~schav1_amd64.buildinfo 76268cb27aa50c80b17ba124dfba74c3 384182 editors optional ghostwriter_1.6.0-1~schav1_amd64.deb

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEXOsrOHvyxJM5+4X7Qk4R/tAPf9wFAlraMowACgkQQk4R/tAP f9zoOAf/fA1jN8kGUKQs0JXuWc2H3bJIHzzeiNf8MGnmHfZZwu3DW0cOgiMqyx7h Lcr00OXz8yJWnDkuoz88NZZ1TbwPVTIfYyeplJnE9osyKHPd3x4195S8X5GtOWWe 0YcW7qf0p6LZ7teN8J9Qdu1NowqoM9Q4VvaZZhOQ2Ef3WmBbvUuLPWbPGtZulx9+ l42rROLlThltJ1k55VobtTx4pP6qvdslQuNEmtrj3cHSa2mdRoFafZckRLAUfpnK bB2i3HuAzph9xbcWLopy2BQhinMpViyNziv1+CxEuygDrgwn06Pu1/ve7SNMBYpV 0MpC94SvvG5GMueOnO8j09L4+/uwRA== =woOB -----END PGP SIGNATURE-----

Source:

Commencer la discussion: Venez écrire un commentaire dans le forum