Resolução de dependências de fixação de APT

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 e dependency 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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *