apt nói gói đã được giữ lại, phải làm gì?


22

Đầu ra của apt-get upgradelà:

The following packages have been kept back:
certbot python-acme python-certbot python-certbot-apache python-cryptography python-openssl

Điều đó có nghĩa là gì? Tôi có nên hành động? Nếu vậy thì sao?

Câu trả lời:


36

Giải pháp nhanh chóng và DỄ DÀNG:

Tôi đã có cùng một vấn đề, nhiều lần. KHÔNG làm sudo apt-get dist-upgradetrước. Rất quan trọng. **** LƯU Ý: Giải pháp này dành cho các máy dựa trên Debian nhưng sẽ không hoạt động trên KDE Neon . Để cập nhật KDE Neon, bạn phải sử dụng sudo pkcon update. ****

Tại sao?

Nó có thể làm cho hệ thống của bạn rất không ổn định, các chương trình có thể bị sập và bạn có thể mất rất nhiều chức năng trong HĐH.

Bạn PHẢI cài đặt từng gói riêng lẻ, TUY NHIÊN , trong quá trình đó, các phụ thuộc khác cũng sẽ được cài đặt tự động và vấn đề của bạn sẽ được giải quyết chỉ sau vài phút.

Tôi đã không có vấn đề với giải pháp sau đây. Nó khá nhanh chóng và dễ dàng.


Đầu tiên, làm điều này:

apt list --upgradable

  • Điều này sẽ hiển thị một danh sách các gói có thể được nâng cấp.

Tiếp theo, làm điều này:

  • Bắt đầu ở đầu danh sách với gói và loại đầu tiên:

sudo apt-get install package-name-here

  • Điều này sẽ chạy qua quá trình cài đặt và kéo / cài đặt phụ thuộc.

Sau khi quá trình đó hoàn thành, hãy làm điều này:

apt list --upgradable

  • Điều này sẽ một lần nữa cho thấy các gói có thể được nâng cấp. Danh sách các gói của bạn bây giờ sẽ giảm. Thực hiện theo danh sách các gói và gõ apt list --upgradablesau mỗi gói cài đặt. Điều này chỉ nên mất một vài phút để hoàn thành.

Cuối cùng:

sudo apt-get autoclean

sudo apt-get update && sudo apt-get dist-upgrade

Nếu giải pháp này hiệu quả với bạn, xin đừng quên nâng cấp nó để giải pháp chính xác có sẵn cho người khác và nằm ở đầu danh sách câu trả lời.

Nếu vì lý do nào đó, giải pháp này không phù hợp với bạn, vui lòng xem câu trả lời của người dùng GAD3R bên dưới. Nó cũng là một giải pháp tốt.

Cảm ơn.


1
Đối với tôi gói đó là tối thiểu Ubuntu. Hướng dẫn của bạn làm việc hoàn hảo.
DeanM

Đừng sử dụng giải pháp này nếu bạn đang sử dụng KDE Neon.
Gregory Smitherman

11

Điều đó có nghĩa là gì?

The following packages have been kept back:

Câu trả lời là đây

Điều này có nghĩa là có những phiên bản mới của các gói này sẽ không được cài đặt vì một số lý do. Lý do có thể là phụ thuộc bị hỏng (gói mà phụ thuộc không có phiên bản để tải xuống) hoặc phụ thuộc mới (gói đã phụ thuộc vào gói mới kể từ phiên bản trước).

Tôi có nên hành động?

Bạn cần sử dụng dist-upgradeđể cài đặt các phụ thuộc mới và nâng cấp các gói:

sudo apt-get dist-upgrade

Vấn đề có thể được giải quyết bằng cách chạy dist-upgradenếu không bạn cần phải:

Sửa lỗi phụ thuộc bị hỏng

sudo apt-get -f install 

Xóa một số gói không còn được cài đặt trên hệ thống của bạn:

sudo apt-get autoclean

Giữ gói mong muốn ở trạng thái chờ:

echo "<package_name> hold" | dpkg --set-selections

Cấu hình lại gói được đặt tên:

dpkg-reconfigure <package_name>

3

Từ câu trả lời Unix SE này :

Đầu tiên như đã đề cập ở trên, xin vui lòng KHÔNG nâng cấp bất kỳ hệ thống sản xuất nào! Mặc dù nâng cấp từ xa sẽ "giải quyết" các gói được giữ lại, nhưng nó chắc chắn không phải là giải pháp cho vấn đề này và rất có thể sẽ khiến bạn đau buồn hơn là tốt nếu bạn chạy nó mà không biết những tác động trên hệ thống của mình.

