# Mkd (Extracteur de documents)/Dépôt parrainé du paquet ''original'' mkd-131215

       Cette page a été optimisée pour "Version imprimable"
Les paquets d'installation des logiciels pour les systèmes d'exploitation linux permettent de sécuriser les systèmes grâce à des clés numériques. Ils permettent aussi de faciliter l'installation des applications.
Un paquet original est le premier paquet d'une série. Le paquet natif 131215 a été créé pour un nouveau dépôt ppa (Personnal packages) personnalisé par l'équipe de maintenance de l'EELL (Éditeurs européens de logiciels libres)

## Créer la hiérarchie des fichiers et répertoires de travail
### Répertoires

* ~Packaging/mkd/mkd-131215/ répertoire de travail qui contient :
* les fichiers de commandes Make-new-ppa, Buid-all, Rebuild-all.
* le répertoire origine ./mkd-0~131215 Contiendra le Makefile de création du paquet et les documents README, NEWS, etc.
* le répertoire des sources ./mkd-0~131215/src Contiendra tous les fichiers nécessaires à la compilations des sources
    4. le répertoire des binaires et des données ./mkd-0~131215/usr On pourra prévoir de les créer avec un Makefile ou les placer dores et déjà dans la hiérarchie 'usr' lorsque ces fichiers ne nécessitent pas de nouvelle compilation : les manuels, langues, icônes etc. :
Notez que :
* le seul fichier qui nécessite d'être mis à jour et placé dans le répertoire usr/bin/, est le binaire mkd adapté au processeur. (i386, amd64, ...)

## Création du sous répertoire debian

Le répertoire ./mkd-0~131215/debian est créé à l'aide du fichier de commande 'Make-new-ppa' que nous avons placé au dessus du répertoire origine pour simplifier la création des divers paquets.

### Options dh_make

    -c GPL; general public licence (gpl2, gpl3, lgpl, lgpl2, lgpl3, artistic, apache, bsd ou mit)
    -e adresse électronique des mainteneurs
    -s seulement le binaire
    -n natif, ne pas générer d'archive .orig
    -f mkd-0~131215.tar.gz Ce sera l'archive originale
    -r CDBS directive pour créer le fichier de commande 'rules'

## Fichiers nécessitant une explication
### debian/changelog

Notez que :
* à la création, l'option -n a initialisé la version "* Initial Release"
* nous avons modifié la première ligne pour préciser la version saucy (ubuntu 13.10)
* ici, dans ce cadre, l'adresse de courriel est masquée pour éviter les spams

### debian/control

Notez que :
* le créateur de fichier a bien fait son travail ...
* nous avons ajouté la 'Description' qui sera affichée à l'installation par le gestionnaire d'archives
* d'autres champs peuvent être indispensables
* si le copyright n'apparaît pas à l'installation avec le gestionnaire d'archives il est possible, si c'est indispensable, de l'ajouter à la fin la description longue.

### debian/copyright

Notez que :
* l'option -c GPL a automatiquement créé la licence GPL-3+
* nous avons ajouté les droits de copie et les licences depuis l'origine du fichier
* ce droit de copie va apparaître dans les docs '/usr/share/doc/mkd/. ' et n'est pas vraiment nécessaire si on propose les fichiers HISTORY ou/et COPYING ou/et AUTHORS avec les droits détaillés.

### debian/rules

Notez que :
* le fichier a été créé par l'option '-r CDBS'
* nous avons ajouté les commentaires de la notice
* notre nettoyeur s'appele 'mrproper' dans le Makefile d'empaquetage. on aurait pu utiliser le traditionnel 'clean'
* mkd est l'exécutable qu'il faut générer pour chaque configuration de processeur
* install va copier les fichiers ./mkd-0~131215/usr/* dans le répertoire ./mkd-0~131215/debian/mkd/usr/* .
A titre indicatif, il est possible d'utiliser une variante install DESTDIR=debian/mkd à condition de le prévoir; cette solution permet de créer un fichier temporaire de test avec install DESTDIR=debian/tmp/ (Pas vraiment utile !)

### debian/doc

les fichiers NEWS à INSTALL seront copiés dans le répertoire ./mkd-0~131215/debian/mkd/usr/share/doc/mkd/ avant d'être recopié dans /usr/share/doc/mkd/. à l'installation du paquet.
Notez que :
* ces fichier sont dans le répertoire origine
* ces fichiers ne sont pas tous indispensables. Les fichiers intéressant sont le plus souvent
    NEWS qui sont les nouveautés par rapport aux versions précédentes
    README qui sont les commentaires qui concernent ce paquet.
Vous pouvez ajouter :
* AUTHORS avec le droit de copie spécial à chaque contributeur
* COPYING même chose que Copyright, mais peut spécifier des particularités notamment si une partie du logiciel contient une autre source.
* HISTORY décrit l'historique et les péripéties du logiciel si il y a lieu
* INSTALL est généralement créé par un 'autotool'. Dans ce cas in est inutile de l'intégrer dans les docs, Dans notre cas on peut y préciser une autre manière d'installer le logiciel sans le paquet (qui ne sera donc pas automatiquement mis à jour)
On peut ajouter d'autres fichiers tels que :
* SURVEY souvent pour obtenir un soutien financier, mais ce peut être aussi un appel à contribution technique
* TRANSLATIONS demande d'aide pour traduire les messages et les manuels.
* ...etc.

### debian/postinst

Ce fichier sera exécuté après l'installation du paquet et doit mettre les bases de données à jour.
Notez que :
* Si le manuel man1 du logiciel a été installé on peut aussi ajouter, en cas de nécessité, la mise à jour de la base de données 'whatis'. C'est en principe automatique ....

### debian/postrm

Ce fichier sera exécuté après la désinstallation de l'application pour mettre les bases de données à jour.

### Makefile d'empaquetage

* Le fichier le plus important du répertoire origine est le Makefile

## Création du paquet (debuild)

Notez que :
* ceci est la phase finale
    debuild -S -sa -k49E6B949 va créer les fichiers nécessaires à la recompilation des paquets sur le dépôt.
    dput ppa:jean-paul-louyot/mkd mkd_0~131215-1_source.changes. Il faut attendre quelque temps avant que le résultat nous parvienne en positif ou échec
    debuild -i -us -uc -b va créer un paquet local .deb

## Échecs et mise à jour de paquets

Créer et administrer un dépôt sur launchpad

### Éviter les échecs

ATTENTION : Le dépôt va utiliser l' archive d'origine dans toute la suite des procédures de mises à jour. Si vous avez modifié le Makefile par exemple, il est nécessaire de tout reprendre ou de faire un patch, car l'archive d'origine du dépôt ne va pas contenir le même Makefile, donc pas la même somme de contrôle. Il est aussi possible de conserver, dans une archive native, le répertoire d'origine avec son sous répertoire debian; cela permet de conserver une mémoire des mises à jour .

#### Il est à noter que

* les archives d'origine de série ne contiennent pas le répertoire debian
* le répertoire debian est contenu dans une archive séparée .debian.tar.gz

#### Exemple de noms d'archives

* Archive du répertoire d'origine : <répertoire>-<version>.tar.gz
* Archive d'origine native : <répertoire>_<version>.tar.gz
* Archive d'origine de série : <répertoire>_<version>.orig.tar.gz
* Archive d'origine de série : <répertoire>_<version>-<n>.orig.tar.gz où <n> est une suite successive de série 1, 2, 3, etc.
Pour faire les essais il est préférable de lancer la commande 'Rebuild-all' (Clara pour le chiffrage du transfert)
Pour éviter les échecs : Vérifier si tout se passe bien avant d'envoyer le fichier au dépôt.

### Échecs

Le transfert au dépôt ne se passe pas toujours très bien, il est rejeté. Il est nécessaire de corriger la construction du paquet.
Les rejets sont souvent dus aux commandes incluses dans le fichier Makefile.
Évitez d'utiliser des commandes susceptibles de renvoyer une valeur différente de zéro.
* Ecrivez rm -f <fichier> plutôt que rm <fichier>. rm -f renvoie zéro même si <fichier> n'existe pas.
* Supprimez le binaire dans la dépendance clean, faute de quoi le binaire ne sera pas mis à jour pour un autre processeur bien qu'il n'y ait aucune erreur de syntaxe.
* Vérifiez la validité des dépendances. N'écrivez pas clean : <fichier> ça n'a pas de sens.
* Veillez à ce que le contenu du répertoire soit propre, identique après compilation :
      * De telle sorte que la somme de contrôle du répertoire soit la même après compilation; que tous les fichiers créés soient effacés.
      * Effacer tous les fichiers '.o' (rm -f *.o) par exemple, ainsi que le nouvel exécutable qui a déjà été copié dans debian/mkd/usr/bin/
Launchpad renvoie des informations à l'auteur du transfert (Erreurs communes, la raison de l'échec, etc.)
    Rejected: Unable to find distroseries: unstable
       Dans debian/changelog il faut remplacer unstable par une version d'ubuntu : precise, ou version actuelle
    Rejected: Unable to find section: unknown
       Dans debian/control il faut remplacer unknown par la 'Sous-section' concernée : devel pour nos applications
Si vous renvoyez le fichier tel quel avec la correction, il sera refusé si le fichier .upload se trouve dans votre répertoire:
    <UPLOADE_FILE> already exists in <LOCATION>
    Rejected because the logfile <package>_source on <host> .upload exist. Just remove the .upload file and re-run dput, or invoke dput with the flag -lf (-l run lintian before the upload; -f force an upload of an already uploaded package)
    Il faut supprimer le fichier .upload ou renvoyer le paquet corrigé avec les option -lf dput -lf [host [:arg]] package.changes
    Remarque : On peut éviter l'écriture du fichier .upload avec -option -U : dput -U
Résumé en cas d'échec :

#### Si vous ne modifiez que les fichiers du répertoire debian dans une série

    Vous pouvez renvoyer les fichiers reconstruits après avoir effacé le fichier .upload
    → Dans une série, l'archive du répertoire debian est séparée. Suffixe: .debian.tar.gz

#### Si vous modifiez un fichier du répertoire origine, contenant aussi le répertoire debian, il faut reconstruire le paquet !

* recharger l'original
* régénérer la source
* faire un patch ou reconstruire le paquet avec un numéro de version supérieur à la version en échec
* tester le transfert avec l'option dput -o, débugger avec l'option dput -d, simuler avec dput -s
* transférer le paquet source avec les changements (source.changes) avec dput -lf
* accessoirement, supprimer la version en échec sur launchpad. Cela peut arriver si on change de version Ubuntu dans le fichier changelog. (ATTENTION : La version n'apparaît plus, mais n'est jamais complètement effacée.)

### Mise à jour de paquets

* Voir Mise à jour de paquets

#### Cas traités

    1 L'intention d'empaqueter (création de paquets multiples)
    2 Patch (rustine)
    3 Mettre à jour (création de paquets binaires simples)
    4 Nouvelle version (Paquets natifs)
    5 Dépôts sur Launchpad

## Notes et références

* Notes :
    Discussions autour de l'empagetage debian et rpm ( mot de passe antispam : mkd )
* Références :
* ↑ https://launchpad.net/~jean-paul-louyot/+archive/mkd
* ↑ http://www.debian.org/doc/manuals/maint-guide/dreq.fr.html
* ↑ Créer et administrer un dépôt sur launchpad
* ↑ https://fr.wikibooks.org/wiki/Mkd_(Extracteur_de_documents)/Dépôt_parrainé_du_paquet_''original''_mkd-131215/Mise_à_jour_de_paquets