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

9

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 nos scripts .preinst ou .postinst no meu arquivo .deb?

Suponho que quando o meu arquivo .deb está instalado ( sudo dpkg -i testing.deb) que alguns bloqueios ou mecanismos existem provável que me impediria de chamar certos comandos, como add-apt-repository, apt-get update, e apt-get install.

Será esta uma suposição correta?

Stéphane
fonte
Veja também: stackoverflow.com/questions/18599599/…
Javier López

Respostas:

7

Você está certo. Os scripts do mantenedor não devem fazer alterações nos estados apt ou dpkg, exceto as alterações que serão feitas ao instalar o pacote de qualquer maneira.

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

Se você deseja simplificar o usuário para executar as etapas adicionais de instalação do seu software, você pode apenas enviar um script que faça o trabalho e dizer ao usuário para executar o script manualmente.

Mas se você realmente quer ligar apt-get updateou apt-get installetc automaticamente, e não se importa que o seu pacote seja totalmente inaceitável no Debian ou no Ubuntu, e seus usuários estão bem com o pacote agindo dessa maneira, então você pode colocar algo em /etc/cron.dque verifique se há bloqueios existentes no apt ou no dpkg e, se não houver nenhum, realiza suas etapas adicionais de instalação e organiza as etapas para que não sejam executadas novamente. Eu não recomendo essa abordagem.

o paul
fonte