¿Cómo crear un metapaquete que instala automáticamente otros paquetes?

54

Me gustaría poder crear un paquete que no contenga ningún código o programa en sí, sino que instale otros paquetes que existen en los repositorios en una computadora, ¿cómo funciona el ubuntu-restricted-extraspaquete?

Thomas Ward
fuente

Respuestas:

47

Se puede crear un metapaquete como este con una herramienta llamada equivs que creará un paquete con solo información de dependencia.

Primero, cree un directorio:

mkdir my-metapackage
cd my-metapackage/

Ahora ejecuta el programa:

equivs-control ns-control

Creará un archivo llamado ns-control, abra este archivo con su editor de texto. El archivo de control que genere debe tener sus líneas Dependso Recommendsmodificadas para depender de los paquetes que desea instalar:

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 ejemplo, debe incluir más información)

Y finalmente, compile el paquete ejecutando

equivs-build ns-control

Su paquete se encuentra en my-metapackage/my-metapackage_1.0_all.deb.

Si desea crear también un paquete fuente, la --fullopción se puede pasar a equivs-build, por ejemplo equivs-build --full ns-control. Esto usará debuild y también creará archivos .dsc y .tar.gz.

Para crear un archivo fuente .changes que pueda cargar a un PPA, extraiga y cree el paquete fuente con

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

Si el Mantenedor que configuró en ns-control coincide con su clave GPG, debería compilar y firmar el archivo my-metapackage_1.0_source.changes para que lo transfiera a su PPA

ajmitch
fuente
Muchas gracias. Lo más probable es que lo pruebe más tarde, pero hasta ahora, las instrucciones funcionaron. :)
Thomas Ward
2
Funciona perfectamente!
Stefano Palazzo
Gracias por la respuesta, ajmitch, pero solo por razones, voy a señalar que si tiene un ~/.devscriptsarchivo y define específicamente una clave GPG diferente para usar en el archivo devscripts, ANULARÁ el proceso dpkg / debuild y lo tendrá use la clave GPG específica especificada en .devscripts. Solo como un punto notable para la última oración de su respuesta.
Thomas Ward
Noté que colocar los paquetes debajo Depends:hace que la instalación sea buena si y solo si hay paquetes allí; no los instala si no están en mi máquina. Para instalarlos, usé en su Provideslugar y funciona a las mil maravillas. Ver mi código (solo lo cambié): github.com/palladius/debian-packages/blob/master/…
Riccardo