{{tag>tutoriel administration paquet}}
----
====== Créer un méta-paquet ======
===== L'intérêt d'un méta-paquet =====
L'utilisation d'un méta-paquet se révèle intéressante dans (au moins) deux cas :
* pour résoudre un problème de nom de paquets. Par exemple, « paquet_A » nécessite l'installation de « paquet_B », mais ce dernier a été renommé en « paquet_B2 ». Un méta-paquet « paquet_B » (vide) installera « paquet_B2 » (contenant le logiciel) et résoudra l'absence de dépendance pour « paquet_A » ;
* pour installer //via// un unique paquet plusieurs autres paquets.
C'est le second cas que nous aborderons ici.
===== Création d'un méta-paquet (dummy package)=====
==== Installer « equivs » ====
[[:tutoriel:comment_installer_un_paquet|Installez]] le paquet **[[apt>equivs|equivs]].**
==== Créer le modèle ====
:!: Il faut se placer dans un répertoire dont le nom ne contient pas d'espace. :!:
Nous vous proposons de créer un méta-paquet « musicedit » permettant d'installer quelques logiciels d'édition de partitions.
Pour générer un fichier modèle (fichier de contrôle), qui servira de base à la construction du paquet, exécutez :
equivs-control musicedit
Un fichier « musicedit » a été créé dans le répertoire courant. [[:tutoriel:comment_editer_un_fichier|Ouvrez-le]] avec votre éditeur de texte favori. Il doit ressembler à ça :
Section: misc
Priority: optional
Standards-Version: 3.5.10
Package:
Version:
Maintainer: Your Name
Pre-Depends:
Depends:
Recommends:
Suggests:
Provides: <(virtual)package>
Architecture: all
Copyright:
Changelog:
Readme:
Extra-Files:
Description:
long description and info
.
second paragraph
Il ne reste plus qu'à remplir tout ça correctement…
==== Les éléments du fichier de contrôle ====
=== Les éléments essentiels ===
Tous les éléments ne sont pas essentiels, et certains peuvent être supprimés. Mais veillez à renseigner ceux-ci :
^Section | Décrit la section dans laquelle se trouvera le paquet (« tex », « gnome », « kde », etc.). La section //editors// sera utilisée pour notre exemple.|
^Priority | Détermine à quel point vous voulez faire entrer votre paquet dans les dépôts officiels. Nous laisserons tel quel pour notre exemple.|
^Standards-Version | Correspond à la version la plus récente de la [[https://www.debian.org/doc/debian-policy/|politique debian]] d'empaquetage. Sa version actuelle est la 3.6.2.|
^Package | Le nom de votre paquet (« musicedit » dans notre cas).|
^Version | La version de votre paquet. Il existe une norme pour Ubuntu, relative à Debian. Si votre paquet n'est pas présent dans les dépôts Debian (ce qui est à priori le cas puisque votre paquet n'est pas créé…), la version est du type « x-0ubuntu1 ». Elle deviendra « x-0ubuntu2 » si vous refaites votre paquet. Notre paquet aura la version « 1-0ubuntu1 ».|
^Maintainer| C'est vous. Mettez votre identité sous la forme //Prénom Nom %%%%//.|
^Architecture| L'architecture pour laquelle est fait votre paquet. Puisqu'il s'agit d'un méta-paquet (qui ne contient rien), vous pouvez laisser « all » (le même paquet fonctionnera sur toutes les architectures).|
^Description| Contient la description de votre paquet. À la suite de « Description », ajoutez une courte phrase. La description complète vient en dessous. Attention, chaque ligne de la description complète doit commencer par une espace. Les sauts de lignes sont matérialisés par une espace, puis un point.|
Arrivé à cette étape, le paquet est constructible mais sans grand intérêt, puisqu'il ne définit aucune dépendance. Voyons comment utiliser les autres éléments du fichier.
=== Les éléments optionnels ===
^Pre-Depends| Liste les paquets devant être présents **avant** que votre méta-paquet soit installé.|
^Depends| Liste des paquets dont votre méta-paquet dépend. C'est cet élément qui fait tout l'intérêt d'un méta-paquet.|
^Recommends| Liste des paquets vivement conseillés (mais qui ne seront pas installés).|
^Suggests| Liste des paquets pouvant être utiles (notez la subtile différence avec « Recommends » ;-)).|
Les listes de paquets ont une syntaxe à respecter. Les noms de paquets doivent être séparés par des virgules. On peut offrir le choix entre deux paquets en les séparant par une barre verticale :
Suggests: paquet1, paquet2a | paquet2b, paquet3
Si vous ne souhaitez pas utiliser un de ces éléments, supprimez sa ligne du fichier.
**Copyright**, **Changelog**, **Readme** et **Extra-Files** font appel à d'autres fichiers, à placer dans le même dossier que le fichier de contrôle. Des fichiers par défaut seront installés si vous supprimez les lignes.
Ces éléments sont loin d'être importants pour un usage personnel du méta-paquet.
=== Retour à notre exemple ===
Voici le fichier de contrôle que nous vous proposons pour créer le paquet « musicedit » :
Section: editors
Priority: optional
Standards-Version: 3.6.2
Package: musicedit
Version: 1-0ubuntu1
Maintainer: Gloubiboulga
Depends: lilypond, noteedit, denemo, rosegarden4
Recommends: gv | gnome-gv
Suggests: lilypond-doc
Architecture: all
Copyright: GPL_copyright
Changelog: changelog
Description: dummy-package providing music edition tools
This package provides essential tools for music engraving on GNU/Linux.
.
And it's my first dummy package.
Deux fichiers sont appelés, %%« GPL_copyright »%% (qui annonce que le paquet est sous licence GPL) et « changelog », dont la syntaxe est assez particulière pour être montrée :
musicedit (1-0ubuntu1) dapper; urgency=low
* New upstream release
-- Gloubiboulga Tue, 06 Dec 2005 20:44:33 +0100
Il ne reste plus qu'à construire le paquet.
==== Création du paquet ====
Il suffit d'exécuter la commande « ''equivs-build'' » avec le nom du fichier de contrôle en argument :
equivs-build musicedit
Si vous n'avez pas fait d'erreur (de syntaxe par exemple), vous vous retrouverez avec un joli paquet Debian tout neuf !
==== Pour conclure ====
Si vous disposez d'un serveur FTP, placer votre nouveau paquet sur un dépôt (voir [[:gestion_des_paquets_avance|gestion des paquets (avancé)]] pour savoir comment faire) peut s'avérer très pratique lors d'une réinstallation. Vous pouvez d'ailleurs en faire profiter d'autres utilisateurs autour de vous par ce biais…
Ça c'est cadeau.
----
//Contributeur : [[utilisateurs:Gloubiboulga]].//