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?

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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.