在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

由于两个回购都在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:*

另一种方法是通过发行选项固定repo发行者的名称:

Pin:release o =< issuer>

要找出< issuer>的正确值.在不同的repos上,运行不带参数的apt-cache策略.

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...