Posso chamar outros comandos dpkg ou apt- * em meus scripts preinst?

8

Como parte do meu arquivo .deb personalizado (interno) que será implantado nos dispositivos Ubuntu 12.04, preciso adicionar vários repositórios PPA, executar o apt-get update e instalar pacotes desses PPAs.

Isso pode ser feito dentro dos scripts .preinst ou .postinst no meu arquivo .deb?

Suponho que, quando meu arquivo .deb estiver instalado ( sudo dpkg -i testing.deb ), provavelmente existam alguns bloqueios ou mecanismos que me impediriam de chamar determinados comandos, como add-apt-repository , apt-get update e apt-get install .

Esta é uma suposição correta?

    
por Stéphane 27.12.2013 / 04:24

1 resposta

7

Você está correto. Os scripts mantenedores não devem fazer nenhuma alteração nos estados do apt ou dpkg, além das mudanças que serão feitas ao instalar o pacote de qualquer maneira.

Instalar um arquivo em /etc/apt/sources.list.d , no entanto, está bem. A maioria dos pacotes que preenchem uma função como "instalar este pacote para adicionar o repositório X do APT ao seu sistema" simplesmente faz isso (ao contrário de chamar add-apt-repository ). Também é comum descartar a chave pública de GPG usada para assinar o repo em /etc/apt/trusted.gpg.d .

Se você quiser simplificar para o usuário executar as etapas de instalação adicionais para o seu software, talvez seja necessário enviar um script que execute a tarefa e instruir o usuário a executar o script manualmente.

Mas se você realmente quiser realmente chamar apt-get update ou apt-get install , etc automaticamente, e você não se importa que seu pacote seja totalmente inaceitável no Debian ou no Ubuntu, e seus usuários estão ok com o pacote agindo assim, então você poderia colocar algo em /etc/cron.d que verifica os bloqueios existentes do apt ou do dpkg e, se nenhum for mantido, executa as etapas adicionais de instalação e faz com que essas etapas não sejam executadas novamente. Eu não recomendo essa abordagem.

    
por the paul 28.12.2013 / 01:41