我们在一些我们坚持使用的服务器上有一些 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
感谢您的回答!
优先 via
Pin: origin
在您的情况下不起作用,因为它需要一个主机名作为参数:Pin: origin ppa.launchpad.net
由于两个回购协议都在
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
.因此,您可以尝试通过版本号固定:
另一种方法是通过
release
带有回购发行人名称的选项固定:Pin: release o=<issuer>
<issuer>
要在不同的回购协议上找出正确的值,请apt-cache policy
不带参数运行。