是否可以 apt-pin 两个没有唯一标签、组件、来源等的 packages.sury.org 存储库?

是否可以 apt-pin 两个没有唯一标签、组件、来源等的 packages.sury.org 存储库?

我花了两个单独的几个小时才完全理解preferences.dapt 系统的工作方式。

在我的本地开发机器上,我有很多不同的 apt 来源..:

/etc/apt/sources.list.d
; ls
total 64
-rw-r--r-- 1 root root  55 Jan 23 14:08 deb-backports.list
-rw-r--r-- 1 root root 158 Mar  4 06:05 deb-experimental.list
-rw-r--r-- 1 root root 164 Jan 23 14:23 deb-security.list
-rw-r--r-- 1 root root 146 Mar  4 06:05 deb-stable.list
-rw-r--r-- 1 root root 148 Mar  4 06:05 deb-testing.list
-rw-r--r-- 1 root root 150 Mar  4 06:05 deb-unstable.list
-rw-r--r-- 1 root root  42 Nov 30 22:35 dotdeb.list
-rw-r--r-- 1 root root  54 Nov 30 22:35 dotdeb.nginx-http2.list
-rw-r--r-- 1 root root 189 Oct  2 00:59 google-chrome.list
-rw-r--r-- 1 root root  49 Feb  6 18:51 suryorg-nginx.list <-- here
-rw-r--r-- 1 root root  47 Feb  6 18:53 suryorg-php.list   <-- here

为了节省一些输入,我把所有相同的首选项都/etc/apt/preferences.d放在有关 apt pinning 的其他 ServerFault 问题...(尽管这大多是无关紧要的)..以及一个额外的自定义固定规则packages.sury.org,它为 nginx 和 php 提供了两个独立的存储库。(这并非无关紧要......)

结果是这样的apt-cache policy

Package files:
 100 /var/lib/dpkg/status
     release a=now
 950 https://packages.sury.org/php/ jessie/main amd64 Packages
     release n=jessie,c=main
     origin packages.sury.org
 950 https://packages.sury.org/nginx/ jessie/main amd64 Packages
     release n=jessie,c=main
     origin packages.sury.org
 900 http://dl.google.com/linux/chrome/deb/ stable/main amd64 Packages
     release v=1.0,o=Google, Inc.,a=stable,n=stable,l=Google,c=main
     origin dl.google.com
 500 http://packages.dotdeb.org/ jessie-nginx-http2/all amd64 Packages
     release o=packages.dotdeb.org,a=jessie-nginx-http2,n=jessie-nginx-http2,l=packages.dotdeb.org,c=all
     origin packages.dotdeb.org
 500 http://packages.dotdeb.org/ jessie/all amd64 Packages
     release o=packages.dotdeb.org,a=jessie,n=jessie,l=packages.dotdeb.org,c=all
     origin packages.dotdeb.org
 500 http://ftp.us.debian.org/debian/ unstable/non-free Translation-en
 500 http://ftp.us.debian.org/debian/ unstable/main Translation-en
 500 http://ftp.us.debian.org/debian/ unstable/contrib Translation-en
  50 http://ftp.us.debian.org/debian/ unstable/non-free amd64 Packages
     release o=Debian,a=unstable,n=sid,l=Debian,c=non-free
     origin ftp.us.debian.org
     ... { snipped }

我对如何固定自定义/第三方 apt 存储库(例如 dotdeb 和 sury.org)感到非常困惑,直到我弄清楚如何使用、、、、、以及Pin a=:行的“origin”与“release”选项,我的 sury.org,如中所述n=v=c=o=apt_preferences 手册页。例如,为 dotdeb 的多个存储库进行 pin 很简单:

Package: *
Pin: release a=jessie
Pin-Priority: 500

Package: * 
Pin: release a=jessie-nginx-http2 
Pin-Priority: -1 

a=...可通过 轻松获得“存档”行 (位 ) apt-cache policy。 (注:我不明白是否实际上在许多情况下,执行上述特定示例都是有意义的,只是一个人为的例子)。

然后,我们进入sury.org:

 950 https://packages.sury.org/php/ jessie/main amd64 Packages
     release n=jessie,c=main
     origin packages.sury.org
 950 https://packages.sury.org/nginx/ jessie/main amd64 Packages
     release n=jessie,c=main
     origin packages.sury.org

如您所见,这里唯一指定的是代号部分(n=jessie),没有唯一的档案名称、组件或标签。

我尝试使用该origin方法,例如

Package: *
Pin: origin packages.sury.org
Pin-Priority: 950

你可以在上面的apt-cache policy输出中看到,这个有效。但是,据我所知,没有办法将其缩小到单个/nginx/或存储库目录部分。通过将目录/路径部分放在“ ”行中,它将停止匹配规则。也就是说,.../php/Pin:

...
Pin: origin packages.sury.org/nginx/

无法按预期工作。有没有什么解决方法?或者这只是 sury.org 维护者的一个缺点(这不是冒犯他们,他们做得很好,……这只是一个边缘案例,而且我也很好奇)

非常感谢您的宝贵时间。

相关内容