Estou tentando dominar como a fixação de APT funciona no Debian, mas estou tendo dificuldade em entender como isso resolve as prioridades.
Tenho um source.list
arquivo que contém as seguintes entradas nesta ordem exata:
deb <repository> stretch main deb <repository> testing main deb <repository> unstable main
O seguinte repositório contém esses pacotes por branch:
- stretch contém o pacote
dependency version 1.0
; - testing contém o pacote
dependency version 2.0
; - instável contém os pacotes
program
edependency version 2.0
;
O pacote program
depende de dependency version 2.0
.
Eu preciso instalar o pacote program
, mas quero instalar o mínimo possível de pacotes de unstable
, então crio o seguinte preferences
arquivo para fixar este branch:
Package: * Pin: release a=unstable Pin-Priority: -1
Se eu entender descubra como funciona corretamente, ele deve instalar os pacotes de unstable
apenas quando eu disser explicitamente para o APT.
Eu também crio um apt.conf
para garantir que o branch stable
seja o padrão:
APT::Default-Release "stable";
Depois de executar o comando apt-get update
, os ramos devem ter as seguintes prioridades:
stable: 990 testing: 500 unstable: -1
Agora, quero instalar o pacote program
, para fazer isso, eu executo o seguinte comando:
apt-get install -t unstable program
Então agora minha pergunta é, de qual branch o APT irá puxar o pacote dependency version 2.0
? Como testing
e unstable
têm a mesma versão do pacote, qual será escolhido?
Se eu entender corretamente, o APT com a opção -t unstable
definirá uma prioridade 990 para os pacotes pertencentes a unstable
, mas pelo que eu “experimentei , ele puxa de testing
.
Então, por que o APT puxa pacotes de testing
que tem uma prioridade de 500 enquanto unstable
como definido como 990? Além disso, qual seria a maneira ideal de instalar o mínimo de pacotes possível de unstable
?
Comentários
- Se a versão for a mesma, então o arquivo é o mesmo também. Apt escolhe o mais rápido ou o primeiro espelho definido, mas o url do arquivo baixado é o mesmo. Verifique você mesmo. Os repositórios Debian não ' armazenam dois arquivos / versão idênticos de um pacote devido a problemas de espaço em disco.
Resposta
Isso é explicado em no apt_preferences
manpage :
Várias versões de um pacote podem estar disponíveis para instalação quando o arquivo sources.list (5) contém referências a mais de uma distribuição (por exemplo, estável e teste). O APT atribui uma prioridade a cada versão disponível. Sujeito a restrições de dependência,
apt-get
seleciona a versão com a maior prioridade para instalação. As preferências do APT substituem as prioridades que o APT atribui às versões do pacote por padrão, dando ao usuário controle sobre qual delas é selecionada para instalação.Várias instâncias da mesma versão de um pacote podem estar disponíveis quando as fontes O arquivo .list (5) contém referências a mais de uma fonte. Neste caso,
apt-get
baixa a instância listada primeiro no arquivo sources.list (5). As preferências do APT não afetam a escolha da instância, apenas a escolha da versão.
As prioridades apenas determinam qual versão (conforme especificado pelo número da versão) do um pacote é instalado. Depois de determinado, o primeiro repositório de pacote disponível é usado para baixá-lo.