Làm thế nào để hạ cấp một gói thông qua apt-get?


309

Làm cách nào tôi có thể hạ cấp gói xuống phiên bản cũ hơn apt-get?

Các công cụ khác cũng được chấp nhận nhưng apt-getđược ưa thích.

Câu trả lời:


307

Nếu bạn có số phiên bản hoặc bản phát hành mục tiêu, apt-gethỗ trợ chọn phiên bản cụ thể hoặc bản phát hành mục tiêu. Thông tin chi tiết có thể được tìm thấy trên trang thủ công của apt-get . Nó cũng có thể được truy cập từ thiết bị đầu cuối bằng cách gõman apt-get

sudo apt-get install <package-name>=<package-version-number> HOẶC LÀ

sudo apt-get -t=<target release> install <package-name>

là lệnh được chạy. Điều này có thể được sử dụng để hạ cấp một gói thành một phiên bản cụ thể.

Nó đã được chỉ ra một cách hữu ích trong các ý kiến ​​rằng

  • apt-cache showpkg <package-name>liệt kê tất cả các phiên bản có sẵn. (h / t Sparhawk )
  • apt-mark hold <package-name> "Giữ" gói ở phiên bản hiện tại, ngăn chặn nâng cấp tự động. (h / t Luís de Sousa )

58
Ngoài ra, sử dụng apt-cache showpkg <package-name>để liệt kê các phiên bản có sẵn.
Sparhawk

16
Và sau đó bạn cũng có thể muốn chạy: apt-mark hold <package-name>để tránh nâng cấp tự động.
Luís de Sousa

4
Tôi thấy rằng aptitudehạ cấp các phụ thuộc tốt hơn apt-get.
krispy

5
apt-cache policy <package-name>chỉ hiển thị các phiên bản đã cài đặt và có sẵn
Michael Lawton

18
Và nếu showpkgkhông hiển thị phiên bản bạn quan tâm thì sao?
demongolem

104

SỬ DỤNG

apt-get install «pkg»=«version»

HOẶC LÀ

sudo aptitude install «pkg»=«version»

Trong đó «pkg» là tên của gói và «phiên bản» là số phiên bản.


3
khi tôi gõ apt-get install pkg=versioncác ưu đãi apt-get, loại bỏ gần một nửa tất cả các gói đã cài đặt, tất nhiên đó không phải là điều tôi muốn làm
Dfr

Như được chỉ ra trong câu trả lời (giống hệt) với nhiều phiếu hơn, đây dường như là một trong những trường hợp quan trọng trong đó aptitudethực hiện công việc tốt hơn nhiều apt-get. Trong trường hợp của tôi, tôi apt-getđã thẳng thừng từ chối yêu cầu hạ cấp, trong khi aptitudechỉ ra rằng có những pkg khác phụ thuộc vào phiên bản mới hơn (và do đó cần hạ cấp cùng một lúc).
sxc731

28

Nếu bạn đã nâng cấp phần mềm bằng ppa, bạn có thể hạ cấp phần mềm bằng cách sử dụng ppa-purge. Đầu tiên bạn phải cài đặt ppa-purgebằng mã này:

sudo apt-get cài đặt ppa-purge

Sau đó, bạn có thể loại bỏ ppa bằng lệnh

sudo ppa-purge ppa: tên người dùng / ppa

việc này sẽ tự động hạ cấp phần mềm xuống phiên bản gốc được bán kèm với Ubuntu.


1
Giải pháp này là vô song trong trường hợp gói có phụ thuộc cũng phải hạ cấp. Cảm ơn!

1
Có, đây là giải pháp phù hợp nhất với tôi khi hạ cấp máy tính để bàn KDE / Plasma từ kubfox-ppa / backports - một điều tôi nhận thấy là tệp .list của PPA không được gỡ lỗi, vì vậy ppa-purge có thể tham chiếu tất cả các tệp cần phải được loại bỏ để thanh trừng. Mất một phút để tôi hiểu tại sao nó không hoạt động lúc đầu. Mong rằng sẽ giúp được người khác!
AveryFreeman

10

Để hạ cấp, bạn phải thực hiện một lệnh như

 sudo apt-get install pkg_name=version

trong thiết bị đầu cuối của bạn.

Ở vị trí versionđặt phiên bản trước bạn muốn hạ cấp xuống.


Nó không hoạt động ít nhất cho linux-generic, điều này phụ thuộc vào các gói cũng bị hạ cấp. Tôi nhận được paste.ubfox.com/p/NWSmf2ZwTy
mymedia

9

Theo tôi, trước tiên bạn nên gỡ cài đặt hoặc lọc gói, như:

sudo apt-get remove <package>

hoặc là

sudo apt-get purge <package>

Sau đó, bạn có thể tải xuống phiên bản bạn muốn cài đặt và giữ nó trong một thư mục, nói abc.debtrong Tải xuống. Mở terminal, di chuyển đến thư mục bằng cdlệnh và cài đặt phiên bản trước bằng cách sử dụng dpkg:

sudo dpkg -i abc.deb

Hoặc nếu không, có một tiện ích nhỏ được gọi ppa-purgenếu bạn muốn hạ cấp các gói được cập nhật qua PPA.

Xem chủ đề này: http://www.webupd8.org/2009/12/remove-ppa-reposeocate-via-command.html


3
loại bỏ một gói có thể loại bỏ nhiều phụ thuộc, dẫn đến một hệ thống không thể sử dụng. ppapurge nghe có vẻ thú vị mặc dù.

12
Bạn có thể giải thích lý do tại sao bạn tin rằng trước tiên chúng ta nên gỡ cài đặt các gói (như một bước riêng biệt) trước khi cài đặt các phiên bản cũ hơn của chúng không?
Eliah Kagan


1
@temoto liên kết đó là để hạ cấp các bản phát hành unstable-> testing-> stablekhông hạ cấp các gói riêng lẻ.
Braiam

0

Câu hỏi này đã cũ nhưng google đã dẫn tôi đến đây và tôi đã không tìm thấy tâm hồn đơn giản mà không yêu cầu phiên bản thủ công chuyển qua khi hạ cấp các gói xuống bản phát hành cũ hơn.

Vì vậy, có lẽ ai đó cũng cần điều đó cũng sẽ thấy giải pháp hữu ích của tôi.

Có một công cụ được gọi là apt-show-versionshiển thị các phiên bản được cài đặt.

Bạn có thể dễ dàng hạ cấp tất cả các gói cần thiết bằng cách tinh chỉnh regex nhưng đây là:

$ sudo apt-get install $(apt-show-versions | grep -P 'newer than version in archive' | awk -F: '{print $1"/jessie"}')

Thay vì jessiebạn có thể sử dụng buster/ xenial/ etc tùy theo nhu cầu của bạn.


Hoặc tự động hạ cấp xuống bản phát hành được cài đặt cập nhật : sudo apt-get install -V $(apt-show-versions | grep -F 'newer than version in archive' | awk -F: '{print $1"/'$(lsb_release -cs)'"}'). Tôi thích sử dụng -Fcho grepở đây.
jarno

Bạn nên chạy sudo apt-show-versions -itrước, nếu bộ đệm gói đã hết hạn.
jarno
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.