Как исправить нарушенную зависимость libxml2-dev от Debian с помощью apt?

8

Когда я запускаю sudo apt-get upgradeустановку Debian Squeeze, я получаю следующую ошибку:

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.

Я не уверен, что означает «squeeze3» против «squeeze5», но это единственное, что отличается в пакете libxml2.

Когда я пытаюсь "sudo apt-get install -f", я получаю:

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)

Похожая ошибка происходит с sudo apt-get upgrade -f.

Мой /etc/apt/sources.list в настоящее время:

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

Как мне исправить это? Спасибо!

Джонатан
источник
2
squeeze3третий релиз патча для squeeze, squeeze5пятый. Они являются частью номера версии. Версии для библиотеки и файлов разработки должны точно совпадать. Это нормально, что APT хочет, чтобы ты бежал apt-get install -f. Что не является нормальным, так это то, что обновление libxml2-devне удается. Каталог /usr/include/libxml2существует? Являются ли разрешения разумными? Достаточно ли места на диске?
Жиль "ТАК ... перестать быть злым"
@ Жиль Ах, разрешения перепутаны: ls -lговорит, что он не может получить доступ libxml2(даже с правами root) и ставит ?отметки вместо всей информации о разрешениях. Продвигать, чтобы ответить? Не знаю, как исправить, но я могу посмотреть / поговорить с моим хозяином.
Джонатан

Ответы:

5

squeeze3третий релиз патча для squeeze, squeeze5пятый. Они являются частью номера версии. Версии для библиотеки и файлов разработки должны точно совпадать, поэтому обычно APT хочет, чтобы вы запускались, apt-get install -fкогда в вашей системе несовместимые версии.

Что не является нормальным, так это то, что обновление libxml2-devне удается. Сообщение о невозможности прочитать /usr/include/libxml2необычно. Кажется, это указывает на то, что установка была каким-то образом повреждена. Проверьте, существует ли каталог по-прежнему. Если вы переместили или удалили его в какой-то момент ... не делайте этого, и заново создайте или переместите каталог для восстановления. Если каталог существует, но вы видите что-то вроде

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

тогда ваша файловая система повреждена или, возможно, ваша RAM. Во-первых, проверьте свою оперативную память : это самая распространенная причина повреждения файловой системы. Пишите как можно меньше, пока не будете уверены в оперативной памяти, так как это может усугубить ущерб. Как его взять, зависит от характера и степени ущерба.

Жиль "ТАК - перестань быть злым"
источник
3

Попробуйте очистить его, а затем переустановите.

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

-devПакет только компоненты , необходимые для компиляции программ , связанных с этой библиотекой, она не нужна на время работы , так что это безопасно , чтобы полностью продувка.

bahamat
источник
В моем случае это не помогло, потому что файл оказался поврежденным. Рекомендовал бы эту процедуру для других с проблемами зависимости библиотеки (+1).
Джонатан
В этом случае я добавил, apt-get cleanчто будет очищать кеш пакета и принудительно повторно загружать из репозитория нужный вам пакет.
Багамат
Извините, я имел в виду файл /usr/include/libxml2был поврежден. Даже rm -f /usr/include/libxml2потерпел бы неудачу, говоря что-то вроде этого не может найти файл. Мой webhost занял 17 часов, чтобы это исправить.
Джонатан