apt - Atribuindo preferências a pacotes e repositórios
Dica publicada em Linux / Configuração
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. OAPT 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
APTexcede 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 doAPT. 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
- 1. apt - Assign highest priority to my local repository. Ask Ubuntu. Disponível em: <https://askubuntu.com/questions/135339/assign-highest-priority-to-my-local-repository>. Acesso em: 12 set. 2018.
- 2. apt_preferences(5). Linux man page. Disponível em: <https://linux.die.net/man/5/apt_preferences>. Acesso em: 17 set. 2018.
- 3. How to prevent updating of a specific package?. Ask Ubuntu. Disponível em: <https://askubuntu.com/questions/18654/how-to-prevent-updating-of-a-specific-package>. Acesso em: 05 jan. 2026.
- 4. O Comando apt-cache. O Manual do(a) Administrador(a) Debian. Disponível em: <https://debian-handbook.info/browse/pt-BR/stable/sect.apt-cache.html>. Acesso em: 05 jan. 2026.