为PPA分配更高的优先级

我试图弄清楚如何为一个PPA分配更高的优先级而不是另一个PPA。 我在这个论坛上看了很多答案,但没有一个能解决我的问题。

我们在一些服务器上有两个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位于输出之上,因此从该repo安装了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优先于列表顶部的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 

但这已经将两个来源的优先级改为相同的数字 – 或类似的东西? 所以这并没有改变优先级,nginx-full仍然是从brightbox PPA安装的

 $ 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 

任何人都知道如何实现我想要做的事情?

这是/etc/apt/preferences的示例

 mint@mint ~ $ cat /etc/apt/prefrences Package: * Pin: release o=linuxmint Pin-Priority: 700 Package: * Pin: origin packages.linuxmint.com Pin-Priority: 700 Package: * Pin: release o=Ubuntu Pin-Priority: 500 

可能必须在制作后运行apt-get update

简短回答:将固定优先级设置为小于0并设置o = LP-PPA- *,例如

 Package: nginx-full Pin: release o=LP-PPA-brightbox-ruby-ng-experimental Pin-Priority: -10 

引自apt_preferences-manpage:

 How APT Interprets Priorities ... P < 0 prevents the version from being installed 

更多信息: http : //manpages.ubuntu.com/manpages/raring/en/man5/apt_preferences.5.html和https://help.ubuntu.com/community/PinningHowto 。