Nous voici enfin dans la partie du tutoriel où on peut tester si tout tourne. Le seul problème sera le nombre de bugs qui arriveront.
Si vous avez bien suivi mes indications, le paquet se construira et s'installera sans problème. Mais si vous vous êtes trompés, vous devrez débugger en lisant bien les messages d'erreur de la console.
La plupart des bugs proviendront sûrement de problèmes dus à votre position dans le Makefile.am. Ajoutez /bin/pwd dans les commandes de l'installateur pour savoir où il se trouve entre deux commandes durant l'installation, si vous pensez qu'un bug pourrait provenir d'un chemin relatif vers un fichier incorrect. Ainsi, mon fichier install-sh n'appelle pas le projet.pro par rapport à son chemin relatif mais par rapport à celui du Makefile.am.
Faites également attention au « versionnage » de votre package (si vous mettez à jour, changez bien toutes les versions car Launchpad refusera des paquets dont la version existe déjà ou est antérieure à la version compilée actuelle) et aux informations que vous communiquez dans control et changelog.
Des bugs, dès lors non signalés, peuvent également survenir si certains de vos fichiers sont mal placés dans datas et s'installent donc mal depuis la racine de l'utilisateur.
Pour les consignes aux victimes des affreux bugs, c'est fini. Passons donc à ce que vous attendez tant !
Nous allons
copier tout ce qui se trouve à la racine du projet, créer un dossier
test dans lequel nous mettrons un dossier
monProjet-0.1.0 ou le nom de votre projet et sa version. Dans ce dernier dossier, nous collons tout ce qu'on a copié précédemment.
Voilà. Ainsi, si vous avez quelques problèmes lors de vos tests, vous gardez la version originale à portée de main.
Nous sommes donc dans ce nouveau dossier dans la console et nous allons lancer la configuration automatique de ce dont nous aurons besoin (grâce au
configure.ac que nous avons créé tout à l'heure et qui va devenir un fichier
configure).
Code : Console | >aclocal
>autoheader
>automake --gnu --copy --add-missing
>autoconf |
Vous noterez que
automake va créer les fichiers nécessaires à l'installation que nous aurions oubliés.
Si un problème survient avec automake, les makefiles sont défectueux et à revoir. Si autoconf échoue, ce sera dû à config.ac.
Voilà !
configure existe, et, si tout va bien,
Launchpad devrait faire :
Code : Console
Et tout sera installé.
D'ailleurs, je vous invite à utiliser ces commandes afin de vérifier que tout s'installe bien. Observez ensuite le dossier
debian et, si tout a été copié correctement ainsi que le binaire, c'est déjà un bon point.
Sinon, il faudra passer en mode
débug !
Une fois l'installation correctement effectuée dans le
debian, vous pouvez effacer votre répertoire
monProjet-0.1.0 puis recopier à nouveau les données du répertoire et relancer toutes les commandes jusque
autoconf.
Nous avons donc un programme compilable mais nous devons le mettre sous forme d'un paquet pour
Launchpad.
Il va falloir taper ceci dans le terminal :
Code : Console | >debuild -S -sa --lintian |
-S permet de conserver les sources et
-sa signifie que vous n'améliorez pas une source existante mais que vous en créez une.
--lintian permet d'avoir quelques informations plus claires sur les étapes afin de mieux repérer les bugs.
Pour plus d'informations, lisez le
man debuild.
Voilà, le paquet est fait !
Nous pouvons l'uploader sur Lau… Ah mais non !
Launchpad peut attendre des heures et des heures avant de compiler vos sources (

), il vaudrait mieux vérifier que tout est bien installable avant de leur envoyer.
Nous allons donc utiliser
pbuilder.
Pour ce faire, voici la marche à suivre :
Code : Console | >cd ..
>sudo pbuilder build monProjet_0.1.0.dsc |
C'est parti ! Il va simuler l'installation des paquets, la compilation et la création du .deb tranquillement.
Si vous ne constatez aucun message d'erreur, vous pouvez vous rendre dans
/var/cache/pbuilder/result où un .deb vous attendra.
Il n'y a plus qu'à l'installer pour vérifier que tout soit correct :
Code : Console | >cd /var/cache/pbuilder/result
>sudo dpkg -i monProjet_0.1.0.deb
>monProjet |
Simplement, nous nous rendons là où se situe le .deb, nous l'installons puis nous testons la commande
monProjet qui doit fonctionner si un binaire monProjet se trouve dans
/usr/bin.
Si tout va bien, vous pouvez également cliquer sur
Applications › Jeux et
monProjet sera là.
Sinon, quelque chose n'a pas été et il faut enfiler sa panoplie de débuggeur pour trouver où ça coince.
Allez hop, on nettoie tout maintenant pour que ça fonctionne. Lançons donc un :
Code : Console | >sudo dpkg -r monProjet_0.1.0.deb |
Et hop, le voilà désinstallé.
Revenons dans notre dossier
test. Un fichier terminant par _source.changes devrait également être présent. C'est celui-là que nous enverrons à
Launchpad.
Nous allons donc écrire :
Code : Console | >dput ppa:jeandumoulin/monProjet monProjet_0.1.0_source.changes |
Et hop, si tout se passe bien, il a tout téléchargé.
Il vous reconnaîtra grâce à la signature que nous avons faite avec notre clé PGP sur le paquet lors de l'utilisation de debuild (
« ah ben oui, c'est pour ça qu'il fallait un mot de passe »
).
Vous allez recevoir un mail qui vous dira si le paquet est accepté ou refusé et les informations sur ce refus. En principe, si vous avez bien suivi les étapes ci-dessus, il vous acceptera sans problème.
Une fois le mail d'acceptation reçu, rendez-vous sur votre page
Launchpad, dans le dépôt monProjet que nous avions créé et, dans la barre de droite, cliquez sur
View package details.
Vous arriverez sur une page de ce genre :
Vous y trouverez toutes les informations sur votre paquet, je vous laisse regarder. Juste un petit détail intéressant : si, dans
Source, vous cliquez sur la petite flèche, toutes les informations propres au paquet vont défiler, dont les informations sur la construction du .deb pour architecture 32 et 64 bits.
En cliquant dessus, vous aurez une idée de la priorité et le temps qu'il reste avant création du
.deb . Si un problème a lieu lors de sa création, vous pourrez également avoir accès aux logs mais, vu que nous avons tout testé en interne, ça devrait aller !
