为 PPA 分配更高的优先级

mil*_*dos 14 apt ppa repository

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

我们的一些服务器上有两个 PPA 源,我们将它们粘贴到/etc/apt/sources.list.d. 其中一些存储库提供相同的包(就名称而言)但不同的版本和可能不同的二进制文件。有没有一种方法可以让我们将一个回购优先于另一个?

我阅读了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
Run Code Online (Sandbox Code Playgroud)

其中,nginx-source.list内容是:

deb     http://ppa.launchpad.net/nginx/stable/ubuntu precise main
Run Code Online (Sandbox Code Playgroud)

ruby-ng-experimental-source.list内容是:

deb     http://ppa.launchpad.net/brightbox/ruby-ng-experimental/ubuntu precise main
Run Code Online (Sandbox Code Playgroud)

这两个来源都提供了不同版本的 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
Run Code Online (Sandbox Code Playgroud)

我如何将 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
Run Code Online (Sandbox Code Playgroud)

但这已经将两个来源的优先级更改为相同的数字 - 或者类似的东西?所以这并没有改变优先级,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
Run Code Online (Sandbox Code Playgroud)

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

GM-*_*850 15

这是一个例子 /etc/apt/preferences

mint@mint ~ $ cat /etc/apt/preferences
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
Run Code Online (Sandbox Code Playgroud)

您可能必须apt-get update在创建文件后运行。