apt - Atribuindo preferências a pacotes e repositórios

Publicado por Eduardo Mozart de Oliveira em 05/01/2026

[ Hits: 202 ]

Blog: http://www.eduardomozartdeoliveira.wordpress.com/

 


apt - Atribuindo preferências a pacotes e repositórios



Introdução

Diversas versões de um pacote podem estar disponíveis para instalação quando o arquivo "sources.list" contém referências a mais de uma origem. O APT atribui uma prioridade a cada versão disponível. Sujeito a restrições de dependências, o "apt-get" seleciona a versão com maior prioridade para instalação. O arquivo de preferências do APT substitui as prioridades que o APT atribui a versões de pacote por padrão, oferecendo ao usuário controle sobre qual versão selecionar para instalação quando existem múltiplas versões de um pacote. [2]

Diversas instâncias (arquivos ".deb") da mesma versão de um pacote podem estar disponíveis quando o arquivo "sources.list" contém referências a mais de uma origem. Neste caso, o "apt-get" baixa a instância listada primeiro no arquivo "sources.list". O arquivo de preferências não afeta a escolha da instância, apenas a escolha da versão. [2]

Como o APT interpreta prioridades

Se não existir arquivo de preferências ou se não houver nenhuma entrada no arquivo referente a uma versão específica, a prioridade atribuída é a prioridade da distribuição (por exemplo, "stable" ou "testing") a que a versão pertence. É possível definir uma distribuição específica, "a distribuição alvo [target]", que receberá uma prioridade maior que outras distribuições por padrão. A versão da distribuição pode ser definida na linha de comandos do apt-get ou no arquivo de configuração do APT em "/etc/apt/apt.conf". Por exemplo:

$ sudo apt-get install -t testing some-package

Para configurar a distribuição no arquivo de configuração, use:

APT::Default-Release "stable";

O APT aplica as seguintes regras, listadas em ordem de precedência, para determinar qual versão de um pacote instalar: [2]:
  • 1. Nunca realize downgrade, a menos que a prioridade de uma versão disponível exceda 1000. ("Downgrading" refere-se à instalação de uma versão anterior de um pacote em vez da versão mais recente. Note que nenhuma prioridade padrão do APT excede 1000; tais prioridades somente podem ser definidas através do arquivo de preferências. Note que realizar o downgrade de um pacote pode ser perigoso.)
  • 2. Instalar a versão com prioridade mais alta.
  • 3. Se duas ou mais versões possuem a mesma prioridade, instalar a versão mais recente (ou seja, o pacote com o número de versão maior).

Prioridades (P) atribuídas no arquivo de preferências do APT devem ser números inteiros positivos ou negativos. Eles podem ser interpretados como [2]:
  • P > 1000: faz uma versão ser instalada, mesmo que signifique um downgrade do pacote.
  • 990 < P <=1000: faz uma versão ser instalada mesmo que ela não pertença à distribuição alvo (target), a menos que a versão instalada seja mais recente.
  • 500 < P <=990: faz uma versão ser instalada a menos que exista uma versão disponível pertencente à distribuição alvo (target).
  • 100 < P <=500: faz com que uma versão seja instalada, a menos que haja uma versão disponível pertencente a alguma outra distribuição ou que a versão instalada seja mais recente.
  • 0 < P <=100: faz com que uma versão seja instalada somente se não houver nenhuma versão instalada do pacote.
  • P < 0: impede a instalação da versão.

Exemplos

O comando "apt-cache" pode apresentar grande parte das informações armazenadas no banco de dados interno do APT. Esta informação é uma espécie de cache, pois é recolhida de diferentes fontes listadas no arquivo "sources.list". Isso acontece durante a operação do "apt update". [4]

O comando "apt-cache policy" mostra as prioridades 'pinning' e as propriedades de distribuição de cada fonte de pacotes. [4]

Você pode executar o comando "apt-cache policy" para listar os repositórios atuais e suas prioridades, e utilizar os parâmetros retornados para criar preferências do APT.

Exemplo de saída do comando "apt-cache policy":

