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

54

Eu gostaria de poder criar um pacote que não contenha nenhum código ou programa, mas instala outros pacotes que existem nos repositórios em um computador, como o ubuntu-restricted-extraspacote?

Thomas Ward
fonte

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

ajmitch
fonte
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