Commit 8c8e6c77 authored by arpinux's avatar arpinux

update howto-packages

parent c7248150
......@@ -47,6 +47,11 @@ structure de l'environnement de dev handylinux
├──/repo : dépôt handylinux (la structure sera détaillée plus tard).
└──/repo.txz : archive sauvegarde du dépôt opérationnel en ligne.
utilisation de pbuilder
-----------------------
pour être 100% Debian, il faudrait utiliser pbuilder pour le développement et la construction des paquets.
c'est la méthode normée pour être sûr de choper les bonnes dépendances etc. bref. étant donné que le développement se fait sur une Debian du même type qu'HandyLinux et que tous les nouveaux paquets à maintenir sont en 'all.deb', nul besoin de pbuilder :)
Création d'un paquet
====================
processus de création d'un paquet *from scratch*
......@@ -54,10 +59,25 @@ processus de création d'un paquet *from scratch*
astuce : avant de nommer un paquet ou un script, prenez soin d'aller vérifier [dans les paquets Debian](https://www.debian.org/distrib/packages) si le nom n'est pas réservé.
astuce : lors du dh_make pour créer un paquet ou tout autre opération devscript, on peut préciser le nom et le mail du mainteneur par défaut dans le bashrc/zshrc :
`export DEBFULLNAME="prénom nom"`
`export DEBEMAIL="adresse mail"`
note: l'adresse renseignée ici sera celle utilisée pour la signature lors de l'intégration dans le dépôt.
c'est pour cette raison que je ne signe pas les paquets à la création, pas besoin :)
export DEBFULLNAME="prénom nom"
export DEBEMAIL="adresse mail"
note: l'adresse renseignée ici sera celle utilisée pour la signature du paquet et lors de l'intégration dans le dépôt.
astuce signature/authentification :
pour signer ses paquets et le dépôts, il faut bien sûr un clé GPG active (utilisez 'gpg-agent --deamon en début de session') et associée au mail pris en exemple ci-dessus.
pour vérifier votre clé, `gpg --list-keys` . repérez la clé associé à l'adresse renseignée dans votre bashrc/zshrc puis indiquez-la dans votre ~/.gnupg/gpg.conf :
# If you have more than 1 secret key in your keyring, you may want to
# uncomment the following option and set your preferred keyid.
default-key XXXXXXXX
enfin, déclarez votre clé dans le fichier de conf devsripts /etc/devscripts.conf ainsi :
DEBSIGN_KEYID=XXXXXXXX
*pour l'exemple, voici la construction détaillée du live-usb-creator de thuban et coyotus.*
......@@ -144,7 +164,7 @@ voici à quoi ressemble les sources avant l'édition des fichiers :
│   │   └── format
│   ├── liveUSBcreator
│   ├── liveUSBcreator.desktop ## ajout d'un lanceur d'application qui sera placé dans /usr/share/applications
│   ├── liveUSBcreator.png ## ajout d'une icône pour l'application qui sera placée dans /usr/share/pixmaps
│   ├── liveUSBcreator.png ## ajout d'une icône pour l'application qui sera placée dans /usr/share/icons
│   ├── Makefile ## ajout d'un Makefile qui gère l'installation et la suppression du paquet
│   └── manpage.1 ## déplacement du manuel au format standard
└── liveusbcreator_0.1.orig.tar.xz
......@@ -366,23 +386,164 @@ qui va vous permettre de visualiser le man, vérifier le bon fonctionnement, vé
construction du paquet
----------------------
la construction du paquet se fait avec la commande `debuild` . cependant, il faut que l'archive des sources corresponde au dossier des sources. ce qui n'est plus le cas dans notre exemple car nous avons édité les fichiers normés Debian, ajouté le lanceur etc. bref, il faut recompresser les sources. le format par défaut est 'nomdupaquet_version.orig.tar.xz' pour des sources 'nomdupaquet-version' . les mêmes sources servant pour les révisions (0.1-1; 0.1-2, 0.1-3 ...). des sources différentes seront utilisées lors du changement d'upstream (0.2 > 0.2-1, 0.2-2 ...)
la construction du paquet se fait avec la commande `debuild` qui est en fait un alias pour les outils de construction 'dpkg'. cependant, il faut que l'archive des sources corresponde au dossier des sources. ce qui n'est plus le cas dans notre exemple car nous avons édité les fichiers normés Debian, ajouté le lanceur etc. bref, il faut recompresser les sources. le format par défaut est 'nomdupaquet_version.orig.tar.xz' pour des sources 'nomdupaquet-version' . les mêmes sources servent pour les révisions (0.1-1; 0.1-2, 0.1-3 ...). des sources différentes seront utilisées lors du changement d'upstream (0.2 > 0.2-1, 0.2-2 ...)
donc depuis le dossier de developpement (liveUSBcreator) :
- compression des sources :
`tar cvJf liveusbcreator_0.1.orig.tar.xz liveusbcreator-0.1/`
- construction du paquet depuis les sources :
`cd liveusbcreator-0.1/ && debuild`
retour terminal :
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package liveusbcreator
dpkg-buildpackage: source version 0.1-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: source changed by arnault perret <arpinux@member.fsf.org>
dpkg-source --before-build liveusbcreator-0.1
dpkg-buildpackage: host architecture amd64
fakeroot debian/rules clean
dh clean
dh_testdir
dh_auto_clean
dh_clean
dpkg-source -b liveusbcreator-0.1
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building liveusbcreator using existing ./liveusbcreator_0.1.orig.tar.xz
dpkg-source: info: building liveusbcreator in liveusbcreator_0.1-1.debian.tar.xz
dpkg-source: info: building liveusbcreator in liveusbcreator_0.1-1.dsc
debian/rules build
dh build
dh_testdir
dh_auto_configure
dh_auto_build
make[1]: Entering directory '/home/arp/debdev/liveUSBcreator/liveusbcreator-0.1'
Usage: as root
make install : installs application
make uninstall: uninstalls application
make[1]: Leaving directory '/home/arp/debdev/liveUSBcreator/liveusbcreator-0.1'
dh_auto_test
fakeroot debian/rules binary
dh binary
dh_testroot
dh_prep
dh_auto_install
make[1]: Entering directory '/home/arp/debdev/liveUSBcreator/liveusbcreator-0.1'
install -d -m 755 -o root -g root /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/bin
install -d -m 755 -o root -g root /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/applications
install -d -m 755 -o root -g root /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/icons
install -d -m 755 -o root -g root /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/man/man1
install -m 755 -o root -g root liveUSBcreator /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/bin
install -m 644 -o root -g root liveUSBcreator.1 /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/man/man1
install -m 644 -o root -g root liveUSBcreator.png /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/icons
install -m 644 -o root -g root liveUSBcreator.desktop /home/arp/debdev/liveUSBcreator/liveusbcreator-0.1/debian/liveusbcreator/usr/share/applications
make[1]: Leaving directory '/home/arp/debdev/liveUSBcreator/liveusbcreator-0.1'
dh_installdocs
dh_installchangelogs
dh_installman
dh_icons
dh_perl
dh_link
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dpkg-gencontrol: warning: File::FcntlLock not available; using flock which is not NFS-safe
dh_md5sums
dh_builddeb
dpkg-deb: building package 'liveusbcreator' in '../liveusbcreator_0.1-1_all.deb'.
dpkg-genchanges >../liveusbcreator_0.1-1_amd64.changes
dpkg-genchanges: including full source code in upload
dpkg-source --after-build liveusbcreator-0.1
dpkg-buildpackage: full upload (original source is included)
Now running lintian...
W: liveusbcreator: new-package-should-close-itp-bug
Finished running lintian.
Now signing changes and any dsc files...
signfile liveusbcreator_0.1-1.dsc BE441FCF
You need a passphrase to unlock the secret key for
user: "arnault perret (arpinux) <arpinux@member.fsf.org>"
2048-bit RSA key, ID BE441FCF, created 2014-03-27
signfile liveusbcreator_0.1-1_amd64.changes BE441FCF
You need a passphrase to unlock the secret key for
user: "arnault perret (arpinux) <arpinux@member.fsf.org>"
2048-bit RSA key, ID BE441FCF, created 2014-03-27
Successfully signed dsc and changes files
- tar xz
- debuild
- debuild clean
`debuild` m'a demandé le mot de passe pour la clé BE441FCF. si vous n'avez pas configuré votre clé comme expliqué en début de howto, les fichiers ne seront pas signés.
vous pourrez toutefois les signer lors de l'intégration dans les dépôts.
**@finir**
résultat de la commande `debuild` : création du paquet et des fichiers pour les dépôts
├── liveusbcreator-0.1
│   ├── debian
│   │   ├── changelog
│   │   ├── compat
│   │   ├── control
│   │   ├── copyright
│   │   ├── files
│   │   ├── liveusbcreator ## dossier reproduisant l'architecture du paquet et des fichiers installés
│   │   │   ├── DEBIAN
│   │   │   │   ├── control
│   │   │   │   ├── md5sums
│   │   │   │   ├── postinst
│   │   │   │   └── postrm
│   │   │   └── usr
│   │   │   ├── bin
│   │   │   │   └── liveUSBcreator
│   │   │   └── share
│   │   │   ├── applications
│   │   │   │   └── liveUSBcreator.desktop
│   │   │   ├── doc
│   │   │   │   └── liveusbcreator
│   │   │   │   ├── changelog.Debian.gz
│   │   │   │   └── copyright
│   │   │   ├── icons
│   │   │   │   └── liveUSBcreator.png
│   │   │   └── man
│   │   │   └── man1
│   │   │   └── liveUSBcreator.1.gz
│   │   ├── liveusbcreator.debhelper.log
│   │   ├── liveusbcreator.postinst.debhelper
│   │   ├── liveusbcreator.postrm.debhelper
│   │   ├── liveusbcreator.substvars
│   │   ├── rules
│   │   └── source
│   │   └── format
│   ├── liveUSBcreator
│   ├── liveUSBcreator.1
│   ├── liveUSBcreator.desktop
│   ├── liveUSBcreator.png
│   └── Makefile
├── liveusbcreator_0.1-1_all.deb ## le paquet compilé
├── liveusbcreator_0.1-1_amd64.build ## les logs du build (le retour terminal)
├── liveusbcreator_0.1-1_amd64.changes ## description du paquet, spécificités, changelog, sommes de contrôle et signatures
├── liveusbcreator_0.1-1.debian.tar.xz ## archive des fichiers Debian
├── liveusbcreator_0.1-1.dsc ## fichier de description du paquet
└── liveusbcreator_0.1.orig.tar.xz ## sources du paquet
on termine avec un `debuild clean` qui permet de nettoyer le dossier des sources et de revenir à l'environnement de dev de départ.
remarques : `debuild` lance la commande `lintian` qui est l'outil de vérification des paquets Debian. dans cet exemple, lintian affiche un **W**arning, ce qui n'est pas grave en soi (là c'est parce que le premier commit doit cloturer un bug ... jamais compris pourquoi :) ).
prenez le temps de lire les avertissements et les erreurs lintian qui vous aideront à construire des paquets aux normes Debian, facilitant ainsi grandement la gestion des paquets grâce à apt ou aptitude :)
Modification d'un paquet
========================
processus de mise à jour d'un paquet présent dans les dépôts
- modifications
- dpkg-source --commit
- dch
- debuild
- debuild clean
- modifications : éditer les fichiers
- dpkg-source --commit : patcher les sources
- dch : déclarer les changements
- debuild : construction du paquet
- debuild clean : nettoyage des sources
**@finir**
......@@ -471,14 +632,6 @@ note: si la mise à jour n'est pas urgente, mater les logs du serveur pour conna
Remarques et astuces
====================
utilisation de pbuilder
-----------------------
pour être 100% Debian, il faudrait utiliser pbuilder pour le développement et la construction des paquets.
c'est la méthode normée pour être spur de choper les bonnes dépendances etc. bref. étant donné que le développement se fait sur une Debian du même type qu'HandyLinux et que tous les nouveaux paquets à maintenir qont en 'all.deb', nul besoin de pbuilder :)
signature
---------
les paquets ne sont pas signés à la construction. ils sont signés lors de l'intégration dans le dépôt.
**@finir**
......@@ -495,7 +648,7 @@ Exemples de fichiers
Architectures: i386 amd64 source
Components: main
Description: HandyLinux main repository
SignWith: yes
SignWith: yes (vous pouvez indiquer ici votre clé xxxxxxxx)
Origin: handylinux.org
Label: handylinux repository
......@@ -528,4 +681,4 @@ alternative : ajouter à la clé actuelle, une clé associée à 'dev@handylinux
des questions ?
---------------
@devs : posez vos questions ici ou en commentaires, ça étoffera le tuto :P
\ No newline at end of file
@devs : posez vos questions ici ou en commentaires, ça étoffera le tuto :P
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment