我们的一些服务器上有一些 PPA 源,我们会坚持使用这些源/etc/apt/sources.list.d
。其中一些存储库提供相同的软件包(就名称而言),但版本不同,二进制文件也可能不同。有没有办法让我们优先考虑一个存储库而不是另一个?
我读了 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
谢谢您的回答!
答案1
在您的情况下,通过优先排序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
缺少时代部分,因此 apt 将其解释为0:1.4.1-1ppa0~precise
,低于1:1.2.6-1~43~precise
。
因此,您可以尝试通过版本号进行固定:
Pin: version 0:*
另一种方法是通过release
回购发行人的名称进行固定:
Pin: release o=<issuer>
要找出<issuer>
不同存储库的正确值,apt-cache policy
请不带参数运行。