Como corrijo a dependência da libxml2-dev quebrada no Debian usando o apt?

8

Quando eu executo sudo apt-get upgrade na minha instalação do Debian Squeeze, recebo o seguinte erro:

You might want to run 'apt-get -f install' to correct these.
The following packages have unmet dependencies:
 libxml2-dev : Depends: libxml2 (= 2.7.8.dfsg-2+squeeze3) but 2.7.8.dfsg-2+squeeze5 is installed
E: Unmet dependencies. Try using -f.

Não tenho certeza do que "squeeze3" versus "squeeze5" significa, mas é a única coisa que difere no pacote libxml2.

Quando eu tento "sudo apt-get install -f", recebo:

The following extra packages will be installed:
  libxml2-dev
The following packages will be upgraded:
  libxml2-dev
1 upgraded, 0 newly installed, 0 to remove and 8 not upgraded.
108 not fully installed or removed.
Need to get 0 B/830 kB of archives.
After this operation, 69.6 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 96842 files and directories currently installed.)
Preparing to replace libxml2-dev 2.7.8.dfsg-2+squeeze3 (using .../libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb) ...
Unpacking replacement libxml2-dev ...
dpkg: error processing /var/cache/apt/archives/libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb (--unpack):
 unable to install new version of './usr/include/libxml2': No such file or directory
configured to not write apport reports
                                      dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing:
 /var/cache/apt/archives/libxml2-dev_2.7.8.dfsg-2+squeeze5_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ocorre um erro semelhante com sudo apt-get upgrade -f .

Meu /etc/apt/sources.list está atualmente:

deb http://ftp.us.debian.org/debian/ squeeze main contrib non-free
deb http://ftp.debian.org/debian/ squeeze-updates main contrib non-free
deb http://security.debian.org/ squeeze/updates main contrib non-free

Como faço para corrigir isso? Obrigado!

    
por Jonathan 20.08.2012 / 00:35

2 respostas

5

squeeze3 é o terceiro lançamento do patch para squeeze, squeeze5 é o quinto. Eles fazem parte do número da versão. As versões para a biblioteca e os arquivos de desenvolvimento devem corresponder exatamente, então é normal que o APT queira executar apt-get install -f quando o sistema tiver versões inconsistentes.

O que não é normal é que a atualização de libxml2-dev esteja falhando. A mensagem sobre não ser capaz de ler /usr/include/libxml2 é incomum. Parece indicar que a instalação foi danificada de alguma forma. Verifique se o diretório ainda existe. Se você o moveu ou removeu em algum momento… não faça isso e recrie ou mova o diretório para recuperar. Se o diretório existe, mas você vê algo como

$ ls -ld /usr/include/libxml2
?????????? ??? ???????? ???????? 4096 ??? ?? ???? /usr/include/libxml2

então o seu sistema de arquivos está corrompido, ou talvez sua RAM. Primeiro, verifique sua RAM : esta é a causa mais comum de corrupção do sistema de arquivos. Escreva o mínimo possível até ter certeza da RAM, pois você pode piorar o dano. Como tomar a partir daí depende da natureza e extensão do dano.

    
por 20.08.2012 / 09:48
3

Tente limpá-lo e reinstalá-lo.

sudo apt-get purge -f libxml2-dev
sudo apt-get clean
sudo apt-get update
sudo apt-get install libxml2 libxml2-dev

Um pacote -dev é apenas os componentes necessários para compilar programas vinculados a essa biblioteca, não é necessário para o tempo de execução, portanto é seguro remover completamente os programas.

    
por 20.08.2012 / 07:13

Tags