root@unifi:/etc/apt/preferences.d# apt-cache policy
Arquivos de pacote:
100 /var/lib/dpkg/status
release a=now
500 https://repo.mongodb.org/apt/debian buster/mongodb-org/4.4/main amd64 Packages
release o=mongodb,a=buster,n=buster/mongodb-org,l=mongodb,c=main,b=amd64
origin repo.mongodb.org
500 http://ftp.br.debian.org/debian bookworm-updates/non-free-firmware amd64 Packages
release v=12-updates,o=Debian,a=stable-updates,n=bookworm-updates,l=Debian,c=non-free-firmware,b=amd64
origin ftp.br.debian.org
500 http://ftp.br.debian.org/debian bookworm-updates/main amd64 Packages
release v=12-updates,o=Debian,a=stable-updates,n=bookworm-updates,l=Debian,c=main,b=amd64
origin ftp.br.debian.org
500 http://security.debian.org/debian-security bookworm-security/non-free-firmware amd64 Packages
release v=12,o=Debian,a=stable-security,n=bookworm-security,l=Debian-Security,c=non-free-firmware,b=amd64
origin security.debian.org
500 http://security.debian.org/debian-security bookworm-security/main amd64 Packages
release v=12,o=Debian,a=stable-security,n=bookworm-security,l=Debian-Security,c=main,b=amd64
origin security.debian.org
500 http://ftp.br.debian.org/debian bookworm/non-free-firmware amd64 Packages
release v=12.5,o=Debian,a=stable,n=bookworm,l=Debian,c=non-free-firmware,b=amd64
origin ftp.br.debian.org
500 http://ftp.br.debian.org/debian bookworm/main amd64 Packages
release v=12.5,o=Debian,a=stable,n=bookworm,l=Debian,c=main,b=amd64
origin ftp.br.debian.org


Também pode mostrar as prioridades de 'pinning' para todas as versões disponíveis e fontes de um pacote [4]:

$ apt-cache policy limnoria
limnoria:
Instalado: 2021.06.15-1
Candidato: 2021.06.15-1
Tabela de versão:
2021.07.21-1~bpo11+1 100
100 https://deb.debian.org/debian bullseye-backports/main amd64 Packages
*** 2021.06.15-1 990
990 https://deb.debian.org/debian bullseye/main amd64 Packages
100 /var/lib/dpkg/status


Embora exista uma nova versão do 'limnoria' no repositório ''bullseye-backports'', o APT não vai instalá-lo automaticamente com base na prioridade. Pode ser necessário usar ''apt install limnoria/bullseye-backports'' ou adicionar uma prioridade de 'pinning' mais alta para o arquivo ''/etc/apt/preferences.d/limnoria.pref'' [4]:

Arquivo limnoria.pref:

Package: limnoria
Pin: release o=Debian Backports, a=bullseye-backports
Pin-Priority: 1001

$ apt-cache policy limnoria
limnoria:
Instalado: 2021.06.15-1
Candidato: 2021.07.21-1~bpo11+1
Tabela de versão:
2021.07.21-1~bpo11+1 1001
100 https://deb.debian.org/debian bullseye-backports/main amd64 Packages
*** 2021.06.15-1 990
990 https://deb.debian.org/debian bullseye/main amd64 Packages
100 /var/lib/dpkg/status


Você também pode bloquear um pacote (as atualizações serão aplicadas somente se o pacote for originário do repositório ppa.launchpad.net) para o arquivo "/etc/apt/preferences.d/50retroarch":

Package: retroarch* libretro*
Pin: origin ppa.launchpad.net
Pin-Priority: 501

Para proibir a atualização do RetroArch originada a partir do repositório oficial do Deepin para o arquivo "/etc/apt/preferences.d/50retroarch-deepin" [3]:

Package: retroarch* libretro*
Pin: release o=Linux Deepin,n=unstable
Pin-Priority: -1

Para fixar o pacote "mongodb*" em sua versão atual, impedindo sua atualização para o arquivo "/etc/apt/preferences.d/50mongodb" [3]:

Package: mongodb-org-database-tools-extra
Pin: version 4.4.18
Pin-Priority: 1001

Package: mongodb-org-mongos
Pin: version 4.4.18
Pin-Priority: 1001

Package: mongodb-org-server
Pin: version 4.4.18
Pin-Priority: 1001

Package: mongodb-org-shell
Pin: version 4.4.18
Pin-Priority: 1001

Package: mongodb-org-tools
Pin: version 4.4.18
Pin-Priority: 1001

A saída do comando "apt-cache policy" mostrará o pacote como fixado ("pinned"):

Pacotes alfinetados ("pinned"):
mongodb-org-database-tools-extra -> 4.4.18 with priority 501
mongodb-org-shell -> 4.4.18 with priority 501
mongodb-org-server -> 4.4.18 with priority 501
mongodb-org-tools -> 4.4.18 with priority 501
mongodb-org-mongos -> 4.4.18 with priority 501


Referências


Outras dicas deste autor

Desabilitando o NetworkManager no CentOS

Acessando compartilhamentos de rede do Windows pelo CentOS

GNOME e KDE no CentOS 5/6

Configuração de impressão do SIAFI no Ubuntu

Atualização In-Place do Deepin v20.9 para Deepin v23

Leitura recomendada

Instalando uma placa de rede PCI Express Agere ET131x - Slackware 12

Configuração fácil

Instalação de impressora de rede Samsung ML-331x Series

Adicionar caminho ao PATH do Linux

Athansic Ethernet L2 Mbit no Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário