# Annexes de wikibooks/Les paquets

Cet exercice a pour but de se familiariser avec la construction d'un paquet debian. Ce paquet est construit à titre d"essai Voyez la construction d'un paquet mkd officiel (version 131215)
Cette page a été optimisée pour la "Version imprimable". Si vous désirez imprimer cette page assurez-vous que les textes déroulants ne sont pas masqués.
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.
La description qui suit ne conduit pas à la construction d'un paquet sécurisé

## Créer un paquet debian

La lecture de la documentation sur le sujet est si obscure qu'il est bien difficile de créer son premier paquet. L'objet de cet article est de voir, au travers d'un exemple simple, comment sortir de l'obscurité.
Le paquet debian que nous allons créer ne sera pas sécurisé et ne pourra pas être installé par le gestionnaire de la logithèque. Il sera simplement installé et désinstallé par des commandes shell.

## Le paquet

* L'idée de la démonstration est de créer un utilitaire très simple à l'usage des programmeurs avec l'aide de la commande mkd.
* Nous nous sommes inspirés de l'article myecho pour vous proposer cette commande que nous appellerons mkmaintainerdocu (Make maintainer documentation)
* Cette commande n'a pas pour ambition de persister dans les répertoires des commandes binaires (/bin, /usr/bin, etc.)

### Que doit-il faire ?

* créer un fichier de projet pour une application écrite en langage C
* générer le fichier d'entête de l'application "<projet>.h
* générer la documentation des fonctions
* générer la documentation destinée aux programmeurs
* Si possible afficher les fichier à la fin de leur création ou modification.

### Choix de l'exécutable

Le plus simple est de créer une commande shell bash, facile à maîtriser et inspirée par myecho cité dans les références.

### Structure de l'archive projet-mkmaintainerdocu.tar.gz

"./" est le répertoire conteneur que nous pouvons appeler projet-mkmaintainerdocu Il contient nos utilitaires et les fichiers d'installation. "./mkmaintainerdocu" est le répertoire racine de notre paquet. Ce qui nous intéresse se trouve DANS ce répertoire.
Créer le contenu de l'archive. Les fichiers à créer sont décrits ci-après :
 ./mkmaintainerdocu/usr
 ./mkmaintainerdocu/usr/share
 ./mkmaintainerdocu/usr/share/doc
 ./mkmaintainerdocu/usr/share/doc/changelog.debian - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/copyright - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/changelog - fichier à créer
 ./mkmaintainerdocu/usr/share/doc/README - fichier à créer
 ./mkmaintainerdocu/usr/local
 ./mkmaintainerdocu/usr/local/bin
 ./mkmaintainerdocu/usr/local/bin/mkmaintainerdocu - fichier à créer
 ./mkmaintainerdocu/DEBIAN
 ./mkmaintainerdocu/DEBIAN/postrm - fichier à créer
 ./mkmaintainerdocu/DEBIAN/control - fichier à créer
 ./mkmaintainerdocu/DEBIAN/postinst - fichier à créer
 On y ajoutera les utilitaires décrits ci-après :
 ./empaqueter - pour créer le paquet - fichier à créer
 ./installer - pour installer l'application - fichier à créer
 ./desinstaller - pour désinstaller le paquet - fichier à créer
 ./KONSOLE - utilitaire pour créer une console locale - fichier à créer
 Fichiers qui seront créés à l'empaquetage :
 ./mkmaintainerdocu.deb

#### mkmaintainerdocu

* notre fichier shell qui va exécuter nos commandes de création des documents

#### postrm

* shell exécuté après la suppression du paquet (si nécessaire)
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...

#### control

* fichier nécessaire à la construction du paquet
* Le classement des paquets doit être choisi dans une des sections : admin, devel, doc, graphics, libs, misc, net, otherofs, pyton, shells, sound, text, utils, x11.

#### postinst

* shell exécuté après la création du paquet (si nécessaire)
* cet exécutable peut exécuter des mises à jour comme 'cat', 'whatis', et d'autres ...

### Contenu extrait du paquet

* L'extraction recrée les répertoires avec la même structure.

## Tests

Boîte des tests

### Résultat des tests
#### Liste de l'archive myproject.tar.gz
#### Fichier d'entête (header)

project.h:

#### Directives de programmation et de tests

* project-functios-directives.txt

#### Manuel des fonctions

* project-functions-documentation

#### Document à l'usage des mainteneurs
## Sécurisation des paquets

Les paquets non sécurisés sont à proscrire.
Boîte de sécurisation des paquets

### Créer un nouveau paquet sécurisé

Make-new-ppa : Pour créer un dépôt ppa.
Il faut noter que toutes les options citées pour l'exécution de dh_make ne sont pas nécessaires. On peut supprimer la plupart des fichiers créés dans debian si on utilise une compilation simple de l'exécutable avec 'make'. Cependant, pour la portabilité sur d'autres machines avec des processeurs différents x86, amd64 etc. il est nécessaire de re-compiler l'exécutable; c'est le fichier exécutable 'rules' qui devra prendre en charge les différentes versions.

### Compilation et envoi au dépôt ppa:

* Build-and-put-to-ppa

## Suggestions

* Si vous utilisez souvent les mêmes codes d'extraction, vous pouvez créer un shell pour la maintenance dans le répertoire /usr/local/bin, sans pour cela créer un paquet ....
* Les paquets sont réellement utiles lorsque l'installation est complexe ou pour une meilleure sécurité par un dépôt officiel (Voir Launchpad)

## Liens utiles

Créer un paquet ubuntu
Liste 'complète' ? des pages décrivant l'utilisation des paquets sous Ubuntu

## Références

* ↑ http://alp.developpez.com/tutoriels/debian/creer-paquet/