Nếu các phụ thuộc đã thay đổi trên một trong các gói bạn đã cài đặt để một gói mới phải được cài đặt để thực hiện nâng cấp sau đó sẽ được liệt kê là "giữ lại".
Giải pháp thận trọng 1:
Usd Câu trả lời của Pablo bạn có thể chạy sudo apt-get --with-new-pkgs upgrade, và nó sẽ cài đặt các gói giữ lại.
Điều này có lợi ích là không đánh dấu các gói được giữ lại là "được cài đặt thủ công", có thể buộc nhiều người dùng can thiệp hơn (xem nhận xét).
Nếu giải Pháp Của Pablo làm việc cho bạn, xin vui lòng upvote nó. Nếu không, xin vui lòng bình luận những gì đã đi sai.
Giải pháp thận trọng 2:
Giải pháp thận trọng là chạy sudo apt-get install <list of packages kept back>. Trong hầu hết các trường hợp, điều này sẽ cung cấp cho các gói giữ lại những gì họ cần để nâng cấp thành công.
Giải pháp tích cực:
Một giải pháp tích cực hơn là chạy sudo apt-get dist-upgrade, mà sẽ buộc việc cài đặt những phụ thuộc mới.
Nhưng dist-upgradecó thể khá nguy hiểm. Không giống như nâng cấp nó có thể loại bỏ gói để giải quyết các tình huống phụ thuộc phức tạp. Không giống NHƯ BẠN, APT không phải lúc nào cũng đủ thông minh để biết liệu những bổ sung và loại bỏ này có thể tàn phá hay không.
Vì vậy, nếu bạn thấy mình ở một nơi mà "giải pháp thận trọng" không hoạt động, dist-upgrademai làm việc... nhưng có lẽ bạn nên học thêm một chút VỀ APT và giải quyết các vấn đề phụ thuộc bằng tay bằng cách cài đặt và loại bỏ các gói trên cơ sở từng trường hợp cụ thể.
Hãy suy nghĩ về nó như sửa chữa một chiếc xe hơi... nếu bạn có thời gian và có ích với một cờ lê, bạn sẽ nhận được một số sự an tâm bằng cách đọc và tự sửa chữa. Nếu bạn cảm thấy may mắn, bạn có thể thả xe của bạn với anh em họ của bạn dist-upgrade và hy vọng cô ấy biết công cụ của mình.
Bất cứ khi nào bạn nhận được từ lệnh apt-get upgrade thông điệp
The following packages have been kept back:
sau đó, để nâng cấp một hoặc tất cả các gói giữ lại, mà không cần thực hiện nâng cấp phân phối (đây là những gì dist-upgrade does, nếu tôi nhớ một cách chính xác) là vấn đề lệnh:
apt-get install <list of packages kept back>
điều này sẽ giải quyết các vấn đề giữ lại và sẽ yêu cầu cài đặt các gói bổ sung, vv như đã được giải thích bởi các câu trả lời khác.
Sử dụng apt install <pkg> thay vào đó sẽ đánh dấu pkg là "tự cài đặt"!! Để đánh dấu nó một lần nữa là" tự động cài đặt " sử dụng apt-mark auto <pkg> (xem thêm subcommand showmanual). Thông tin thêm về câu trả lời này.
Thông thường có hai lý do bạn có thể thấy thông báo này.
Nếu nâng cấp chương trình (via sudo apt-get upgrade) sẽ gây ra các gói được thêm vào hoặc gỡ bỏ, sau đó chương trình sẽ được tổ chức trở lại. Bạn có thể sử dụng sudo apt-get dist-upgrade trong trường hợp này, sau đó sẽ cung cấp để thêm hoặc loại bỏ các chương trình bổ sung.
Điều này là khá phổ biến và thường không phải là một vấn đề. Đôi khi (đặc biệt là trong một ubuntu alpha) một dist-upgrade sẽ cung cấp để loại bỏ rất nhiều chương trình khác, trong trường hợp này bạn có thể muốn hủy bỏ nó.
Nếu chương trình phụ thuộc vào các gói hoặc phiên bản không có sẵn, thì chương trình sẽ được giữ lại. Bạn thực sự không thể làm bất cứ điều gì nhưng chờ đợi trong trường hợp này, kể từ khi gói về cơ bản là uninstallable. Điều này có thể xảy ra khi các gói được thêm vào kho lưu trữ ngoài trật tự, khi một gói được đổi tên hoặc khi một gói ngừng cung cấp một gói ảo.
Nâng cấp gói cài đặt lên phiên bản mới nhất của họ. Các gói được cài đặt sẽ không được gỡ bỏ trừ khi chúng không được sử dụng /.../ Các gói hiện chưa được cài đặt có thể được cài đặt để giải quyết các phụ thuộc trừ khi tùy chọn dòng lệnh --no-new-installs được cung cấp.
Nhiều khả năng các gói này được giữ lại vì cài đặt của chúng sẽ tạo ra sự không nhất quán phụ thuộc. Điều này có thể xảy ra bởi vì bạn đang sử dụng tài liệu lưu trữ dưới sự phát triển tích cực, ppa, hoặc bởi vì gương bạn sử dụng không được cập nhật đầy đủ.
Trong trường hợp cuối cùng, chỉ cần chờ đợi, khi các phụ thuộc được giải quyết nó sẽ được cài đặt vào thời gian tới.
Sửa:
Có một khả năng khác, các gói có thể được giữ lại nếu có đặt một tổ chức trên chúng, hoặc nếu chúng được ghim.
Ubuntu 18.04, 20.04 (và mới hơn) cung cấp một cú pháp sắp xếp hợp lý thông qua apt full-upgrade những chức năng như sudo apt-get dist-upgrade.
sudo apt full-upgrade
sudo apt upgrade được sử dụng để cài đặt nâng cấp có sẵn của tất cả các gói hiện đang được cài đặt trên hệ thống từ các nguồn cấu hình thông qua các nguồn.danh sách(5). Các gói mới sẽ được cài đặt nếu cần thiết để đáp ứng các phụ thuộc, nhưng các gói hiện có sẽ không bao giờ được gỡ bỏ. Nếu một nâng cấp cho một gói yêu cầu loại bỏ một gói cài đặt nâng cấp cho gói này không được thực hiện.
sudo apt full-upgrade thực hiện chức năng nâng cấp nhưng sẽ hủy bỏ các gói hiện đang được cài đặt nếu điều này là cần thiết để nâng cấp hệ thống như một toàn thể.
Ghi chú: full-upgrade vẫn còn trên phân phối hiện tại.