web-dev-qa-db-fra.com

Comment créer un méta-paquet qui installe automatiquement d'autres paquets?

J'aimerais pouvoir créer un paquet qui ne contienne aucun code ni programme lui-même, mais installe à la place d'autres paquets qui existent dans les référentiels sur un ordinateur, en quelque sorte comment le paquet ubuntu-restricted-extras fait?

54
Thomas Ward

Un méta-paquet comme celui-ci peut être créé avec un outil appelé equivs qui créera un paquet avec juste des informations de dépendance.

Tout d'abord, créez un répertoire:

mkdir my-metapackage
cd my-metapackage/

Maintenant, lancez le programme:

equivs-control ns-control

Il va créer un fichier appelé ns-control, ouvrez ce fichier avec votre éditeur de texte. Le fichier de contrôle que vous générez doit avoir ses lignes Depends ou Recommends modifiées pour dépendre des packages à installer:

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(Juste un exemple, vous devriez inclure plus d'informations)

Et enfin, construisez le paquet en lançant

equivs-build ns-control

Votre paquet est situé à my-metapackage/my-metapackage_1.0_all.deb.

Si vous souhaitez également créer un package source, l'option --full peut être passée à equivs-build, par exemple. equivs-build --full ns-control. Cela utilisera debuild & créera également des fichiers .dsc & .tar.gz.

Pour créer un fichier .changes source que vous pouvez télécharger sur un PPA, extrayez et construisez le paquet source avec

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

Si le responsable que vous avez défini dans ns-control correspond à votre clé GPG, il doit créer et signer le fichier my-metapackage_1.0_source.changes afin que vous puissiez le transférer dans votre PPA.

47
ajmitch