it-swarm-vi.com

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

Tôi vừa 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 gặp 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ờ?

829
jfoucher

Theo một bài viết trên debian-ad dùng.org ,

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 thận trọng 1:

Mỗi 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 giữ lại là "cài đặt thủ công", điều này có thể buộc nhiều người dùng can thiệp hơn (xem bình luận).

Nếu giải pháp của Pablo phù hợp với bạn, vui lòng nâng cấp 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, điều này sẽ buộc cài đặt các 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ỏ các 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à xóa 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 có thể hoạt động ... nhưng có lẽ bạn nên tìm hiểu 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à xóa các gói trên cơ sở từng trường hợp.

Hãy nghĩ về nó giống như sửa xe ... nếu bạn có thời gian và tiện dụng với cờ lê, bạn sẽ có được 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ùng với anh em họ dist-upgrade và hy vọng cô ấy biết công cụ của mình.

845
Michael Crenshaw

Bất cứ khi nào bạn nhận được từ lệnh apt-get upgrade tin nhắn

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 thực hiện nâng cấp phân phối (đây là điều dist-upgrade làm, nếu tôi nhớ chính xác) là ban hành lệnh:

apt-get install <list of packages kept back>

điều này sẽ giải quyết các vấn đề được giữ lại và sẽ yêu cầu cài đặt các gói bổ sung, v.v. như đã được giải thích bằng các câu trả lời khác.

488
user88285

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

  1. cài đặt source.list sai và bạn kết thúc với Ubuntu bị hỏng.
  2. bạn có thể nâng cấp toàn bộ ứng dụng lên phiên bản mà bạn không muốn.

Trường hợp sử dụng: nâng cấp kernel 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ý gói giữ lại:

Sudo aptitude

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

  • Nhấn + vào danh sách đó
  • Lượt g hai lần
  • Trả lời công cụ gỡ lỗi nếu được hỏi
  • Nhấn quay lại để tiếp tục
  • Nhấn Q
  • Bấm có

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

173
mudy

Tại sao bạn không thử câu trả lời Unix SE này :

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ự cài đặt.

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

Sử dụng apt install <pkg> thay vào đó sẽ đánh dấu pkg là "được cài đặt thủ công" !! Để đánh dấu lại là "tự động cài đặt" sử dụng apt-mark auto <pkg> (xem thêm tiểu ban showmanualname__). Thêm thông tin về câu trả lời này .

128
Pablo Bianchi

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 (thông qua Sudo apt-get upgrade) sẽ khiến các gói được thêm hoặc xóa, thì chương trình sẽ bị giữ 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 xóa 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 Ubuntu alpha), dist-upgrade sẽ đề nghị xóa rất nhiều chương trình khác, trong trường hợp đó bạn có thể muốn hủy 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ẽ bị giữ lại. Bạn thực sự không thể làm gì ngoài việc chờ đợi trong trường hợp này, vì gói về cơ bản có thể gỡ cài đặt. Điều này có thể xảy ra khi các gói được thêm vào kho không theo thứ tự, khi gói được đổi tên hoặc khi gói ngừng cung cấp gói ảo.

32
jbowtie

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à nâng cấp) vì "các gói sẽ không bị xóa trừ khi chúng không được sử dụng".

Từ man aptitude:

nâng cấp an toàn

Nâng cấp các gói cài đặt lên phiên bản mới nhất của họ. Các gói đã cài đặt sẽ không bị xóa trừ khi chúng không được sử dụng /.../ Các gói 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.

23
Afilu

Nhiều khả năng các gói này bị 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, ppas hoặc do 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 lần tiếp theo.

Chỉnh sửa :

Có một khả năng khác, các gói có thể bị giữ lại nếu có giữ chúng hoặc nếu chúng được ghim.

20
txwikinger

Đ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 chúng.

9
John Lawrence Aspden

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

Sudo aptitude full-upgrade
8
Singh

Tôi đã thấy rằng aptitude thực hiện công việc tốt hơn trong việc nâng cấp các gói nếu các phiên bản chỉ khác nhau một chút. Tôi đã có một tình huống như thế này:

[email protected]:/etc/apt$ apt-cache policy gzip
gzip:
  Installed: 1.3.5-15
  Candidate: 1.3.5-15+etch1
  Version table:
     1.3.5-15+etch1 0
        500 http://archive.debian.org etch/main Packages
 *** 1.3.5-15 0
        100 /var/lib/dpkg/status

Điều này làm cho apt-get giữ lại bản cập nhật, nhưng aptitude đã cập nhật nó tốt. Tôi không chắc chắn thuật toán nào được sử dụng để xác định xem gói có nên được cập nhật hay không. Tôi đoán hai người này có cùng một phiên bản, chỉ có một 'vòng loại' khác nhau. Nhưng trong mọi trường hợp, apt-get sẽ không cập nhật nó, nhưng aptitude sẽ.

