Làm thế nào để sửa chữa các gói bị hỏng?


21

Đang cố gắng cài đặt libssl-dev trên Ubuntu 14.04.2

$ make
fatal error: openssl/sha.h: No such file or directory
compilation terminated.

$ sudo apt-get install libssl-dev
The following packages have unmet dependencies:
 libssl-dev : Depends: zlib1g-dev but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

$ sudo apt-get install zlib1g-dev
The following packages have unmet dependencies:
 zlib1g-dev : Depends: zlib1g (= 1:1.2.3.4.dfsg-3ubuntu4) but 1:1.2.8.dfsg-1ubuntu1 is to be installed
E: Unable to correct problems, you have held broken packages.

Làm thế nào tôi có thể loại bỏ các gói được tổ chức và cài đặt đúng?


Lần cuối bạn chạy sudo apt updatevà / hoặc là khi sudo apt upgradenào?
DopeGhoti

Xin chào, tôi đã thực hiện cả hai giữa mỗi bước.
Sam Healey

Câu trả lời:


18

Trước tiên, hãy thử nhập này: sudo dpkg --configure -a

Điều này sẽ đi một chặng đường dài để sửa chữa các phụ thuộc bị hỏng. Nếu điều đó không đủ, hãy thử: sudo apt-get install -f

Sau đó dọn dẹp và cập nhật: sudo apt-get clean && sudo apt-get update

Sau đó nâng cấp: sudo apt-get upgrade (nói 'y' để nâng cấp)

Nếu bạn nhận được thông báo nói rằng một số gói bị "giữ lại", hãy làm điều này:

sudo apt-get dist-upgrade

Bây giờ làm hai lệnh sau:

sudo apt-get purge zlib1g-dev
sudo apt-get autoremove

Sau đó xem những gì xảy ra khi bạn nhập: sudo apt-get install libssl-dev

Nếu nó vẫn không hoạt động, hãy thử điều này:

sudo aptitude install libssl-dev zliblg-dev=1:1.2.8.dfsg-1ubuntu1

Nếu nó vẫn không hoạt động, hãy mở Trình quản lý gói Synaptic (Nó sẽ có trong Trình khởi chạy của bạn. Nếu bạn không thể tìm thấy nó, thì tại Terminal nhập synaptic-pkexec).

Tìm kiếm zlib1g-dev. Nếu hộp bên cạnh zlib1g-dev không có màu xanh, hãy nhấp vào nó và chọn "Đánh dấu để cài đặt". Nếu bạn thấy nhiều hơn một phiên bản, hãy chọn 1:1.2.8.dfsg-1ubuntu1. Sau đó tìm kiếm libssl-dev. Nếu hộp bên cạnh libssl-dev không có màu xanh, hãy nhấp vào nó và chọn "Đánh dấu để cài đặt".

Sau đó chọn "Áp dụng".


Xin chào, cảm ơn bạn đã trả lời. Tôi đã làm mọi thứ ở trên và nhận được lỗi tương tự như trong bài viết gốc của tôi. Khi tôi chạy nâng cấp, tôi nhận được thông báo sau. Các gói sau đã được giữ lại: linux-generic-lts-utopic linux-headers-generic-lts-utopic linux-image-generic-lts-utopic 0 được nâng cấp, 0 mới cài đặt, 0 để gỡ bỏ và 3 không được nâng cấp.
Sam Healey

những gì mang lại apt-cache policy zlib1g-devgrep -P '^[ \t]*[^#[ \t]+' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

@Bahamut Bạn có chắc là bạn có nghĩa là "-P" không? Đối với tôi, tôi nhận đượcE: Command line option 'P' [from -P] is not known.
duyên

@SamHealey Tôi đã sửa đổi câu trả lời của tôi một chút. Hãy thử những gì tôi đề nghị ở đó, và cho chúng tôi biết làm thế nào nó đi.
duyên

1
@Bahamut Tại sao không có sudo với chương trình đồ họa?
duyên

2

Bạn phải tìm tất cả các tệp liên quan đến gói của bạn và lọc chúng, sau đó cài đặt lại.

sudo dpkg --list
sudo apt-get purge "file-name"

lặp lại lệnh thứ hai với mỗi tệp và sau đó chỉ cần cài đặt lại.


0
sudo aptitude install lib_name_depending

làm việc cho tôi khi tôi muốn cài đặt libcurl4-openssl-devtrên Ubuntu 14.04LTS của mình.

Một số lib tùy thuộc không được cài đặt trên máy của tôi và với việc sử dụng công cụ aptitude, tôi quản lý để tương tác cài đặt / hạ cấp các gói / lib cần thiết để có thể cài đặt libcurl4-openssl-dev.

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.