Làm cách nào để sửa lỗi phụ thuộc libxml2-dev trên Debian bằng apt?


8

Khi tôi chạy sudo apt-get upgradetrên bản cài đặt Debian Squeeze, tôi gặp lỗi sau:

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.

Tôi không chắc "bóp 3" so với "bóp 5" nghĩa là gì, nhưng đó là điều duy nhất khác trong gói libxml2.

Khi tôi thử "sudo apt-get install -f", tôi nhận được:

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)

Một lỗi tương tự xảy ra với sudo apt-get upgrade -f.

Hiện tại /etc/apt/source.list của tôi:

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

Làm thế nào để tôi sửa chữa điều này? Cảm ơn!


2
squeeze3là bản phát hành bản vá thứ ba cho bóp, squeeze5là thứ năm. Chúng là một phần của số phiên bản. Các phiên bản cho thư viện và các tệp phát triển phải khớp chính xác. Thật bình thường khi APT muốn bạn chạy apt-get install -f. Điều không bình thường là việc nâng cấp libxml2-devbị lỗi. Liệu thư mục /usr/include/libxml2tồn tại? Các quyền có hợp lý không? Có đủ dung lượng đĩa không?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Ah, các quyền đã bị rối: ls -lnói rằng nó không thể truy cập libxml2(ngay cả khi đã root) và nó ?đánh dấu thay cho tất cả các thông tin cấp phép. Thúc đẩy để trả lời? Không chắc chắn cách khắc phục, nhưng tôi có thể xem xét / nói chuyện với chủ nhà.
Jonathan

Câu trả lời:


5

squeeze3là bản phát hành bản vá thứ ba cho bóp, squeeze5là thứ năm. Chúng là một phần của số phiên bản. Các phiên bản cho thư viện và các tệp phát triển phải khớp chính xác, do đó, thông thường APT muốn bạn chạy apt-get install -fkhi hệ thống của bạn có các phiên bản không nhất quán.

Điều không bình thường là việc nâng cấp libxml2-devbị lỗi. Thông điệp về việc không thể đọc /usr/include/libxml2là bất thường. Nó dường như chỉ ra rằng việc cài đặt đã bị hư hỏng theo một cách nào đó. Kiểm tra xem thư mục vẫn còn tồn tại. Nếu bạn đã di chuyển hoặc xóa nó tại một số điểm, thì không nên làm điều đó và tạo lại hoặc di chuyển trở lại thư mục để khôi phục. Nếu thư mục tồn tại nhưng bạn thấy một cái gì đó như

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

sau đó hệ thống tập tin của bạn bị hỏng, hoặc có lẽ là RAM của bạn. Đầu tiên, hãy kiểm tra RAM của bạn : đây là nguyên nhân phổ biến nhất dẫn đến hỏng hệ thống tệp. Viết càng ít càng tốt cho đến khi bạn chắc chắn về RAM, vì bạn có thể làm cho thiệt hại tồi tệ hơn. Làm thế nào để lấy nó từ đó phụ thuộc vào tính chất và mức độ thiệt hại.


3

Cố gắng thanh lọc nó và sau đó cài đặt lại.

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

Một -devgói chỉ là các thành phần cần thiết để biên dịch các chương trình được liên kết với thư viện đó, không cần thiết cho thời gian chạy nên an toàn để thanh lọc hoàn toàn.


Điều này không giúp ích gì trong trường hợp của tôi, vì tập tin cuối cùng đã bị hỏng. Muốn giới thiệu quy trình này cho những người khác có vấn đề phụ thuộc thư viện (+1).
Jonathan

Trong trường hợp đó, tôi đã thêm vào apt-get cleanđó sẽ xóa bộ đệm của gói và buộc tải xuống lại từ gói repo gói bạn cần.
bahamat

Xin lỗi, tôi có nghĩa là các tập tin /usr/include/libxml2đã bị hỏng. Thậm chí rm -f /usr/include/libxml2sẽ thất bại, nói một cái gì đó giống như nó không thể tìm thấy các tập tin. Phải mất webhost của tôi 17 giờ để sửa nó.
Jonathan
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.