No Fedora 44, o dnf é o dnf5

No Fedora 44, o comando dnf é o dnf5. Você pode confirmar assim:

dnf --version

O que vi em um contêiner do Fedora 44 foi dnf5 version 5.4.3.0. Os comandos e saídas deste artigo foram executados nesse contêiner, com arquitetura aarch64. Para consultar o número da versão do sistema, use:

rpm -E %fedora

Se a saída for 44, é Fedora 44. O arquivo de configuração principal é /etc/dnf/dnf.conf, e as definições de repositórios ficam em /etc/yum.repos.d/. Para ver quais repositórios estão habilitados, observe a saída deste comando:

dnf repolist

No meu contêiner, os habilitados por padrão eram fedora, fedora-cisco-openh264 e updates; o updates-testing não estava habilitado. Na sua máquina, vale o que aparecer na sua própria saída.

Configurações de repositórios de terceiros, drivers e afins feitas após a instalação já foram tratadas em outro artigo deste site; não vou repetir aqui. Este artigo trata apenas de como gerenciar software no dia a dia depois de tudo instalado e de como reverter quando algo dá errado.

Instalar, buscar, consultar

Instalar exige sudo; buscar e consultar, não:

sudo dnf install htop
dnf search htop
dnf info htop

O resultado de dnf search indica os campos que deram correspondência. Matched fields: name (exact) são pacotes com nome exatamente igual; Matched fields: name são pacotes com esse termo no nome — ao buscar htop, este último traz também pcp-htop. O dnf info mostra os campos Name, Version, Release, Architecture, Installed size e Source.

Grupos de software são vistos com dnf group list, que lista ID, Name e se estão instalados, por exemplo office (Office/Productivity), kde-education e kde-media.

Upgrade diário:

sudo dnf upgrade

Algumas opções úteis, todas documentadas em dnf upgrade --help:

  • --minimal: atualiza apenas para a versão mínima que corrige avisos dos tipos bugfix, enhancement, security e newpackage.
  • --allowerasing: permite remover pacotes instalados para resolver conflitos. Antes de executar, leia o resumo da transação e confirme que você não precisa dos pacotes que serão removidos.
  • --skip-unavailable: pula pacotes indisponíveis.
  • --from-repo=REPO_ID: seleciona pacotes apenas do repositório indicado.

Histórico de transações e reversão

O dnf5 registra cada instalação, upgrade e remoção como uma transação:

dnf history list

A lista mostra o ID da transação, a linha de comando usada, o horário e o número de alterações. No contêiner, executei um dnf -y install htop, que foi registrado como uma transação com 2 alterações: htop e a dependência hwloc-libs. Detalhes com:

dnf history info 3

Você verá o estado da transação, o Releasever usado e, em Packages altered, a ação, o motivo e o repositório de origem de cada pacote. O motivo de htop é User; o de hwloc-libs é Dependency.

Para desfazer uma operação, use undo:

sudo dnf history undo 3

Executei de verdade: ele removeu htop e hwloc-libs juntos, e o sistema voltou ao estado anterior à instalação. Os subcomandos de history incluem ainda:

  • redo: repete as ações da transação indicada.
  • rollback: desfaz todas as transações realizadas depois da transação indicada. Atenção: o alcance é maior que o do undo.
  • store: marcado como experimental na ajuda; não dependa dele em ambiente de produção.

Limpeza e verificação de reinício

Para remover pacotes que não são mais dependência de outros:

sudo dnf autoremove

Ele tem a opção --offline, que armazena a transação para executar na reinicialização, com o mesmo mecanismo do upgrade de sistema descrito abaixo.

Depois de atualizar uma biblioteca, os processos em execução continuam usando a versão antiga. O needs-restarting ajuda a encontrar esses processos e serviços:

dnf needs-restarting
  • -s, --services: lista os serviços systemd iniciados antes de suas dependências serem atualizadas.
  • -p, --processes: lista os processos iniciados antes de suas dependências serem atualizadas.
  • -e, --exclude-services: usado junto com --processes, exclui processos gerenciados por serviços systemd.
  • -r, --reboothint: não tem efeito no dnf5; foi mantido apenas para compatibilidade com o DNF 4. O que o needs-restarting -r fazia no DNF 4 é o comportamento atual de dnf5 needs-restarting.

Upgrade offline para uma nova versão maior

Na era do DNF 4, era preciso instalar o plugin dnf-plugin-system-upgrade. No Fedora 44, o system-upgrade já vem embutido no DNF5, sem necessidade de instalação. O fluxo do upgrade offline são três comandos:

sudo dnf upgrade --refresh
sudo dnf system-upgrade download --releasever=<VERSION>
sudo dnf system-upgrade reboot

O primeiro atualiza a versão atual para a mais recente e renova os metadados. O segundo baixa tudo o que é preciso para o upgrade para a versão de destino; após --releasever, informe o número da versão alvo. O terceiro prepara a transação offline e reinicia; o sistema conclui o upgrade durante a inicialização seguinte.

O system-upgrade tem ainda três subcomandos auxiliares:

  • status: mostra o estado da transação offline atual. Se não houver nenhuma, a saída é No offline transaction is stored.
  • log: mostra os registros das transações offline anteriores.
  • clean: remove as transações offline armazenadas e os pacotes em cache. Ele apaga o que já foi baixado; antes de executar, confirme que esse download não precisa ser mantido.

Antes de fazer um upgrade de versão maior, consulte a documentação oficial de upgrade offline do Fedora para confirmar pré-requisitos e cuidados. Os comandos e a lista de subcomandos acima vêm da saída de ajuda observada no contêiner Fedora 44; não houve citação literal da documentação oficial.

Como reverter quando algo dá errado

Se uma instalação ou upgrade deixar algo estranho, primeiro consulte o histórico para achar o ID da transação e depois faça o undo:

dnf history list
dnf history info <ID-da-transação>
sudo dnf history undo <ID-da-transação>

O history info permite ver com clareza quais pacotes a transação alterou, antes de desfazê-la.

Se depois de um --allowerasing você perceber que removeu demais, também é possível usar undo para reverter aquela transação. Para voltar a um estado anterior mais antigo, use rollback, que desfaz todas as transações realizadas depois da indicada — por isso, antes de agir, use dnf history list para ver exatamente quais registros serão afetados.