Gerir pacotes Azure Linux com DNF5

Este artigo aborda tarefas comuns de gestão de pacotes no Azure Linux, incluindo:

  • Onde está a configuração do repositório.
  • Como os comandos legados do gestor de pacotes correspondem ao DNF5.
  • Como o DNF armazena em cache metadados e resolve pacotes.
  • Como são tratados os kernels e outros pacotes só de instalação.
  • Como ativar atualizações sem vigilância.
  • Os comandos DNF mais comuns.

Note

O Azure Linux 4.0 encontra-se agora em preview e destina-se exclusivamente a efeitos de avaliação e teste. Não é adequado para uso em produção.

Configuração do repositório

O DNF5 lê definições de repositórios a partir de /etc/yum.repos.d/. O nome do diretório é preservado do YUM para compatibilidade; DNF5 lê a partir deste diretório.

Cada .repo ficheiro nesse diretório é um ficheiro de configuração em texto simples que indica ao DNF onde encontrar pacotes, se os deve verificar com GPG e se o repositório está ativado por defeito. O principal ficheiro de configuração DNF é /etc/dnf/dnf.conf, que controla o comportamento global como definições de cache, o limite de instalação apenas e a configuração do proxy.

O Azure Linux fornece ligações simbólicas de compatibilidade para que os comandos legados (yum, dnf (DNF4), microdnf, tdnf) sejam todos encaminhados para o DNF5:

lrwxrwxrwx.  1 root root       4  yum -> dnf5
lrwxrwxrwx.  1 root root       4  microdnf -> dnf5
-rwxr-xr-x.  1 root root 1614408  dnf5
lrwxrwxrwx.  1 root root       4  dnf -> dnf5
lrwxrwxrwx.  1 root root       4  tdnf -> dnf5

Os subcomandos comuns funcionam todos através dos symlinks. Casos extremos que dependiam de elementos internos do DNF4 ou de comportamento específico de microdnf poderão deixar de funcionar. Para detalhes sobre o que mudou, consulte os seguintes recursos:

Como o DNF5 resolve pacotes

Quando executa um comando DNF, o DNF5 executa os seguintes passos para determinar que pacotes instalar, atualizar ou remover:

  1. Carrega cada ficheiro .repo em /etc/yum.repos.d/ e seleciona os repositórios marcados como ativados.
  2. Atualiza os metadados do repositório, armazenando-os localmente em /var/cache/libdnf5. Os metadados em cache incluem a lista de pacotes, informações de versões e dependências, somas de verificação e assinaturas.
  3. Resolve a instalação, remoção ou atualização solicitada com base nos repositórios habilitados, seleciona as versões dos pacotes e verifica a integridade e assinaturas antes de aplicar a transação.

Repositórios desativados são ignorados a menos que os atives explicitamente com --enablerepo=<repo-id> um único comando.

A /var/cache/libdnf5 cache existe para que o DNF não tenha de descarregar metadados em cada invocação. Execute dnf clean all para o esvaziar (ver comandos DNF usados frequentemente).

Pacotes apenas de instalação e múltiplas versões instaladas

Alguns pacotes, nomeadamente o kernel, são instalados lado a lado em vez de serem atualizados no local. O DNF5 controla isto através de duas definições em:/etc/dnf/dnf.conf

  • installonlypkgs: Lista de nomes de pacotes que nunca são atualizados no local. Os pacotes do kernel são a entrada padrão.
  • installonly_limit: Número máximo de versões de um pacote apenas de instalação que possam coexistir no sistema. A predefinição é 3.

Quando uma nova versão é instalada e o limite é ultrapassado, o DNF remove automaticamente a versão mais antiga.

Para o núcleo, isto dá-lhe:

  • Recurso: Se um novo kernel não arrancar, o GRUB pode ainda iniciar um kernel anterior que se sabe funcionar.
  • Validação: Pode instalar e testar um novo kernel sem remover o que está a correr.
  • Coexistência de variantes: Pode instalar diferentes compilações do kernel (por exemplo, com diferentes conjuntos de funcionalidades) em simultâneo.

Cada versão do kernel é um pacote RPM separado, por isso o DNF controla-a e remove-a como qualquer outro pacote.

Atualizações automáticas com dnf-automatic

dnf-automatic é um serviço que verifica periodicamente, descarrega e, opcionalmente, aplica atualizações de pacotes. É impulsionado por um temporizador de sistema, em vez de funcionar como um daemon de longa duração.

Instalar o dnf-automatic

Instalar dnf-automatic usando o seguinte comando:

sudo dnf install -y dnf-automatic

Ativar o dnf-automatic temporizador

Ative o dnf-automatic temporizador imediatamente e durante os reinicios usando o seguinte comando:

sudo systemctl enable --now dnf-automatic.timer
  • enable Configura o temporizador para começar no arranque.
  • --now Inicia o temporizador na sessão atual.

Verificar o estado do dnf-automatic temporizador

Verifique se o temporizador está ativo e verifique quando foi executado pela última vez usando o seguinte comando:

systemctl status dnf-automatic.timer

A saída típica é o seguinte exemplo:

