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

54

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 ubuntu-restricted-extraspaquet fait-il?

Thomas Ward
la source

Réponses:

47

Un méta-paquet comme celui-ci peut être créé avec un outil appelé equivs qui va créer 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érer devrait avoir son Dependsou des Recommendslignes modifiées pour dépendre des paquets que vous voulez 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 colis est situé à my-metapackage/my-metapackage_1.0_all.deb.

Si vous souhaitez également créer un paquet source, l' --fulloption 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.

ajmitch
la source
Merci beaucoup. Je vais probablement tester cela plus tard, mais jusqu'à présent, les instructions ont fonctionné. :)
Thomas Ward
2
Ça fonctionne parfaitement!
Stefano Palazzo
Merci pour la réponse, ajmitch, mais juste pour des raisons, je vais vous faire remarquer que si vous avez un ~/.devscriptsfichier et définissez spécifiquement une clé GPG différente à utiliser dans le fichier devscripts, elle annule le processus dpkg / debuild et l’a utilisez la clé GPG spécifique spécifiée dans .devscripts. Juste un point remarquable pour la dernière phrase de votre réponse
Thomas Ward
J'ai remarqué que le fait de mettre les paquets sous Depends:rend l'installation bonne si et seulement si les paquets sont là; il ne les installe pas s'ils ne sont pas sur ma machine. Pour les installer, j'ai utilisé à la Providesplace et cela fonctionne à merveille. Voir mon code (vient de le changer): github.com/palladius/debian-packages/blob/master/…
Riccardo