Isso me levou a duas sessões separadas de várias horas para compreender completamente como o sistema preferences.d
funciona no apt.
Na minha máquina local de desenvolvimento, eu tenho muito de diferentes fontes 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
Para economizar um pouco de digitação, tenho todas as mesmas preferências em /etc/apt/preferences.d
do que esta outra pergunta do ServerFault referente ao apt pinning ... (mesmo que isso seja principalmente irrelevante) ... bem como uma regra de fixação personalizada adicional para packages.sury.org
, que fornece dois repositórios separados para nginx e php. (isso não é irrelevante ...)
Isso resulta nesse 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 }
Eu estava muito confuso sobre como fixar repositórios aptos / de terceiros, como o dotdeb e o sury.org, até descobrir como usar o a=
, n=
, v=
, c=
, o=
, bem como as opções "origin" vs "release" para o Pin: line, my sury.org, conforme descrito em página do manual apt_preferences . Por exemplo, fazer um pin para os múltiplos repositórios do dotdeb é simples:
Package: *
Pin: release a=jessie
Pin-Priority: 500
Package: *
Pin: release a=jessie-nginx-http2
Pin-Priority: -1
... com a linha "archive" ( a=
bit) prontamente disponível via apt-cache policy
. (Nota: eu não entendo se realmente fazendo esse exemplo específico acima faria sentido em muitas situações, apenas um exemplo artificial).
Então, chegamos ao 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
Como você pode ver, a única coisa especificada aqui é a parte do nome de código ( n=jessie
) e nenhum nome de arquivo, componente ou rótulo exclusivo.
Eu tentei usar o método origin
, e.x.
Package: *
Pin: origin packages.sury.org
Pin-Priority: 950
E você pode ver acima no apt-cache policy
output, isso faz funcionar. No entanto, não há como restringi-lo às partes individuais do diretório de repositório /nginx/
ou /php/
, tanto quanto eu posso dizer. Ao colocar a parte do diretório / caminho na linha " Pin:
", ela pára de corresponder à regra. Isto é, ...
...
Pin: origin packages.sury.org/nginx/
Não funciona como esperado. Existe alguma solução para isso? Ou isso é simplesmente uma falha do mantenedor do sury.org (o que não é ofensivo para eles, eles fazem um ótimo trabalho, .. isso é apenas um caso extremo, e eu também sou apenas honestamente curioso)
Muito obrigado pelo seu tempo.
Tags debian