Problema com a atualização do lilypond no Debian “buster / sid”

5

Eu tenho um problema com uma atualização incompleta na minha instalação Debian local:

  Operating System: Debian GNU/Linux buster/sid
            Kernel: Linux 4.12.0-1-686-pae
      Architecture: x86

Eu tentei corrigi-lo com apt upgrade -f e dpkg --configure lilypond-data , mas o que eu faço, recebo a seguinte mensagem:

Setting up lilypond-data (2.18.2-8) ...
 Running mktexlsr /usr/share/texlive/texmf-dist...
mktexlsr: Updating /var/lib/texmf/ls-R-TEXLIVEDIST... 
mktexlsr: Done.
ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
 subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
 lilypond-data
E: Sub-process /usr/bin/dpkg returned an error code (1)

se eu executar dpkg --remove --force-remove-reinstreq --dry-run lilypond-data Eu recebo:

dpkg: dependency problems prevent removal of lilypond-data:
 lilypond depends on lilypond-data (= 2.18.2-8).

dpkg: error processing package lilypond-data (--remove):
 dependency problems - not removing
Errors were encountered while processing:
 lilypond-data
    
por nath 23.08.2017 / 17:29

2 respostas

8

A abordagem geral seria examinar (script de shell) /var/lib/dpkg/info/lilypond-data.postinst e encontrar a linha ln que está falhando. Em seguida, determine por que e contorne (por exemplo, rm do link existente ou, na pior das hipóteses, edite o postinst). E, claro, arquive um bug.

Exceto que alguém já o fez - veja erro 871631 . E o bug foi corrigido; você só precisa pegar (e instalar) 2.18.2-9 da unstable.

(O que produz uma lição importante: verifique o sistema de acompanhamento de bugs antes de pensar em como corrigi-lo ...)

Além disso, você pode querer instalar o apt-listbugs.

    
por 23.08.2017 / 18:09
3

Esta parte mostra o que é importante:

ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
 subprocess installed post-installation script returned error exit status 1

Seu script de pós-instalação falhou. É provável porque não foi configurado para lidar corretamente com a versão anterior na stable.

Os pacotes debian possuem dois componentes:

  1. um arquivo archive, é bastante comum .tar.gz (ou qualquer similar), extraído no diretório raiz
  2. scripts de instalação, que são executados antes e após a extração do arquivo.

Assim, uma instalação de pacotes parece assim:

  1. os scripts de pré-instalação da execução do pacote
  2. o arquivo do pacote é extraído no diretório raiz
  3. os scripts de pós-instalação são executados

A remoção acontece de forma semelhante, mas com um script de pré-remoção e pós-remoção.

No seu caso, ocorreu uma atualização do pacote, então a ordem das chamadas do script é um pouco mais complexa, mas não muito.

A partir deles, o script de pós-instalação do novo pacote não pôde ser executado por algum motivo. Assim, já é extraído no seu sistema.

Como é uma distribuição de desenvolvimento, não é muito difícil resolver manualmente o problema.

Edite o script antigo de pós-instalação.

vi /var/lib/dpkg/info/lilypond-data.postinst

Encontre, onde não é possível criar esse link, e deixe-o permitir.

Depois disso, execute:

dpkg --configure -a

fará o que você quiser. (Se não der certo, não se preocupe, edite novamente e tente novamente.)

    
por 23.08.2017 / 18:13