É possível ter um script de pré-instalação do pacote Debian rodando comandos do apt-get?

4

Estou criando um pacote Debian que tem algumas dependências não encontradas nos repositórios oficiais. Simplesmente especificar esses outros pacotes como dependências não é suficiente, já que suas instalações envolvem apenas executar o apt-get update e adicionar repositórios de código (que não são meus) para /etc/apt/sources.list.d.

Mais : um desses pacotes é o SDK da linguagem Dart - que você só pode instalar pegando o deb e usando o dpkg ou adicionando um dos repositórios do Google. Meu objetivo é apenas encontrar um equilíbrio entre minimizar o número de etapas envolvidas na instalação do meu pacote e na implantação de pacotes limpos.

Então, eu gostaria que o script de pré-instalação do meu pacote adicionasse essas fontes e então executasse o apt-get update, mas o principal problema é que quando o pacote é aberto e está sendo instalado, ele bloqueia o dpkg. Então, é possível conseguir o que eu estou procurando diretamente ou que outras opções / soluções alternativas existem?

    
por Crunchex 22.04.2015 / 19:08

1 resposta

6

Eu não acho que seja possível diretamente.

Mas, de alguma forma, o usuário instalou seu pacote - e aparentemente não a partir do seu repositório, já que ele ainda não foi adicionado. Portanto, a primeira solução que eu sugeriria seria fazer as coisas da maneira normal: fazer com que o usuário adicione o repositório (ou forneça ao usuário um script de shell simples) e, em seguida, instale o pacote normalmente. Esta seria a minha solução preferida, e executar um script de shell não é mais difícil do que instalar um pacote.

Segunda solução alternativa: tenha seu pacote apenas como um pacote de instalação. Configure o seu repositório, depois informe ao usuário (por exemplo, através do debconf note ou outro prompt na tela) para instalar o pacote real (que virá do seu repositório).

Terceira solução alternativa: O mesmo pacote de instalação, mas use o mesmo nome de pacote em seu repositório, apenas uma versão superior (use uma época, provavelmente). Então, a instalação inicial irá configurar o repositório, então apt upgrade ou similar irá puxar o pacote real.

Quarto: Não tenho certeza se é uma boa idéia, mas - No seu postinst, execute um processo em segundo plano que aguardará o bloqueio do dpkg e conclua a instalação. Acho que at ou batch funcionará para isso, ou apenas um /path/to/script & comum seguido por disown . Você provavelmente deseja que o usuário saiba que a instalação do pacote será concluída em segundo plano.

PS: você provavelmente precisará adicionar uma chave GPG também.

    
por 22.04.2015 / 19:34