{{tag>ppa wiki:tutoriel gestionnaire_de_paquets}}
----
====== Créer et administrer un PPA sur Launchpad ======
Ce tutoriel indique comment créer et administrer un PPA sur Launchpad dans le but de créer et fournir des paquets de votre logiciel à la communauté. Dans ce tutoriel, nous utiliserons le programme [[:freetuxtv|FreetuxTV]] comme exemple.
Il est recommandé d'avoir lu la page de présentation sur les [[:ppa|PPA (Personal Package Archives)]].
===== Pré-requis =====
* Disposer des [[:sudo|droits d'administration]].
* Disposer d'une connexion à Internet configurée et activée.
* [[:tutoriel:comment_installer_un_paquet#paquet_present_dans_les_depots|Avoir installé les paquets]] suivants : **[[apt>debhelper,cdbs,lintian,build-essential,fakeroot,devscripts,dh-make,dput|debhelper cdbs lintian build-essential fakeroot devscripts dh-make dput]]**.
===== Création d'un compte Launchpad =====
La première étape consiste avant tout à vous créer un compte sur [[https://launchpad.net/|Launchpad]].
==== Signature du code de conduite ====
Lorsque votre compte est créé, vous devez [[:signer_le_code_de_conduite|signer le code de conduite de Lanchpad]]. Ceci consiste en la récupération d'un certificat que vous devez signer avec une clé privée. Puis vous devez téléverser le code de conduite signé sur le serveur de Launchpad.
La procédure pour créer une clé PGP se trouve ici : [[https://help.launchpad.net/YourAccount/ImportingYourPGPKey|ImportingYourPGPKey]] (anglais)
Une fois que vous avez renseigné l'empreinte de votre clé, retournez sur les paramètres de votre compte Launchpad.
Suivez les étapes pour signer le code de bonne conduite.
Là, le plus pénible est fini. ;-)
===== Création du PPA =====
Une fois le code de conduite signé, vous pouvez créer un PPA depuis votre compte.
Il y a plusieurs types de PPA que vous pouvez créer :
* **Personnel** : Vous pouvez créer un PPA dont vous serez le seul gestionnaire.
* **Équipe (team)** : Vous pouvez créer une équipe et créer un PPA pour cette équipe. De cette façon, vous pourrez être plusieurs à l'administrer.
* **Projet** : Vous pouvez aussi créer un projet, et utiliser aussi le dépôt [[:bzr|Bazaar]] et le système de suivi de bogues (//bug tracker//) pour gérer votre projet au complet, comme avec Google Code ou SourceForge. Vous pourrez ainsi gérer un PPA avec votre équipe.
===== Création du paquet source =====
Vous aller devoir préparer les sources du paquet à envoyer à Launchpad.
La procédure est celle de la création d'un paquet classique : [[tutoriel:creer_un_paquet#creation_du_paquet_source|Création d'un paquet source]].
En résumé :
Commencez par récupérer les sources de FreetuxTV, et les extraire. Dans un [[:terminal]] :
wget http://freetuxtv.googlecode.com/files/freetuxtv-0.5.0.tar.gz
Renommez l'archive **tar.gz** en **orig.tar.gz** comme ceci (très important) (avec le « _ » à la place du « - » d'origine) :
mv freetuxtv-0.5.0.tar.gz freetuxtv_0.5.0.orig.tar.gz
Extraire l'archive et aller dans le répertoire créé :
tar xvzf freetuxtv_0.5.0.orig.tar.gz
cd freetuxtv-0.5.0
Créer le squelette du paquet source :
dh_make -e votreaddresse@email.tld -s -y
[[:tutoriel:comment_modifier_un_fichier|Éditer les fichiers]] suivants dans le dossier **debian** qui a été créé :
* **changelog** : Mettez à jour les informations du logiciel, la version du paquet et la distribution, le détail de la modification (par rapport au paquet précédent) et les informations de l'empaqueteur (vous) :
freetuxtv (0.5.0-0ubuntu1) lucid; urgency=low
* Initial release
-- Prénom NOM Tue, 20 Jul 2010 23:20:08 +0200
Le n° de version à mettre dans le changelog est composé suivant cette norme :
-ubuntu
* upstream_version : la version du logiciel (ici 0.5.0)
* debian_version : la version du paquet chez debian (le paquet n'existe pas chez debian donc 0)
* ubuntu_version : la version du paquet chez ubuntu (on fait la première version de notre paquet donc 1)
* **copyright** : Mettez à jour les noms d'auteurs et le type de licence :
This package was debianized by Prénom NOM on
Tue, 20 Jul 2010 23:20:08 +0200.
It was downloaded from http://code.google.com/p/freetuxtv/
Upstream Author(s):
Prénom NOM
Copyright:
Copyright (C) 2010 FreetuxTV
AUTEUR
License:
GNU General Public License v3
The Debian packaging is (C) 2010, Prénom NOM and
is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
# Please also look if there are files or directories which have a
# different copyright/license attached and list them here.
* **control** : Mettez à jour les dépendances requises pour compiler votre paquet et les informations sur le programme. Pour FreetuxTV on a :
Source: freetuxtv
Section: video
Priority: extra
Maintainer: Prénom NOM
Build-Depends: vlc, libatk1.0-0 (>= 1.20.0), libc6 (>= 2.3.6-6~), libcairo2 (>= 1.2.4), libcurl3 (>= 7.16.2-1), libdbus-1-3 (>= 1.0.2), libdbus-glib-1-2 (>= 0.74), libfontconfig1 (>= 2.4.0), libfreetype6 (>= 2.2.1), libglib2.0-0 (>= 2.16.0), libgtk2.0-0 (>= 2.12.0), libnotify1 (>= 0.4.4), libnotify1-gtk2.10, libsqlite3-dev, libpango1.0-0 (>= 1.14.0), libsqlite3-0 (>= 3.4.2), libvlc0-dev, libnotify-dev, libgtk2.0-dev, libdbus-glib-1-dev, libglib2.0-dev, libcurl4-openssl-dev, libvlc0 (>= 0.8.6), libvlc0 (< 0.9.0), libxml2 (>= 2.6.27), debhelper (>= 5), autotools-dev, intltool, libtool
Standards-Version: 3.7.2
Homepage: http://code.google.com/p/freetuxtv/
Package: freetuxtv
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: Internet television channels player
Watch TV on your PC from free WebTV channels or with your ISP television service.
La listes des dépendances est souvent indiquée dans le README des sources, elles doivent également être installées sur votre système pour ne pas avoir d'erreur durant l'utilisation de ''debuild''.
Une fois que tout est OK, on construit le paquet source afin de le télécharger sur Launchpad :
debuild -S -sa -d
===== Envoi des sources pour la construction d'un paquet ====
Une fois le paquet source créé, il ne nous reste plus qu'à le télécharger sur le serveur de Launchpad. A la fin de l'envoi vous recevrez un courriel (à l'adresse indiquée dans le changelog) pour vous indiquer si la création du paquet est acceptée ou non.
Il existe plusieurs méthodes :
==== Envoi par FTP ====
Créez un fichier **~/.dput.cf**, avec comme contenu :
[ppa_freetuxtv]
fqdn = ppa.launchpad.net
method = ftp
incoming = ~freetuxtv/freetuxtv/ubuntu/
login = anonymous
allow_unsigned_uploads = 0
**incoming** représente la racine du chemin d'accès à votre PPA sur le serveur de launchpad (pour FreetuxTV, le chemin est http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu/)
Puis pour envoyer le paquet, il faut utiliser la commande **dput**, sur le fichier changelog.
dput ppa_freetuxtv freetuxtv_0.5.0-0ubuntu1_source.changes
Le deuxième paramètre correspond au nom de la configuration dans le **~/.dput.cf**.
==== Envoi direct avec dput ====
Il suffit d’exécuter la commande suivante (ne fonctionne que sur les distributions récentes) :
dput ppa:freetuxtv/freetuxtv freetuxtv_0.5.0-0ubuntu1_source.changes
===== Mise à jour d'un paquet =====
Après avoir réussi l'intégration du premier paquet, vous avez aussi la possibilité de facilement mettre à jour la version d'un logiciel.
Admettons que la version 0.5.1 de FreetuxTV sorte.
Tout d’abord, [[:ppa|ajoutez votre dépôt PPA]] à vos sources de logiciels.
deb http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu lucid main
deb-src http://ppa.launchpad.net/freetuxtv/freetuxtv/ubuntu lucid main
Ensuite, récupérer les sources du paquet de la version courante dans les dépôts (0.5.1) :
apt-get source freetuxtv
Ceci permet de récupérer la dernière version du changelog et du fichier control.
Puis téléchargez les sources de la nouvelle version de FreetuxTV, et préparer-la comme précédemment :
wget http://freetuxtv.googlecode.com/files/freetuxtv-0.5.1.tar.gz
mv freetuxtv-0.5.1.tar.gz freetuxtv_0.5.1.orig.tar.gz
tar xvzf freetuxtv_0.5.1.orig.tar.gz
cd freetuxtv-0.5.1
La différence est qu'au lieu de régénérer le squelette, on va se baser sur celui de la version précédente :
cp -r ../freetuxtv-0.5.0/debian .
Et on met à jour le numéro de version :
dch -v 0.5.1-0ubuntu1
Le changelog ressemble alors à ça :
freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low
* Updating to upstream version 0.5.1
-- Prénom NOM Thu, 22 Jul 2010 22:30:20 +0200
freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low
* Initial release
-- Prenom NOM Tue, 20 Jul 2010 23:20:08 +0200
Si les dépendances ont changé, n'oubliez pas de mettre à jour le fichier **control**.
Enfin on finit la construction du paquet :
debuild -S -sa
Il ne reste plus qu'à le télécharger sur le serveur de Launchpad.
===== Ré-intégrer un paquet dont la construction a échoué =====
Imaginons maintenant que la construction de votre paquet ait échoué, par exemple à cause d'une dépendance non satisfaite.
Il suffit de modifier les sources du paquet et de mettre à jour la version.
Lancez la commande suivante pour modifier le changelog :
dch -i
La commande met à jour le numéro de version ce qui donne quelque chose comme ça :
freetuxtv (0.5.1-0ubuntu2) lucid; urgency=low
* Updating to upstream version 0.5.1
-- Prénom NOM Thu, 22 Jul 2010 22:30:20 +0200
freetuxtv (0.5.1-0ubuntu1) lucid; urgency=low
* Updating to upstream version 0.5.1
-- Prénom NOM Thu, 22 Jul 2010 22:30:20 +0200
freetuxtv (0.5.0-0ubuntu1) lucid; urgency=low
* Initial release
-- Prénom NOM Tue, 20 Jul 2010 23:20:08 +0200
Notez qu'ici c'est le ubuntu_version qui a été incrémenté, pour indiquer qu'on a réalisé une nouvelle version du paquet pour Ubuntu.
Ensuite, corrigez alors vos fichiers posant problème comme le fichier **control**.
Puis une fois que tout est OK, reconstruisez le paquet source pour le télécharger :
debuild -S -sa
A noter que si votre fichier source //freetuxtv_0.5.0.orig.tar.gz// est volumineux. Enlevez le **-sa** pour ne pas renvoyer le fichier que le serveur a déjà lors de l'up avec //dput//. FIXME //Pas clair...//
===== Conclusion =====
Voila, vous savez maintenant administrer un PPA et créer des paquets sur celui-ci !
===== Problèmes connus=====
=== Erreur lors de la signature ===
Ce qui s'affiche dans votre terminal après un **debuild -S -sa**
Now signing changes and any dsc files...
signfile paquet_1.0.0-0ubuntu1ppa~precise1.dsc Prénom N.
gpg: « Prénom N. » a été ignoré: la clé secrète n'est pas disponible
gpg: /tmp/debsign.IDpnTP7t/paquet_1.0.0-0ubuntu1ppa~precise1.dsc: clearsign failed: la clé secrète n'est pas disponible
debsign: gpg error occurred! Aborting....
debuild: fatal error at line 1269:
running debsign failed
Solution:\\
debuild -S -sa -k<12345678>
En remplaçant **<12345678>** par votre propre clé. La seconde partie de //ABCED/12345678//
===== Voir aussi =====
* **(en)** [[https://help.launchpad.net/YourAccount/ImportingYourPGPKey|Importer sa clé]]
* **(fr)** [[https://openclassrooms.com/courses/creer-un-depot-launchpad|Tuto complet]]
----
//Contributeurs principaux : [[:utilisateurs:SaiyanRiku]].//