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

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

[ Hits: 236 ]

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

Como abrir um arquivo .mht no Linux

Desabilitando o NetworkManager no CentOS

Exibindo comandos em apresentações através do Screenkey

Miniatura de arquivos SWF no Linux

Como lidar com arquivos de imagem .WIM

Leitura recomendada

Como habilitar sombras no MATE Desktop 1.6

Atualizando Ubuntu-16.04 LTS para Ubuntu 18.04 LTS

Ubuntu 22.04 - como resolver Screen Tearing (tela rasgando, piscando, tremendo)

Harmonizando Compton com Xfce4-screenshooter

Substituindo o calendário do LXDE pelo Orage

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário