Có thể chỉ cho phép cập nhật các gói cụ thể từ PPA


19

Giả sử tôi đã thêm một PPA có gói X mà tôi muốn nhưng nó cũng có gói Y mà tôi không muốn sử dụng hoặc nhận các bản cập nhật từ đó. Làm cách nào tôi có thể, từ cùng một PPA, nhận được các bản cập nhật cho một gói cụ thể nhưng từ chối các bản cập nhật từ cùng một PPA cho các gói khác.

Một ví dụ từng bước sẽ tốt vì điều này đã xảy ra với tôi trong một số PPA có gói cụ thể mà tôi muốn nhưng cũng có thêm một loạt các gói khác mà tôi chưa muốn cập nhật.

Câu trả lời:


16

Bạn sẽ sử dụng cái được gọi là "ghim"

Giả sử bạn đang cài đặt gói foo từ PPA, bạn gần như chắc chắn sẽ cần phải cài đặt bất kỳ phụ thuộc nào từ ppa.

Nhưng nếu có các chương trình khác, bạn có thể chỉ định kho lưu trữ nào sẽ được sử dụng với ghim.

Xem ghim Ubuntu Ubuntu

Có một ví dụ về việc ghim một ppa trên trang đó

https://help.ubfox.com/community/PinningHowto#Pinning_the_ubfox-mozilla-daily_PPA

Từ trang wiki:

Để nâng cấp apt-get không gây đau đớn nhất có thể, hãy đặt mức độ ưu tiên Pin thấp hơn trên PPA, điều này sẽ ngăn các phiên bản gói không mong muốn cài đặt. Sau khi được đặt, các gói từ PPA ubfox-mozilla-hàng ngày sẽ luôn thua trong bất kỳ cuộc thi nào với các gói từ các kho khác, ngay cả khi chúng có phiên bản cao hơn.

Tạo tập tin /etc/apt/preferences.d/ubuntu-mozilla-daily-pin-400

Thêm phần sau vào tập tin:

Package: *
Pin: release o=LP-PPA-ubuntu-mozilla-daily
Pin-Priority: 400

Sử dụng các lệnh sau, trước và sau, để kiểm tra xem Ưu tiên pin đã được cập nhật chưa.

apt-cache policy

apt-cache policy firefox-3.5

7

Trước hết, nếu bạn đã nâng cấp các gói từ PPA do nhầm lẫn, hãy xem câu trả lời sau: https://askubfox.com/a/142808/103117 cụ thể là phần sử dụng ppa-purge. Vì tôi đã nâng cấp các gói và apt-get sẽ không hạ cấp bất kể mức độ ưu tiên nào, nên dễ dàng thanh lọc tất cả các gói đã nâng cấp trước, sau đó sửa các ưu tiên, sau đó thêm lại PPA và chỉ nâng cấp các gói bạn muốn.

Để biết giải thích đầy đủ về hệ thống ưu tiên / ghim, xem man apt_preferences.

Nếu một gói có sẵn từ nhiều nguồn, mỗi nguồn sẽ được chỉ định mức độ ưu tiên và bạn có thể thấy điều đó với apt-cache policy <package name>. Ví dụ: tôi sử dụng một PPA có tên nathan-renniewaldock / ppa / ubfox và tôi không muốn cài đặt mysql-server-5.5 ("gói Y" của tôi từ đó. Vì vậy, tôi có thể kiểm tra tình hình hiện tại của mình với:

rob@frodo:~$ apt-cache policy mysql-server-5.5
mysql-server-5.5:
  Installed: 5.5.27-1~ppa1~precise
  Candidate: 5.5.27-1~ppa1~precise
  Version table:
 *** 5.5.27-1~ppa1~precise 0
        500 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
        100 /var/lib/dpkg/status
     5.5.24-0ubuntu0.12.04.1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
     5.5.22-0ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Vì vậy, vì mọi thứ đều được ưu tiên 500, theo trang man, người có số phiên bản cao nhất được chọn.

Ví dụ: nếu bạn chỉ muốn cài đặt ddclient ("gói X") chứ không phải bất kỳ gói nào khác, bạn muốn giảm mức ưu tiên cho tất cả các gói trong PPA ngoại trừ ddclient. Tạo một tập tin gọi là /etc/apt/preferences.d/nathan-preferences. Lưu ý rằng tất cả các tệp trong thư mục đó đều được đọc và có một số quy tắc về tên tệp (nó phải chỉ chứa các ký tự chữ và số, dấu gạch ngang, dấu gạch ngang và không có phần mở rộng hoặc kết thúc bằng .pref).

Đầu tiên chúng ta cần biết cách xác định PPA của mình. Các apt-cache policylệnh trên dispays thông tin riêng của mình về tất cả các nguồn. Tôi biết PPA của tôi có "nathan" trong tên nên tôi làm:

$ apt-cache policy | grep nathan
400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main i386 Packages
     release v=12.04,o=LP-PPA-nathan-renniewaldock,a=precise,n=precise,l=PPA,c=main

Phần thú vị là "o = LP-PPA-nathan-renniewaldock", mà chúng tôi sử dụng trong tệp /etc/apt/preferences.d/nathan-prefs như thế này:

Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400

Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500

Điều này đặt mọi thứ trong PPA thành mức ưu tiên 400, sau đó biến ddclient trở lại mức mặc định 500. Bây giờ, tôi có thể kiểm tra xem nó đã hoạt động chưa:

$ apt-cache policy ddclient
ddclient:
  Installed: 3.8.0-11.4ubuntu1
  Candidate: 3.8.1-0~ppa1~precise
  Package pin: 3.8.1-0~ppa1~precise
  Version table:
     3.8.1-0~ppa1~precise 500
        400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
 *** 3.8.0-11.4ubuntu1 500
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/universe amd64 Packages
        100 /var/lib/dpkg/status

Vì vậy, ddclient có mức ưu tiên là 500, giống như gói Ubuntu gốc, nhưng nó sẽ được cài đặt từ nathan PPA vì đây là phiên bản cao hơn. Bây giờ hãy đảm bảo các gói khác sẽ không được cài đặt:

$ apt-cache policy mysql-server
mysql-server:
  Installed: 5.5.24-0ubuntu0.12.04.1
  Candidate: 5.5.24-0ubuntu0.12.04.1
  Version table:
     5.5.27-1~ppa1~precise 0
        400 http://ppa.launchpad.net/nathan-renniewaldock/ppa/ubuntu/ precise/main amd64 Packages
 *** 5.5.24-0ubuntu0.12.04.1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu/ precise-security/main amd64 Packages
        100 /var/lib/dpkg/status
     5.5.22-0ubuntu1 0
        500 http://gb.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

Trong trường hợp này, gói từ nathan PPA có mức ưu tiên 400 thấp hơn so với Ubuntu, do đó, mặc dù là phiên bản cao hơn nhưng nó sẽ không được nâng cấp. Chúng tôi có thể kiểm tra với:

$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
  ddclient
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 77.7 kB of archives.
After this operation, 11.3 kB of additional disk space will be used.
Do you want to continue [Y/n]?

Vì chỉ có gói tôi muốn được nâng cấp, tôi rất vui khi được đồng ý.

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.