No meu caso eu tenho muitos arquivos * .list corrompidos. Se você fizer
file /var/lib/dpkg/info/<package_name>.list
normalmente você deve receber:
/var/lib/dpkg/info/<package_name>.list: ASCII text
mas se os arquivos da sua lista estiverem corrompidos, você verá:
/var/lib/dpkg/info/<package_name>.list: data
Eu fiz dois scripts para corrigir esse problema.
O primeiro script verifica isso e renomeia cada arquivo .list corrompido para * .list.broken
O segundo ciclo de script para cada arquivo * .list.broken e forçar a reinstalação do pacote.
algumas vezes a instalação falha devido a problemas com gatilhos:
fgets gave an empty string from '/var/lib/dpkg/info/libnih1:amd64.triggers'
Nesse caso, você precisa mover / renomear esse arquivo como:
mv /var/lib/dpkg/info/libnih1:amd64.triggers /var/lib/dpkg/info/libnih1:amd64.triggers.broken
Espero que isso ajude alguém a enfrentar a mesma bagunça.