● dnf5-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf5-automatic.timer; enabled; preset: disabled)
     Active: active (waiting) since Thu 2026-03-26 14:36:54 UTC; 13min ago
 Invocation: f6984eeceb7c40df99bca243f3da728c
    Trigger: Fri 2026-03-27 06:34:18 UTC; 15h left
   Triggers: ● dnf5-automatic.service

Active: active (waiting) é o esperado: o serviço subjacente é de execução única e só é executado quando o temporizador é acionado, terminando em seguida. A linha Trigger: mostra a próxima execução agendada.

Liste a próxima execução agendada do temporizador dnf-automatic

Liste a próxima execução juntamente com quaisquer outros temporizadores usando o seguinte comando:

systemctl list-timers dnf-automatic.timer

Exemplo de saída:

NEXT                        LEFT LAST PASSED UNIT                 ACTIVATES
Fri 2026-03-27 06:34:18 UTC  15h -         - dnf5-automatic.timer dnf5-automatic.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

Configuração opcional de dnf-automatic

Pode configurar o comportamento de atualizações automáticas adicionando o /etc/dnf/automatic.conf ficheiro. Este ficheiro controla se as atualizações são apenas descarregadas, aplicadas automaticamente ou restritas apenas a atualizações de segurança. Para todos os detalhes de configuração, consulte a documentação do dnf5-automatic

Note

As atualizações automáticas são instaladas através do dnf-automatic, mas o sistema não é reiniciado automaticamente. Se um kernel (ou outro pacote que requer reinicialização) for atualizado, a nova versão só entra em vigor no próximo reinício. Após as atualizações, verifique se é necessário um reinício e agende-o conforme apropriado.

Comandos DNF frequentemente usados

Os comandos seguintes cobrem a maior parte da gestão diária de pacotes no Azure Linux.

dnf clean all

dnf clean all remove tudo o que o DNF guardou em cache em /var/cache/libdnf5. Utilize-o para:

  • Recuperar de metadados corrompidos ou obsoletos que causam erros de transação.
  • Reduza imagens de contentores removendo a cache do pacote após as instalações na mesma RUN camada.
  • Recuperar espaço no disco.

Exemplo de contentor:

RUN dnf install -y package1 package2 \
    && dnf clean all

dnf search Compara palavras-chave com nomes de pacotes e resumos. Por exemplo:

dnf search lsof

Exemplo de saída:

Updating and loading repositories:
 Azure Linux 4.0 - x86_64 - Microsoft                        100% |   7.6 KiB/s |   4.8 KiB |  00m01s
Repositories loaded.
Matched fields: name (exact)
 lsof.x86_64   A utility which lists open files on a Linux/UNIX system

dnf provides

dnf provides encontra o pacote que possui um determinado ficheiro, comando ou capacidade. Por exemplo:

dnf provides lsof

Exemplo de saída:

Updating and loading repositories:
Repositories loaded.
lsof-4.98.0-8.azl4.20260303.x86_64 : A utility which lists open files on a Linux/UNIX system
Repo         : @System
Matched From :
Provide      : lsof = 4.98.0-8.azl4.20260303

dnf install

dnf install instala um ou mais pacotes juntamente com as suas dependências em tempo de execução:

sudo dnf install lsof

Exemplo de saída:

Updating and loading repositories:
Repositories loaded.
Package           Arch     Version                  Repository    Size
Installing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Installing:         1 package

Total size of inbound packages is 226 KiB. Need to download 226 KiB.
After this operation, 579 KiB extra will be used (install 579 KiB, remove 0 B).
Is this ok [y/N]: y
[1/1] lsof-0:4.98.0-8.azl4.20260303.x86_64                100% | 641.9 KiB/s | 226.0 KiB |  00m00s
[1/1] Total                                               100% | 640.1 KiB/s | 226.0 KiB |  00m00s
Running transaction
[1/3] Verify package files                                100% | 500.0   B/s |   1.0   B |  00m00s
[2/3] Prepare transaction                                 100% |  23.0   B/s |   1.0   B |  00m00s
[3/3] Installing lsof-0:4.98.0-8.azl4.20260303.x86_64     100% |   3.0 MiB/s | 580.2 KiB |  00m00s
Complete!

dnf remove

dnf remove Desinstala um pacote juntamente com quaisquer dependências que tenham sido instaladas apenas por causa dele:

sudo dnf remove -y lsof

Exemplo de saída:

Package           Arch     Version                  Repository    Size
Removing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Removing:           1 package

After this operation, 579 KiB will be freed (install 0 B, remove 579 KiB).
Is this ok [y/N]: y
Running transaction
[1/2] Prepare transaction                                 100% |  27.0   B/s |   1.0   B |  00m00s
[2/2] Removing lsof-0:4.98.0-8.azl4.20260303.x86_64       100% |  72.0   B/s |  11.0   B |  00m00s
Complete!

dnf upgrade

dnf upgrade atualiza os pacotes instalados para as versões mais recentes disponíveis.

sudo dnf upgrade

Quando tudo está atualizado, a saída é breve. Por exemplo:

Updating and loading repositories:
Repositories loaded.
Nothing to do.

Dica

Transmita -y para install, remove ou upgrade em contextos não interativos, como scripts, pipelines de CI e compilações de contentores. Qualquer operação DNF que modifique o sistema requer root, por isso execute-a sob sudo ou como root.