Bagaimana cara memperbaiki ketergantungan libxml2-dev yang rusak pada Debian menggunakan apt?

8

Ketika saya menjalankan sudo apt-get upgradeinstalasi Debian Squeeze, saya mendapatkan kesalahan berikut:

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.

Saya tidak yakin apa artinya "squeeze3" versus "squeeze5", tapi itu satu-satunya yang berbeda dalam paket libxml2.

Ketika saya mencoba "sudo apt-get install -f", saya mendapatkan:

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)

Kesalahan serupa terjadi dengan sudo apt-get upgrade -f.

/Etc/apt/sources.list saya saat ini:

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

Bagaimana cara saya memperbaiki ini? Terima kasih!

Jonathan
sumber
2
squeeze3adalah rilis patch ketiga untuk squeeze, squeeze5adalah patch kelima. Mereka adalah bagian dari nomor versi. Versi untuk perpustakaan dan file pengembangan harus sama persis. Itu normal bahwa APT ingin Anda lari apt-get install -f. Yang tidak normal adalah bahwa pemutakhiran libxml2-devgagal. Apakah direktori itu /usr/include/libxml2ada? Apakah izinnya masuk akal? Apakah ada cukup ruang disk?
Gilles 'SO- stop being evil'
@Gilles Ah, izinnya kacau: ls -lmengatakan bahwa ia tidak dapat mengakses libxml2(bahkan sebagai root) dan memberi ?tanda sebagai pengganti semua informasi izin. Promosikan untuk menjawab? Tidak yakin bagaimana cara memperbaikinya, tetapi saya dapat melihat / berbicara dengan host saya.
Jonathan

Jawaban:

5

squeeze3adalah rilis patch ketiga untuk squeeze, squeeze5adalah patch kelima. Mereka adalah bagian dari nomor versi. Versi untuk pustaka dan file pengembangan harus sama persis, jadi itu normal jika APT ingin Anda menjalankan apt-get install -fketika sistem Anda memiliki versi yang tidak konsisten.

Yang tidak normal adalah bahwa pemutakhiran libxml2-devgagal. Pesan tentang tidak bisa membaca /usr/include/libxml2itu tidak biasa. Tampaknya mengindikasikan bahwa instalasi telah rusak dalam beberapa cara. Periksa apakah direktori masih ada. Jika Anda memindahkan atau menghapusnya di beberapa titik ... jangan lakukan itu, dan buat kembali atau kembali direktori untuk memulihkan. Jika direktori ada tetapi Anda melihat sesuatu seperti

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

maka sistem file Anda rusak, atau mungkin RAM Anda. Pertama, periksa RAM Anda : ini adalah penyebab paling umum dari kerusakan sistem file. Tulis sesedikit mungkin sampai Anda yakin tentang RAM, karena Anda dapat memperburuk kerusakan. Cara mengambilnya tergantung dari sifat dan tingkat kerusakannya.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
3

Coba bersihkan lalu instal kembali.

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

Sebuah -devpaket hanya komponen yang diperlukan untuk mengkompilasi program terkait terhadap perpustakaan itu, itu tidak diperlukan untuk jangka waktu sehingga aman untuk benar-benar membersihkan.

bahamat
sumber
Ini tidak membantu dalam kasus saya, karena file tersebut akhirnya rusak. Akan merekomendasikan prosedur ini untuk orang lain dengan masalah ketergantungan perpustakaan (+1).
Jonathan
Dalam hal ini, saya telah menambahkan apt-get cleanyang akan membersihkan cache paket dan memaksa mengunduh ulang dari repo paket yang Anda butuhkan.
bahamat
Maaf, maksud saya file /usr/include/libxml2tersebut rusak. Bahkan rm -f /usr/include/libxml2akan gagal, mengatakan sesuatu seperti itu tidak dapat menemukan file. Butuh hosting saya 17 jam untuk memperbaikinya.
Jonathan