在 Ubuntu 中優先考慮儲存庫
我們在我們堅持使用的一些伺服器上有一些 PPA 資源
/etc/apt/sources.list.d
。其中一些 repos 提供相同的包(在名稱方面)但不同的版本和可能不同的二進製文件。有沒有辦法我們可以優先考慮一個回購而不是另一個?我閱讀了 apt_preferences 教程,但它非常晦澀難懂,也沒有找到我問題的答案。這是情況。我們有以下來源:
$ ls -l /etc/apt/sources.list.d total 12 -rw-r--r-- 1 root root 66 Jan 2 16:50 nginx-source.list -rw-r--r-- 1 root root 84 Jan 2 16:49 ruby-ng-experimental-source.list
其中
nginx-source.list
:deb http://ppa.launchpad.net/nginx/stable/ubuntu precise main
和
ruby-ng-experimental-source.list
:deb http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu precise main
這兩個來源都提供了不同版本的 nginx-full 包等。當我列出優先級時,ruby-ng-experimental-source.list 位於輸出之上,因此 nginx-full 是從該目錄安裝的:
$ apt-cache policy nginx-full nginx-full: Installed: 1:1.2.3-1~38~precise1 Candidate: 1:1.2.6-1~43~precise1 Version table: 1:1.2.6-1~43~precise1 0 500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages *** 1:1.2.3-1~38~precise1 0 100 /var/lib/dpkg/status 1.4.1-1ppa0~precise 0 500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages 1.1.19-1ubuntu0.1 0 500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages 1.1.19-1 0 500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages
如何優先考慮 nginx-source.list 中列出的 repo?
我試過這樣的事情:
$ cat /etc/apt/preferences Package: nginx-full Pin: origin http://ppa.launchpad.net/nginx/stable/ubuntu Pin-Priority: 1000 Package: nginx-full Pin: origin http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu Pin-Priority: 100
但這改變了所有來源的優先級 - 或類似的東西?
$ apt-cache policy nginx-full nginx-full: Installed: 1:1.2.3-1~38~precise1 Candidate: 1:1.2.6-1~43~precise1 Package pin: (not found) Version table: 1:1.2.6-1~43~precise1 1000 500 http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu/ precise/main amd64 Packages *** 1:1.2.3-1~38~precise1 1000 100 /var/lib/dpkg/status 1.4.1-1ppa0~precise 1000 500 http://ppa.launchpad.net/nginx/stable/ubuntu/ precise/main amd64 Packages 1.1.19-1ubuntu0.1 1000 500 http://mirror.rackspace.co.uk/ubuntu/ precise-updates/universe amd64 Packages 1.1.19-1 1000 500 http://mirror.rackspace.co.uk/ubuntu/ precise/universe amd64 Packages
感謝您的回答!
在您的情況下,通過優先級
Pin: origin
不起作用,因為它需要主機名作為參數:
Pin: origin ppa.launchpad.net
由於兩個 repos 都在
ppa.launchpad.net
,這對你沒有幫助。您可以在此處找到為您提供較低版本的原因:
http://www.debian.org/doc/debian-policy/ch-controlfields.html#sf-Version
版本號
1.4.1-1ppa0~precise
缺少 epoch 部分,所以這被 apt 解釋為0:1.4.1-1ppa0~precise
,低於1:1.2.6-1~43~precise
.因此,您可以嘗試通過版本號進行固定:
Pin: version 0:*
另一種方法是通過
release
帶有回購發行人名稱的選項進行固定:
Pin: release o=<issuer>
要找出
<issuer>
不同 repos的正確值,請apt-cache policy
不帶參數執行。