O script .preinst do pacote está falhando por algum motivo.
Para descobrir o motivo, examine o script em /var/lib/dpkg/info/PACKAGENAME.preinst
Se você quiser ver exatamente em qual linha o script está falhando, edite o script .preinst e adicione set -x
imediatamente após a linha #!
. Isso ativa o rastreio de execução no script.
NOTA: Isso pressupõe que o script .preinst seja um script de shell (seja posix sh ou bash). Quase todos os scripts .preinst (e .postinst, .prerm e .postrm) são scripts de shell, mas não precisam ser, podem ser executáveis. por exemplo. na minha máquina desktop principal com 9104 pacotes instalados, 14 são scripts perl, 1 é um executável compilado (bash's preinst - não pode presumir que existe um shell funcional já instalado), e todos os demais são scripts de shell ... 9041 são scripts shell POSIX, 63 são scripts bash. Se o .preinst for perl ou python ou qualquer outra coisa, você terá que descobrir como habilitar o modo de rastreamento de depuração ou de execução ou semelhante nesse idioma.
Em seguida, execute dpkg --configure --pending
.
Isso fará com que o dpkg tente configurar o pacote semi-instalado. NÃO o reinstale com dpkg -i
, que sobrescreverá seu script .preinst editado com a versão no pacote .deb.
Isso pode fornecer informações suficientes para corrigir o problema. Pode ser algo simples como um código de saída inesperado ou não detectado de um programa (a maioria dos scripts .preinst etc tem set -e
, para torná-los encerrados no primeiro erro), ou assumindo que um diretório já existe (e isso pode ser devido a uma dependência não declarada no arquivo debian / control do pacote - isto é, ele deve depender de foo mas não instala foo de qualquer maneira)
Após a correção, execute dpkg --configure --pending
novamente e o pacote deverá estar instalado corretamente.
Se o script .preinst estiver com bugs, há uma chance razoável de que os scripts .postinst (e / ou .prerm e .postrm) também estejam. Você pode precisar corrigi-los também.
Não se esqueça de enviar um relatório de bug para quem fez o pacote para que ele possa corrigi-lo.