我们在一些服务器上有几个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
由于两个回购都在ppa.launchpad.net上,这对你没有帮助.
您可以在此处找到提供较低版本的原因:
http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Version
版本号1.4.1-1ppa0~precision缺少epoch部分,因此这被解释为apt为0:1.4.1-1ppa0~precact,精确度低于1:1.2.6-1~43~.
因此,您可以尝试通过版本号固定:
Pin: version 0:*
Pin:release o =< issuer>
要找出< issuer>的正确值.在不同的repos上,运行不带参数的apt-cache策略.