Como criar um meta-pacote que instala automaticamente outros pacotes?


Respostas:


47

Um meta-pacote como este pode ser criado com uma ferramenta chamada equivs que criará um pacote com apenas informações de dependência.

Primeiro, crie um diretório:

mkdir my-metapackage
cd my-metapackage/

Agora execute o programa:

equivs-control ns-control

Ele criará um arquivo chamado ns-control, abra esse arquivo com o seu editor de texto. O arquivo de controle que você gera deve ter suas linhas Dependsou Recommendsmodificadas para depender dos pacotes que você deseja 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!

(Apenas um exemplo, você deve incluir mais informações)

E, finalmente, crie o pacote executando

equivs-build ns-control

Seu pacote está localizado em my-metapackage/my-metapackage_1.0_all.deb.

Se você deseja também criar um pacote fonte, a --fullopção pode ser passada para equivs-build, por exemplo equivs-build --full ns-control. Isso usará o debuild e também criará os arquivos .dsc e .tar.gz.

Para criar um arquivo .changes de origem que possa ser carregado em um PPA, extraia e construa o pacote de origem com

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

Se o Mantenedor que você definiu no ns-control corresponder à sua chave GPG, ele deverá criar e assinar o arquivo my-metapackage_1.0_source.changes para que você possa enviar para o seu PPA


Muito obrigado. Provavelmente testarei isso mais tarde, mas até agora, as instruções funcionaram. :)
Thomas Ward

2
Funciona perfeitamente!
Stefano Palazzo

Obrigado pela resposta, ajmitch, mas apenas por razões, vou apontar que, se você tiver um ~/.devscriptsarquivo e definir especificamente uma chave GPG diferente para usar no arquivo devscripts, ela substituirá o processo dpkg / debuild e o terá use a chave GPG específica especificada em .devscripts. Assim como um ponto digno de nota para a última frase em sua resposta
Thomas Ward

Notei que colocar os pacotes em baixo Depends:torna a instalação boa se e somente se houver pacotes; não os instala se não estiverem na minha máquina. Para instalá-los, eu usei Providese funciona como um encanto. Veja meu código (apenas mudei): github.com/palladius/debian-packages/blob/master/…
Riccardo
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.