como obter o pacote debain descompactado antes de o debconf ser mostrado?

0

Estou trabalhando na fonte de empacotamento do Debian para instalar alguns arquivos na máquina do usuário. Existe uma lógica comum que está sendo usada pelo script debconf / config e pelo script postinst. Então, coloquei a lógica comum em um arquivo separado e a adicionei como parte do pacote em / usr / share / pkg-name /.

Agora, quando instalo o pacote usando o dpkg, tudo funciona bem. Primeiro, o pacote é descompactado e o arquivo que contém a base de código comum é colocado no caminho mencionado. Em seguida, o script debconf / config lê o arquivo e, em seguida, avisa o usuário de acordo.

Quando coloco o arquivo dentro de um repositório APT, o mesmo procedimento é invertido quando eu o instalo usando o apt-get. O pacote não é descompactado primeiro, em vez disso, o prompt do debconf é mostrado e o script config não consegue encontrar o script que contém a base de código comum.

Eu quero saber por que há uma diferença no procedimento de instalação? Existe uma maneira de obter a mesma seqüência ao instalar através do apt-get? Todos os três arquivos são scripts de shell.

Existe uma maneira melhor de lidar com essa base de código comum a ser usada por vários scripts de mantenedores?

    
por i01000001 17.10.2014 / 16:51

1 resposta

0

A missão terminou!

Agora eu entendo o processo completo como descrito no debconf manpage. Existem diferentes fases ou etapas, seja qual for o nome. Eles são:

  • dpkg-preconfigure
  • dpkg -i
  • dpkg-reconfigure

Todos estes passos iniciam a comunicação debconf com o usuário. Quando alguém instala um pacote usando dpkg -i, o script de configuração é executado logo antes de executar o script postinst com as mesmas opções de linha de comando. No momento em que a comunicação debconf começa, o pacote já está descompactado.

Quando alguém instala um pacote usando o apt-get, primeiro o dpkg-preconfigure é executado, que executa o script de configuração e, em seguida, o dpkg -i para instalar o pacote que executa novamente o mesmo script de configuração.

No segundo caso do apt-get, quando o script de configuração é executado como parte do dpkg-preconfigure, então o pacote ainda não foi descompactado, então eu estava enfrentando esse problema.

Acabei de adicionar uma condição if para continuar se os arquivos forem descompactados ou sair

if [ ! -f /usr/share/pkg-name/common-codebase ];
 then
    exit 0
 fi
 /usr/share/pkg/common-codebase

Desta forma, ao instalar o pacote usando o apt-get, a tentativa do dpkg-preconfigure de executar o script de configuração é ignorada enquanto a segunda tentativa do dpkg-i é honrada. Isso funciona para mim porque as questões debconf que eu peço ao usuário não causam impacto em nenhum outro pacote.

Caso você tenha modelos compartilhados e suas escolhas possam impactar qualquer coisa fora do pacote, lembre-se, mesmo que você atrase seus prompts, os outros pacotes relacionados / dependentes que estão sendo instalados pelo apt-get ainda solicitarão ao usuário durante a etapa dpkg-preconfigure. Certifique-se de que está tudo bem para você antes de tentar esta solução.

    
por 20.10.2014 / 09:22