Come creare un meta-pacchetto che installa automaticamente altri pacchetti?


54

Mi piacerebbe essere in grado di creare un pacchetto che non contiene alcun codice o programma stesso, ma invece installa altri pacchetti che esistono nei repository su un computer, una specie di come fa il ubuntu-restricted-extraspacchetto?

Risposte:


47

Un meta-pacchetto come questo può essere creato con uno strumento chiamato equivs che creerà un pacchetto con solo informazioni sulla dipendenza.

Innanzitutto, crea una directory:

mkdir my-metapackage
cd my-metapackage/

Ora esegui il programma:

equivs-control ns-control

Creerà un file chiamato ns-control, aprirà questo file con l'editor di testo. Il file di controllo che si genera dovrebbe avere le sue Dependso le Recommendslinee modificate in base ai pacchetti che si desidera installare:

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!

(Solo un esempio, dovresti includere ulteriori informazioni)

E infine, crea il pacchetto eseguendo

equivs-build ns-control

Il pacchetto si trova all'indirizzo my-metapackage/my-metapackage_1.0_all.deb.

Se si desidera creare anche un pacchetto sorgente, l' --fullopzione può essere passata a equivs-build, ad es equivs-build --full ns-control. Questo utilizzerà debuild e creerà anche file .dsc & .tar.gz.

Per creare un file .changes di origine che è possibile caricare su un PPA, estrarre e creare il pacchetto di origine con

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

Se il Maintainer che hai impostato in ns-control corrisponde alla tua chiave GPG, dovrebbe compilare e firmare il file my-metapackage_1.0_source.changes affinché tu possa eseguire il dput sul tuo PPA


Grazie mille Molto probabilmente lo proverò più tardi, ma finora le istruzioni hanno funzionato. :)
Thomas Ward

2
Funziona perfettamente!
Stefano Palazzo

Grazie per la risposta, ajmitch, ma solo per motivi, sottolineo che se hai un ~/.devscriptsfile e definisci in modo specifico una chiave GPG diversa da usare nel file devscripts, sovrascriverà il processo dpkg / debuild e ce l'hai usa la chiave GPG specifica specificata in .devscripts. Proprio come un punto degno di nota per l'ultima frase nella tua risposta
Thomas Ward

Ho notato che mettere sotto i pacchetti Depends:rende l'installazione buona se e solo se ci sono pacchetti; non li installa se non sono sulla mia macchina. Per installarli, ho usato Providesinvece e funziona come un fascino. Vedi il mio codice (appena cambiato): github.com/palladius/debian-packages/blob/master/…
Riccardo
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.