7
Alexander Torstling

Tôi gặp vấn đề này khi một kernel mới được phát hành. (Có thể do tôi đã bật cập nhật không ổn định.) Tôi đã tìm thấy cách đơn giản nhất để thực hiện cài đặt là thông qua trình cài đặt đồ họa của Ubuntu (update-manager).

3
Kazark

Trong trường hợp của tôi, các gói được giữ lại là những gói liên quan đến tiêu đề linux và kernel. Tôi đã giải quyết vấn đề này bằng cách cố gắng giải quyết vấn đề bằng cách có dấu chấm than màu đỏ trong vùng thông báo và không thể cập nhật các gói.

Để giải quyết nó, tôi không phải sử dụng dist-nâng cấp cũng như thủ công apt-get install xxx .

Những gì tôi đã làm và đã giúp được đơn giản và sạch sẽ:

Sudo apt-get update
Sudo apt-get autoremove
Sudo apt-get autoclean
Sudo apt-get upgrade

Tôi đã phải tự xác nhận cập nhật Grub và cấu hình của nó.

Sau đó, tôi chỉ làm việc với máy tính một lúc và sau đó đối thoại cập nhật tiêu chuẩn đã xuất hiện trở lại cuối cùng bao gồm phần "cơ sở Ubuntu" với kernel và có liên quan. Bản cập nhật được thực hiện mà không gặp rắc rối nào và tôi không thấy bất kỳ gói giữ lại nào nữa.

Ngoài ra, điều rất quan trọng là phải nhớ rằng những cập nhật * buntu đó bao gồm cập nhật kernel rất nhạy cảm với ngủ đông - Tôi đã gặp vấn đề này nhiều lần và tôi luôn giải quyết nó bằng cách khởi động lại máy và thực hiện các bước trên.

Vì vậy, có lẽ điều này là vừa đủ?!

(tình huống được mô tả ở đây có liên quan đến Xubfox 15.10 của tôi vào cuối tháng 12 năm 2015)

3
crysman

Tôi gặp vấn đề này khi sử dụng synap vì nó dường như bị treo, và để thử và sửa lỗi này, tôi đã khởi động lại và thử lại.

Sau đó, tôi phát hiện ra một tin nhắn thông tin như là một phần của gói với một số hướng dẫn sau khi cài đặt cho tôi.

Tôi đã phải nhấn "chi tiết", và sau đó 'q' để thoát sau khi đọc tin nhắn, và sau đó mọi việc diễn ra bình thường.

2
Elliptical view

Đây có vẻ là cách chính xác để cài đặt lại gói giữ lại:

apt-get install --reinstall libjpeg-progs

Ít nhất điều này đã làm việc với tôi khi libjpeg-progs bị kẹt sau khi nâng cấp từ Ubuntu 14.04 lên 16.04. Tôi chắc chắn rằng bạn có thể làm tương tự với bất kỳ ứng dụng giữ lại nào khác, ví dụ: gimp.

Nguồn: https://ubuntuforums.org/showthread.php?t= 2321702 & p = 13476183 # post1347618

2
Stephan Henningsen

Trong thực tế, công tắc bạn cần là dselect-upgrade để cài đặt/loại bỏ các phụ thuộc cho bộ gói cụ thể liên quan.

1
Johnny

Tôi đã đọc tất cả các bài viết và thấy rằng có nhiều lời giải thích thú vị. Tôi đã thử tất cả chúng nhưng không có kết quả hoàn toàn. Tôi gặp vấn đề với tiện ích mysql mà tôi không thể nâng cấp. Việc cập nhật đã được đề xuất bởi hệ thống. Vì vậy, tôi muốn chỉ ra một số bước để làm điều đó. Tất nhiên, tôi sẽ lặp lại trong một số khoảnh khắc tất cả các bài viết đã nói ở trên. Đây là sai lầm của tôi, vâng tôi đã tìm thấy nó bởi các bài viết đã tồn tại, nhưng tôi nên làm gì tiếp theo? enter image description here

Bước tiếp theo là:

Sudo apt-get --purge remove mysql-utilities

Kết quả chúng ta có thể thấy trong hình ảnh bên dưới. Tôi gỡ bỏ gói và kiểm tra điều này bằng lệnh:

Sudo apt-get -f install

Kết quả - Tốt thôi! Sau này tôi cài đặt phiên bản mới của gói này một cách chính xác. enter image description here

Theo cách này, tôi nghĩ có thể giúp nhiều người mới hơn vì có các gói khác chúng ta có thể thực hiện các bước tương tự.

Một lần, tôi xin lỗi, khi tôi lặp lại ở một số nơi bài viết khác.

0
Vasyl Lyashkevych