Nếu nâng cấp gói yêu cầu cài đặt các gói bổ sung, nó sẽ được "giữ lại" khi chạy sudo apt-get upgrade.

Như đã đề cập ở trên, bạn có thể cài đặt các gói "giữ lại" này bằng tay bằng cách chạy rõ ràng sudo apt-get install [paste kept back packages here]nhưng điều này sẽ đánh dấu các gói này là "cài đặt thủ công" thường không phải là những gì chúng ta muốn.

Để tự động cài đặt bất kỳ gói bổ sung nào cần thiết để nâng cấp các gói "giữ lại" trong khi không đánh dấu các gói "giữ lại" như cài đặt thủ công chỉ cần chạy sudo apt-get --with-new-pkgs upgrade.


Thêm về --with-new-pkgsvà các tác dụng phụ của các lựa chọn thay thế khác ở đây .
Pablo A

2

Tôi bao gồm câu trả lời này trong blog của tôi. Nếu bạn muốn thấy rằng bạn có thể đến đó từ liên kết này .

Lỗi trên rất phổ biến trong thiết bị đầu cuối Ubuntu khi bạn cố nâng cấp ( apt-get upgrade). Điều này thường xảy ra vì sự phụ thuộc của một gói bạn cài đặt đã thay đổi. Để nâng cấp, trước tiên bạn cũng cần nâng cấp chúng. Vì vậy, nó rất đơn giản để giải quyết điều đó. Bạn sẽ có thể thấy các gói được giữ lại bên dưới thông báo lỗi này. như một ví dụ tôi có thể thấy các gói sau trong danh sách:

gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Đừng chỉ gõ sudo apt-get dist-upgradeNó rất nguy hiểm vì nó cài đặt tất cả các bản cập nhật đang chờ xử lý. Điều này có thể đưa môi trường làm việc của bạn đến một trạng thái không ổn định cao.

Do đó, ý kiến ​​của tôi là sử dụng nổi tiếng

sudo apt-get install [package]

Bạn có thể thay thế [package]bằng bất kỳ gói nào trong thông báo lỗi. Ngoài ra, bạn có thể đặt chúng như là một danh sách (chỉ cần sao chép và dán nó). Như một ví dụ trong trường hợp của tôi, tôi có thể nhập

sudo apt-get install gnome-software gnome-software-common linux-generic linux-headers-generic linux-image-generic snapd ubuntu-core-launcher ubuntu-software

Nếu bạn muốn làm

sudo apt-get dist-upgrade

vì một số lý do, chỉ cần đảm bảo kiểm tra danh sách các gói bằng cách sử dụng tùy chọn mô phỏng -s( sudo apt-get -s dist-upgrade) hoặc không có -stùy chọn bạn có thể chấm dứt thực thi trước khi chấp nhận. (bạn luôn có thể chọn tùy chọn không)


2

Gần đây, một bản cập nhật bảo mật Debian đã giới thiệu một vài phụ thuộc mới. Trong trường hợp này, linux-imagegói bắt đầu yêu cầu linux-firmware, trong số một vài người khác. Vì vậy, họ đã được giữ lại và không được cài đặt bởi unattended-upgrade. Sau một số thử nghiệm và xác nhận tôi đã có thể lựa chọn cài đặt chỉ những gói, trong khi không cảm động cập nhật đang chờ khác:

apt-get -yy install $(apt-get -s upgrade | sed '1,/kept back/d;/will be upgraded/,$d')


1

Bài viết này tóm tắt độc đáo tại sao điều này xảy ra:

Nếu các phụ thuộc đã thay đổi trên một trong các gói bạn đã cài đặt để gói mới phải được cài đặt để thực hiện nâng cấp thì nó sẽ được liệt kê là "giữ lại".

Giải pháp cho vấn đề này là cài đặt chúng một cách rõ ràng với

sudo apt install [packages]

Bạn có thể muốn đánh dấu các gói này là tự động cài đặt, trừ khi bạn quan tâm đến chúng và không chỉ để đáp ứng sự phụ thuộc.

sudo apt-mark auto [packages]

Để ngăn chặn điều này xảy ra ở nơi đầu tiên, tôi khuyên bạn nên sử dụng

sudo apt --with-new-pkgs upgrade

để nâng cấp các gói trong tương lai, cho phép cài đặt các gói mới để đáp ứng các thay đổi trong phụ thuộc.


Hai ngón tay cái lên cho --with-new-pkgs! Và hãy để tôi nhấn mạnh một lần nữa rằng, " ĐỪNG nâng cấp bất kỳ hệ thống sản xuất nào! chạy nó mà không biết những tác động trên hệ thống của bạn. "
xpt
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.