Publicado em: 02/Jul/2019
Atualizado em: 16/Dec/2019
apt

Escolhendo versões dos pacotes no Debian/Ubuntu

Parte 1 - Regra geral

Antes de começar a escolher versões vamos estabelecer que todos os pacotes usarão a versão stable por padrão.

No arquivo /etc/apt/preferences (que deve estar vazio inicialmente) acrescente as seguintes linhas:

 1# Arquivo: /etc/apt/preferences
 2
 3# Todos os pacotes vem do stable por padrão
 4Package: *
 5Pin: release a=stable
 6Pin-Priority: 1001
 7
 8Package: *
 9Pin: release a=testing
10Pin-Priority: 650
11
12Package: *
13Pin: release a=unstable
14Pin-Priority: 600

O valor acima de 1000 vai forçar os pacotes que foram instalados na mão usando outras versões a voltarem para o stable.

Agora que já definimos uma REGRA GERAL podemos começar a definir as exceções à regra.

Parte 2 - Exceções à regra geral

Por target

Para exemplo vamos escolher o pacote hugo para este post. Você pode usar este mesmo procedimento para qualquer pacote.

Se você acessar https://packages.debian.org/search?keywords=hugo encontrará as seguintes versões:

  • stable 0.18.1
  • testing 0.55.6
  • unstable 0.55.6

Dica

Crie um arquivo dentro do diretório /etc/apt/preferences.d/ com o nome do pacote que você quer especificar a versão. Pode ser qualquer nome aqui, mas usando o nome do pacote fica mais fácil de manter o sistema.

1# /etc/apt/preferences.d/hugo
2Package: hugo
3Pin: release a=testing
4Pin-Priority: 1002

Observe que a prioridade precisa ser maior que a prioridade da regra padrão para funcionar.

Por origem

Ao instalar o pacote nodejs a versão 4.8 será instalada pois é a mais recente que está no repositório padrão.

1apt install nodejs
2...
3Obter:1 http://ftp.br.debian.org/debian stretch/main amd64 nodejs amd64 4.8.2~dfsg-1 [3.440 kB]
4...

Para pegar a versão mais rescente do nodejs diretamente do deb.nodesource.com em vez do repositório padrão do Debian use:

1# /etc/apt/preferences.d/nodejs
2Package: *
3Pin: origin deb.nodesource.com
4Pin-Priority: 1001

Então basta executar o comando de instalação novamente para que o pacote seja atualizado para a versão 12.

1apt update
2apt install nodejs
3...
4Obter:1 https://deb.nodesource.com/node_12.x stretch/main amd64 nodejs amd64 12.6.0-1nodesource1 [16,9 MB]
5...

Parte 3 - Upgrade/Downgrade

Agora que todas as nossas regras já estão definida basta atualizar que os pacotes vão para a versões escolhidas.

1apt-get update
2apt-get upgrade
3apt-get dist-upgrade

Note que alguns pacotes podem sofrer downgrade nesta atualização.

Só para conferir que a versão escolhida foi realmente instalada:

1$ dpkg -l | grep hugo
2ii  hugo 0.55.6+really0.54.0-1 amd64 Fast and flexible Static Site Generator written in Go

Entendendo os valores das prioridades

P > 1000

Instala mesmo que precise baixar a versão de algum pacote já instalado. Somente prioridades acima de 1000 permitem downgrade.

990 < P <= 1000

Instala somente se uma versão maior estiver disponível no target release (Ver variáel APT::Default-Release para detalhes). Não permite downgrade de pacote instalado.

500 < P <= 990

Instala somente se uma versão maior estiver disponível no target release (Ver variáel APT::Default-Release para detalhes).

100 < P <= 500

Utilizado como predefinição para os arquivos NotAutomatic e ButAutomaticUpgrades

Instala a menos que exista uma versão disponível em outra distribuição ou se a versão instalada for mais recente.

causes a version to be installed unless there is a version available belonging to some other distribution or the installed version is more recent

0 < P <= 100

Instala somente se não possuir versão instalada do pacote.

P == 1

Valor padrão para NotAutomatic

P < 0

Nunca instala o pacote mesmo que o pacote seja recomendado.

comments powered by Disqus