在Ubuntu中优先考虑存储库

前端之家收集整理的这篇文章主要介绍了在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相关文章