"Các gói sau đây đã được giữ lại:" Tại sao và làm thế nào để tôi giải quyết nó?

Tôi chỉ cần thêm MỘT KHO LƯU TRỮ PPA cho phiên bản phát triển CỦA GIMP, nhưng tôi nhận được lỗi này:

$ apt-get update && apt-get upgrade...The following packages have been kept back:  gimp gimp-data libgegl-0.0-0 libgimp2.0

Tại sao và làm thế nào tôi có thể giải quyết nó để tôi có thể sử dụng phiên bản mới nhất thay vì phiên bản tôi có bây giờ?

Theo như một bài viết về debian-administration.org,

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-upgrade có 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-upgrade mai 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.

Xem thêm: Tại sao sử dụng apt-get upgrade thay vì apt-get dist-upgrade?

Thử đi Unix SE câu Trả lời:

sudo apt-get --with-new-pkgs upgrade

Điều này cho phép các gói mới được cài đặt. Nó sẽ cho bạn biết những gói nào sẽ được cài đặt và nhắc bạn trước khi thực sự thực hiện cài đặt.

apt lệnh (thân thiện thay thế để apt-get) chia sẻ tùy chọn này.

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.

apt-get dist-upgrade nguy hiểm cho môi trường ổn định,

  1. nhầm nguồn.thiết lập danh sách và bạn kết thúc với ubuntu bị hỏng.
  2. bạn có thể nhận được toàn bộ ứng dụng nâng cấp lên phiên bản bạn không muốn.

Use case: kernel upgrade giữ lại, bạn chỉ muốn nâng cấp kernel, không muốn nâng cấp toàn bộ phân phối.

Cách tốt hơn để xử lý giữ lại gói:

sudo aptitude

Nếu bạn đã giữ lại gói bạn sẽ thấy Gói Nâng cấp trên đầu trang của danh sách.

  • Nhấn + trong danh sách đó
  • Nhấn g hai lần
  • Trả lời debconf stuff nếu được hỏi
  • Nhấn return để tiếp tục
  • Báo Chí Q
  • Nhấn yes

Gói giữ lại của bạn được cài đặt.

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.

Bạn cũng có thể thử:

sudo aptitude safe-upgrade

An toàn hơn full-upgrade (ban đầu được đặt tên là dist-upgrade) bởi vì "các gói sẽ không được gỡ bỏ trừ khi chúng không được sử dụng".

Từ man aptitude:

nâng cấp an toàn

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.

Điều này làm việc cho tôi

sudo aptitude full-upgrade

Điều này thường là do gói đã thêm phụ thuộc và nâng cấp không muốn thêm nó cho bạn mà không được phép.

Nếu bạn chạy:

sudo apt-get install gimp gimp-data libgegl-0.0-0 libgimp2.0

Sau đó, các phiên bản mới nên được cài đặt cùng với sự phụ thuộc mới của họ.

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.

Xem: apt trang người đàn ông: 18.04, 20.04

Thật là một tin nhắn rác. Tại SAO HỆ ĐIỀU hành không thể chỉ làm những việc cần thiết?