Câu hỏi Không thể khắc phục sự cố, bạn đã giữ các gói bị hỏng


Sau khi nâng cấp từ 10.04 lên 12.04 Tôi đang cố gắng cài đặt các gói khác nhau. Ví dụ: ia32-libs và skype (4.0).

Khi cố gắng cài đặt chúng, tôi nhận được thông báo lỗi 'Không thể sửa lỗi, bạn đã giữ các gói bị hỏng'.

Đầu ra của lệnh:

sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Sau khi chạy này:

sudo dpkg --configure -a
foo@foo:~$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

178
2017-11-28 23:48


gốc


Nó có thể hữu ích nếu bạn chỉ cho chúng tôi lệnh bạn đang thực sự cố gắng (chẳng hạn như sudo apt-get install ia32-libs) và đầu ra từ lệnh đó. Ngoài ra, không sudo apt-get dist-upgrade hiển thị bất kỳ bản cập nhật nào có sẵn? - thomasrutter
Tôi không biết có vấn đề gì với câu hỏi của bạn, tôi không thấy bất kỳ lỗi thực sự nào, cũng như lỗi bạn mô tả trong tiêu đề của bạn. - Braiam
có thể trùng lặp Làm cách nào để giải quyết các phụ thuộc chưa được đáp ứng? - Eliah Kagan
Liên quan: E: Không thể khắc phục sự cố, bạn đã giữ các gói bị hỏng - Melebius


Các câu trả lời:


Thông báo lỗi cụ thể đó có thể cho biết rằng bạn đã giữ các gói, nhưng nó cũng có thể chỉ ra một vấn đề khác.

Bạn có thể nhận danh sách thực tế tổ chức các gói với:

dpkg --get-selections | grep hold

Nếu không có gì, hoặc không ai nhìn thấy liên quan, thì đó có thể là một cái gì đó khác. Kiểm tra cẩn thận đầu ra của lệnh bạn đang thử khi bạn nhận được thông báo lỗi, vì có thể có các đầu mối khác trong toàn bộ đầu ra từ lệnh đó, ngoài thông báo lỗi.

Một phương pháp xử lý sự cố khác có thể là sử dụng aptitude thay vì apt-get để thử cài đặt gói của bạn:

sudo aptitude install <packagename>

Aptitude sẽ từ bỏ một cách dễ dàng hơn, và sẽ cố gắng tìm ra các giải pháp có thể liên quan đến việc sửa đổi các gói khác. Nó có thể cung cấp cho bạn giải thích thêm về vấn đề và các tùy chọn để sửa chữa nó.

Đôi khi aptitude sẽ quá háo hức để loại bỏ hoặc hạ cấp số lượng lớn các gói để đáp ứng yêu cầu của bạn, trong trường hợp này thử lại với -f thay đổi các ưu tiên của nó và giúp nó đưa ra các giải pháp liên quan đến việc xóa / hạ cấp gói ít hơn ngay cả khi điều đó có nghĩa là không phải tất cả các thay đổi mà bạn yêu cầu đều có thể đi trước:

sudo aptitude -f install <packagename>

198
2017-11-29 01:58



Bất kỳ ý tưởng làm thế nào để unhold một gói? :-) - Eugene van der Merwe
Đó là một câu hỏi riêng. - thomasrutter
Aptitude hữu ích cho tôi hơn apt-get, cảm ơn gợi ý. - szx
Một điều cần lưu ý là aptitude có thể làm cho nó dễ dàng hơn để làm thiệt hại nhiều hơn cho hệ thống của bạn. Ví dụ, nếu apt-get không cài đặt được gì đó vì các phụ thuộc xung đột nó sẽ bỏ cuộc. Tuy nhiên, aptitude có thể cung cấp để đi trước, nhưng gỡ bỏ cài đặt một bó toàn bộ các gói khác để đáp ứng những xung đột đó - hoặc thậm chí hạ cấp gói. Bạn chỉ cần phải nhận thức được những gì nó gợi ý và tiến hành chỉ khi đó là một ý tưởng tốt. - thomasrutter
Các gói "giữ" không có gì liên quan đến thông báo, chỉ cần tránh xung đột bằng cách giữ chúng xuống (không cài đặt, nâng cấp, hạ cấp hoặc loại bỏ). - Braiam


Điều đó xảy ra với tôi quá. Tất cả những gì tôi đã làm là sudo apt-get update và điều đó đã khắc phục được sự cố của tôi. Chúc may mắn.


24
2017-08-27 02:43





Tôi chạy vào một kịch bản tương tự về thiếu phụ thuộc. Trong trường hợp của tôi, tôi đã cố gắng để cài đặt curl trên ubuntu saucy salamander 13.10 ...

Lỗi nói rằng sự phụ thuộc yêu cầu một phiên bản cũ hơn của thư viện curl3.

Tôi đã có thể làm suy giảm đến phiên bản trước đó bằng cách cố gắng cài đặt curl bằng cách sử dụng aptitude.

Khi nó ghi nhận sự thiếu phụ thuộc, và lý do (yêu cầu một phiên bản trước đó của tệp thư viện), nó đã cho tôi một số tùy chọn trong cách trả lời ... y //n/q

Y sẽ hủy bỏ cài đặt, N sẽ tìm kiếm một tùy chọn khác và Q chỉ đơn giản là sẽ bỏ thuốc lá và không làm gì hơn, để lại một gói bị hỏng.

tôi đã chọn Nvà nó đã cho tôi tùy chọn hạ cấp tệp thư viện xuống phiên bản cũ hơn. Vì vậy, đó là những gì tôi đã làm, và curl hoàn thành cài đặt không có lỗi nhiều hơn nữa.

  • Tôi có thể xem xét nâng cấp tệp thư viện một lần nữa sau khi cài đặt, nhưng hey, cho đến nay rất tốt.

7
2018-03-02 06:53





Tôi đã có một kịch bản tương tự trong bản cài đặt mới 14.04, không có tệp nào được liệt kê trong dpkg --get-selections | grep hold, và không có niềm vui sau sudo apt-get update.

đã làm sửa nó cho tôi là một cách đơn giản

sudo apt-get autoremove

Khi tôi cố gắng cài đặt lại gói bị lỗi, nó hoạt động tốt. Yay!


7
2017-07-27 13:41





Đã có cùng một vấn đề, tôi chạy lệnh kiểm tra gói đó từ câu trả lời khác (dpkg --get-selections | grep hold)  và cưa

tomcat7                                         deinstall
tomcat7-common                                  install

vì vậy tôi đã sử dụng "apt-get remove tomcat7-common"

Sau đó, tôi có thể cài đặt Tomcat 6 (Tôi đã gỡ bỏ Tomcat 7 và cài đặt Tomcat 6 như bạn làm).


4
2017-10-03 11:03



Các gói "giữ" không liên quan gì đến tin nhắn, chỉ là xung đột đã tránh được bằng cách giữ chúng xuống (không cài đặt, nâng cấp, hạ cấp hoặc loại bỏ) - Braiam
thêm thanh lọc cờ: apt-get remove --purge packet - Sergio Abreu


Đối với tôi, không có điều nào ở trên hiệu quả vì hệ thống của tôi không được cập nhật. tôi đã làm

Home Key > Software Updater > Install 

và cập nhật hệ thống của tôi; sau đó, tôi có thể cài đặt gói của tôi bình thường với apt.


0
2018-05-25 14:01