Comment réparer la dépendance cassée de libxml2-dev sur Debian en utilisant apt?


8

Lorsque j'exécute sudo apt-get upgrademon installation Debian Squeeze, j'obtiens l'erreur suivante:

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.

Je ne sais pas ce que "squeeze3" contre "squeeze5" signifie, mais c'est la seule chose qui diffère dans le paquet libxml2.

Lorsque j'essaie "sudo apt-get install -f", j'obtiens:

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)

Une erreur similaire se produit avec sudo apt-get upgrade -f.

Ma /etc/apt/sources.list est actuellement:

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

Comment puis-je résoudre ce problème? Merci!


2
squeeze3est la troisième version de patch pour Squeeze, squeeze5est la cinquième. Ils font partie du numéro de version. Les versions de la bibliothèque et des fichiers de développement doivent correspondre exactement. Il est normal qu'APT veuille que vous couriez apt-get install -f. Ce qui n'est pas normal, c'est que la mise à niveau de libxml2-devéchoue. Le répertoire /usr/include/libxml2existe-t-il? Les autorisations sont-elles raisonnables? L'espace disque est-il suffisant?
Gilles 'SO- arrête d'être méchant'

@Gilles Ah, les autorisations sont gâchées: ls -ldit qu'il ne peut pas accéder libxml2(même en tant que root) et qu'il donne des ?marques à la place de toutes les informations d'autorisation. Promouvoir pour répondre? Je ne sais pas comment résoudre ce problème, mais je peux regarder / parler à mon hôte.
Jonathan

Réponses:


5

squeeze3est la troisième version de patch pour Squeeze, squeeze5est la cinquième. Ils font partie du numéro de version. Les versions de la bibliothèque et des fichiers de développement doivent correspondre exactement, il est donc normal qu'APT veuille que vous exécutiez apt-get install -florsque votre système a des versions incohérentes.

Ce qui n'est pas normal, c'est que la mise à niveau de libxml2-devéchoue. Le message de ne pas pouvoir lire /usr/include/libxml2est inhabituel. Cela semble indiquer que l'installation a été endommagée d'une manière ou d'une autre. Vérifiez si le répertoire existe toujours. Si vous l'avez déplacé ou supprimé à un moment donné… ne faites pas cela, et recréez ou reculez le répertoire pour le récupérer. Si le répertoire existe mais que vous voyez quelque chose comme

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

alors votre système de fichiers est corrompu, ou peut-être votre RAM. Tout d'abord, vérifiez votre RAM : c'est la cause la plus courante de corruption du système de fichiers. Écrivez le moins possible jusqu'à ce que vous soyez sûr de la RAM, car vous pourriez aggraver les dégâts. Comment le prendre à partir de là dépend de la nature et de l'étendue des dégâts.


3

Essayez de le purger puis de le réinstaller.

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

Un -devpackage n'est que les composants requis pour compiler des programmes liés à cette bibliothèque, il n'est pas nécessaire pour l'exécution, il est donc sûr de purger complètement.


Cela n'a pas aidé dans mon cas, car le fichier a fini par être corrompu. Je recommanderais cette procédure à ceux qui ont des problèmes de dépendance à la bibliothèque (+1).
Jonathan

Dans ce cas, j'ai ajouté apt-get cleance qui purgerait le cache du package et forcerait le re-téléchargement du référentiel du package dont vous aviez besoin.
bahamat

Désolé, je voulais dire que le fichier /usr/include/libxml2était corrompu. Même rm -f /usr/include/libxml2échouerait, disant que quelque chose comme ça ne pouvait pas trouver le fichier. Il a fallu 17 heures à mon hébergeur pour le réparer.
Jonathan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.