这已经花了我两个独立的多小时的会话来完全理解preferences.d系统如何在apt中工作。
在我的本地开发机器上,我有很多不同的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所有相同的首选项与这个其他ServerFault关于apt钉住的问题 (尽pipe这大多是不相关的)..以及一个额外的自定义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 }
我很困惑在如何使用a= , n= , v= , c= , o=以及“原始“与”释放“选项的Pin:行,我的sury.org,如apt_preferences手册页中所述 。 例如,为dotdeb的多个存储库做一个pin是很简单的:
Package: * Pin: release a=jessie Pin-Priority: 500 Package: * Pin: release a=jessie-nginx-http2 Pin-Priority: -1
…通过apt-cache policy随时可用的“归档”行( a=位)。 (注:我不明白如果真的做了上面这个特定的例子在许多情况下是有意义的,只是一个人为的例子)。
然后,我们到了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
正如你所看到的,这里唯一指定的是codename部分( n=jessie ),没有唯一的存档名称,组件或标签。
我试图用origin方法,例如
Package: * Pin: origin packages.sury.org Pin-Priority: 950
你可以看到上面的apt-cache policy输出,这是行得通的。 但是,就我所知,无法将其缩小到个人/nginx/ or /php/ repository目录部分。 通过将目录/path部分放在“ Pin: ”行中,它将停止匹配规则。 那是, …
... Pin: origin packages.sury.org/nginx/
没有按预期工作。 有没有解决方法? 或者这只是sury.org维护者的一个缺点(他们没有冒犯他们,他们做得很好,这只是一个边缘案例,而且我也很诚实地好奇)
非常感谢您的宝贵时间。