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
yum - Impedindo atualização de certos componentes
Instalando e Configurando o Google Earth
Acessando compartilhamentos de rede do Windows pelo CentOS
Resposta lenta ao conectar a um servidor ProFTPD (login lento)
Wine - Como instalar um programa Windows para todos os usuários do computador (incluindo a conta Convidado)
Leitura recomendada
Desabilitar "A start job is running for dev-disk-by..." no início do Manjaro
Repositórios, flash player, Amarok e K3b funcionando
Novo vídeo do LinuxTips - Descomplicando o Docker e Containers
Adicionando programas no menu do Xfce
Bug no Wayland do Fedora 25
Comentários
Nenhum comentário foi encontrado.