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.