Comando dnf: instalar, atualizar e remover pacotes e a diferença para o yum
O comando dnf é o comando de gerenciamento de pacotes usado para pesquisar, instalar, atualizar e remover pacotes em distribuições Linux da família RHEL. No AlmaLinux 9, digitar yum executa o mesmo programa. Em um servidor AlmaLinux 9, executamos de fato search, info, provides e history e conferimos na saída onde cada um dos comandos de busca de pacotes search, info e provides procura e quais registros de operações ficam no history.
Não executamos comandos que alteram o sistema, como instalar, remover e atualizar. Esse comportamento foi conferido na documentação oficial do DNF e nos registros de operações que já estavam no servidor.
1️⃣ Relação entre o comando dnf e o yum
É fácil supor que digitar yum executa o yum antigo, mas no AlmaLinux 9 yum e dnf são links para o mesmo executável, dnf-3.
ls -l /usr/bin/yum /usr/bin/dnflrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/dnf -> dnf-3
lrwxrwxrwx 1 root root 5 May 21 04:48 /usr/bin/yum -> dnf-3A única diferença entre yum e dnf é o nome que você digita; com qualquer um deles, os subcomandos e as opções são os mesmos. A saída de search htop executado com yum e com dnf também foi idêntica.
Segundo a documentação oficial do DNF [Changes in DNF CLI compared to YUM], update e upgrade fazem a mesma coisa, e a documentação recomenda upgrade.
Em distribuições antigas sem dnf, use o comando yum normalmente. Os nomes dos subcomandos deste artigo, como install, search e history, são os mesmos no yum.
2️⃣ Consultar pacotes com o comando dnf: search, info, provides
Quando você não sabe o nome exato do pacote do programa que quer instalar, pesquise com search e uma palavra. O search procura a palavra no nome e no resumo (Summary) dos pacotes e coloca no topo o pacote cujo nome corresponde exatamente.
dnf search htopLast metadata expiration check: 0:21:53 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: htop ==========================
htop.x86_64 : Interactive process viewerPara htop havia só um pacote com o nome exato, então o resultado ficou em uma linha abaixo de [Name Exactly Matched].
dnf search wgetLast metadata expiration check: 0:22:35 ago on Wed Oct 28 15:24:31 2026.
========================== Name Exactly Matched: wget ==========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
========================= Name & Summary Matched: wget =========================
perl-HTTP-Tinyish-Wget.noarch : HTTP::Tinyish wget backend
wget2-devel.x86_64 : Libraries and header files needed for using wget2 libraries
wget2-libs.x86_64 : Runtime libraries for GNU Wget2
============================== Name Matched: wget ==============================
wget2.x86_64 : An advanced file and recursive website downloaderUma palavra presente em vários pacotes, como wget, apareceu dividida em três grupos: nome exatamente igual, presente no nome e no resumo, e presente só no nome.
O search não olha a descrição (Description), então não serve para buscar uma palavra que aparece só na descrição. Nesse caso, adicione a opção [--all] para ampliar a busca até a descrição e a URL.
Depois de saber o nome do pacote, use info para conferir a versão, o tamanho e de qual repositório ele vem.
dnf info htopLast metadata expiration check: 0:22:37 ago on Wed Oct 28 15:24:31 2026.
Available Packages
Name : htop
Version : 3.3.0
Release : 1.el9
Architecture : x86_64
Size : 198 k
Source : htop-3.3.0-1.el9.src.rpm
Repository : epel
Summary : Interactive process viewer
URL : http://hisham.hm/htop/
License : GPLv2+
Description : htop is an interactive text-mode process viewer for Linux, similar to
: top(1).O htop, ainda não instalado, aparece em info htop abaixo de [Available Packages] com versão 3.3.0 e repositório epel. Como o htop só existe no repositório epel, se você executar o search de novo sem o epel, nada aparece.
dnf info wgetLast metadata expiration check: 0:22:38 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
Name : wget
Version : 1.21.1
Release : 11.el9_8
Architecture : x86_64
Size : 3.1 M
Source : wget-1.21.1-11.el9_8.src.rpm
Repository : @System
From repo : appstream
Summary : A utility for retrieving files using the HTTP or FTP protocols
URL : http://www.gnu.org/software/wget/
License : GPLv3+
Description : GNU Wget is a file retrieval utility which can use either the HTTP or
: FTP protocols. Wget features include the ability to work in the
: background while you are logged out, recursive retrieval of
: directories, file name wildcard matching, remote file timestamp
: storage and comparison, use of Rest with FTP servers and Range with
: HTTP servers to retrieve files over slow or unstable connections,
: support for Proxy servers, and configurability.O wget, já instalado, apareceu abaixo de [Installed Packages]. O Repository era @System, e o repositório de onde ele foi baixado na instalação aparecia como appstream na linha [From repo].
Ao contrário, quando você só sabe o nome do arquivo e não sabe em qual pacote ele está, passe o caminho do arquivo para o provides.
dnf provides /usr/bin/treeLast metadata expiration check: 0:22:40 ago on Wed Oct 28 15:24:31 2026.
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : @System
Matched from:
Filename : /usr/bin/tree
tree-1.8.0-10.el9.x86_64 : File system tree viewer
Repo : baseos
Matched from:
Filename : /usr/bin/treeA busca por /usr/bin/tree trouxe dois grupos do pacote tree: o lado instalado (@System) e o lado do repositório (baseos). O Filename abaixo de [Matched from] é o caminho que realmente correspondeu. Se você escrever só o nome do arquivo, sem caminho, o dnf acrescenta /usr/bin/ e /usr/sbin/ na frente e procura de novo; se ainda assim não encontrar, termina com o erro abaixo.
dnf provides nosuchfileLast metadata expiration check: 0:22:41 ago on Wed Oct 28 15:24:31 2026.
Error: No matches found. If searching for a file, try specifying the full path or using a wildcard prefix ("*/") at the beginning.A mensagem de erro sugere escrever o caminho completo ou colocar o curinga [*/] na frente. O que cada um dos três comandos recebe e onde procura pode ser comparado passo a passo no diagrama abaixo.
3️⃣ Instalar, remover e atualizar pacotes: install, remove, upgrade
O pacote encontrado é instalado com install. O dnf instala de uma vez não só o pacote indicado, mas também os pacotes de dependência de que ele precisa.
dnf install htopSegundo a documentação oficial, o dnf mostra a lista de pacotes a instalar (o resumo da transação) e pergunta se deve continuar; com [-y], ele segue sem perguntar.
Os pacotes de dependência necessários na instalação podem ser conferidos antes com repoquery [--requires].
dnf repoquery --requires htopLast metadata expiration check: 0:22:59 ago on Wed Oct 28 15:24:31 2026.
libc.so.6(GLIBC_2.34)(64bit)
libcap.so.2()(64bit)
libhwloc.so.15()(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libm.so.6(GLIBC_2.29)(64bit)
libncursesw.so.6()(64bit)
libnl-3.so.200()(64bit)
libnl-3.so.200(libnl_3)(64bit)
libnl-genl-3.so.200()(64bit)
libnl-genl-3.so.200(libnl_3)(64bit)
libtinfo.so.6()(64bit)
rtld(GNU_HASH)Com apenas [--requires], aparecem só os nomes das bibliotecas que o htop exige. Para saber em qual pacote essas bibliotecas estão, use o comando a seguir.
dnf repoquery --requires --resolve htopLast metadata expiration check: 0:23:01 ago on Wed Oct 28 15:24:31 2026.
glibc-0:2.34-283.el9_8.i686
glibc-0:2.34-283.el9_8.x86_64
hwloc-libs-0:2.4.1-6.el9_7.x86_64
libcap-0:2.48-10.el9_8.1.x86_64
libnl3-0:3.11.0-1.el9.x86_64
ncurses-libs-0:6.2-12.20210508.el9.x86_64Ao adicionar [--resolve], a saída passa a mostrar os nomes dos pacotes que fornecem essas bibliotecas. Entre eles, o hwloc-libs não estava no servidor de teste, então ele é instalado junto ao instalar o htop.
O remove apaga o pacote indicado junto com os pacotes que dependem dele e, na configuração padrão, também remove os pacotes de dependência que deixaram de ser necessários.
dnf remove htopMesmo removendo só o htop, pacotes de dependência de que nenhum outro pacote precisa, como o hwloc-libs instalado por causa do htop, são removidos junto.
O que foi instalado como dependência no passado, mas hoje não é necessário para nenhum pacote, é removido pelo autoremove. Confira antes a lista do que será removido com list [--autoremove].
dnf list --autoremoveLast metadata expiration check: 0:23:09 ago on Wed Oct 28 15:24:31 2026.
Autoremove Packages
cmake-rpm-macros.noarch 3.31.8-3.el9 @appstream
grub2-tools-efi.x86_64 1:2.06-126.el9_8.alma.1 @baseos
grub2-tools-extra.x86_64 1:2.06-126.el9_8.alma.1 @baseos
libatomic.x86_64 11.5.0-14.el9.alma.1 @baseos
libvisual.x86_64 1:0.4.0-34.el9 @appstream
libwayland-server.x86_64 1.21.0-1.el9 @appstreamdnf autoremoveNo servidor de teste, apareceram 6 pacotes na lista, e o autoremove remove esses 6 de uma vez.
Para ver se saiu uma nova versão de um pacote instalado, use check-update. Com o nome de um pacote, ele verifica só esse pacote.
dnf check-update libavif libdav1dLast metadata expiration check: 0:52:20 ago on Wed Oct 28 15:24:31 2026.
libavif.x86_64 1.1.1-3.el9 epel
libdav1d.x86_64 1.5.4-1.el9 epelO comando acima, com libavif e libdav1d, terminou com código de saída 100 porque os dois tinham versão nova. O check-update termina com 100 quando há atualizações, 0 quando não há e 1 em caso de erro, então você pode usá-lo como condição em scripts.
Com list e o nome de um pacote, a versão instalada e a nova versão do repositório aparecem juntas. Com updateinfo list, você confere a qual advisory essa atualização corresponde.
dnf list libavifLast metadata expiration check: 0:52:21 ago on Wed Oct 28 15:24:31 2026.
Installed Packages
libavif.x86_64 0.11.1-5.el9 @epel
Available Packages
libavif.x86_64 1.1.1-3.el9 epelNo libavif, a versão instalada 0.11.1-5.el9 apareceu abaixo de [Installed Packages] e a 1.1.1-3.el9 do repositório, separada, abaixo de [Available Packages].
dnf updateinfo list libavifLast metadata expiration check: 0:52:24 ago on Wed Oct 28 15:24:31 2026.
FEDORA-EPEL-2026-d611eab94a bugfix libavif-1.1.1-3.el9.x86_64Essa nova versão era uma atualização do advisory de bugfix FEDORA-EPEL-2026-d611eab94a. Em atualizações de segurança, no mesmo lugar aparecem a gravidade e Sec., como em [Moderate/Sec.].
A atualização é feita com upgrade. Como o upgrade só instala versões novas dentro do que as dependências permitem, a versão mostrada pelo check-update pode não ser instalada exatamente.
dnf upgrade libavifCom o nome de um pacote, só esse pacote e os pacotes de dependência necessários vão para a nova versão.
dnf upgradeSem o nome, o alvo são todos os pacotes instalados. O fluxo de mostrar o resumo da transação e perguntar se deve continuar é igual ao do install, e a transação executada fica registrada com um número no history.
4️⃣ Lista de repositórios do comando dnf: repolist
O lugar onde search e install procuram pacotes é o repositório (repository). O repolist mostra o id e o nome dos repositórios habilitados no momento.
dnf repolistrepo id repo name
appstream AlmaLinux 9 - AppStream
baseos AlmaLinux 9 - BaseOS
epel Extra Packages for Enterprise Linux 9 - x86_64
epel-cisco-openh264 Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_64
extras AlmaLinux 9 - Extras
nginx-stable nginx stable repo
remi-modular Remi's Modular repository for Enterprise Linux 9 - x86_64
remi-safe Safe Remi's RPM repository for Enterprise Linux 9 - x86_64É fácil supor que um repositório fora da lista não existe no servidor, mas a saída padrão do repolist mostra só os repositórios habilitados. Com [--all], ele mostra também os desabilitados, junto com a coluna status. No servidor de teste, os três repositórios CRB do AlmaLinux 9 estavam todos disabled.
dnf repolist --all | grep -i crbcrb AlmaLinux 9 - CRB disabled
crb-debuginfo AlmaLinux 9 - CRB - Debug disabled
crb-source AlmaLinux 9 - CRB - Source disabledO número de pacotes, o endereço de espelho, o tempo de expiração dos metadados e o local do arquivo de configuração de um repositório são conferidos com repoinfo.
dnf repoinfo baseosLast metadata expiration check: 0:22:55 ago on Wed Oct 28 15:24:31 2026.
Repo-id : baseos
Repo-name : AlmaLinux 9 - BaseOS
Repo-status : enabled
Repo-revision : 1793090609
Repo-updated : Tue Oct 27 17:43:29 2026
Repo-pkgs : 3458
Repo-available-pkgs: 3458
Repo-size : 21 G
Repo-mirrors : https://mirrors.almalinux.org/mirrorlist/9/baseos
Repo-baseurl : http://aws.repo.almalinux.org/almalinux/9.8/BaseOS/x86_64/os/ (9 more)
Repo-expire : 86400 second(s) (last: Wed Oct 28 15:24:26 2026)
Repo-filename : /etc/yum.repos.d/almalinux-baseos.repo
Total packages: 3458Em repoinfo baseos, apareceram 3.458 pacotes, e os metadados estavam configurados para ser verificados de novo a cada 86.400 segundos (um dia). O arquivo .repo da linha [Repo-filename] é o arquivo de configuração desse repositório. As opções [--set-enabled] e [--set-disabled], que habilitam e desabilitam repositórios, são usadas com o comando config-manager do dnf-plugins-core.
5️⃣ Histórico de operações e reversão com o comando dnf: history
Depois de várias instalações e remoções, fica difícil acompanhar o que mudou e quando, mas o dnf numera cada transação (transaction) e a registra no history. Com o nome de um pacote, aparecem só as transações que alteraram esse pacote.
dnf history list tmuxID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1Na saída filtrada por tmux, sobrou só a linha da transação 51, que instalou o tmux. Um intervalo de números é escrito com dois pontos, como [50..51].
dnf history list 50..51ID | Command line | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
51 | install -y tmux | 2026-10-15 20:40 | Install | 1
50 | -y -q install mlocate | 2026-10-07 19:39 | Install | 1 EEO número na coluna [Altered] é a quantidade de pacotes alterados. No fim da linha 50 apareceu [EE], o que significa que a transação terminou, mas houve saída de aviso ou erro.
A linha de comando, os pacotes alterados e o código de resultado de uma transação são conferidos com history info.
dnf history info 51Transaction ID : 51
Begin time : Thu Oct 15 20:40:51 2026
Begin rpmdb : d3db9c92a9d0f6ef9a7a1404552bb76e9d56ba7602b1fce73fa5a62170d33c5c
End time : Thu Oct 15 20:40:51 2026 (0 seconds)
End rpmdb : a862c33ee6a2f2d0479e4dc2631907dee47591c5b6795551b755c6cd090ac1df
User : root <root>
Return-Code : Success
Releasever : 9
Command Line : install -y tmux
Persistence : Persist
Comment :
Packages Altered:
Install tmux-3.2a-5.el9.x86_64 @baseosAo abrir a 51, o comando executado install -y tmux estava registrado tal como foi digitado em [Command Line]. Em [Packages Altered] constavam o tmux instalado e o repositório @baseos, e em [Return-Code], Success. Sem o número, aparece a transação mais recente.
Se você instalou algo por engano, passe o número da transação para history undo para executar a ação inversa dessa transação. O rollback volta o estado dos pacotes para logo depois da transação indicada.
dnf history undo 51Como a transação 51 foi a instalação do tmux, undo 51 vira uma transação inversa que remove o tmux.
dnf history rollback 50O rollback 50 desfaz todas as transações executadas depois da 50, até a última, então o resultado pode ser diferente do undo 51, que remove só o tmux.
Segundo a documentação oficial, se houver um pacote que não possa ser revertido, undo e rollback terminam sem alterar nada. Mesmo que alterações feitas diretamente com rpm não estejam no histórico, eles não param com erro.
🔲 Simulador do comando dnf
No simulador abaixo, você pode digitar search, info, provides, repolist e history e ver a saída. Digitando com yum, o resultado é o mesmo.
🔢 FAQ & conteúdo recomendado



ℹ️ Aviso de afiliados
O conteúdo deste site contém links de afiliados. Quando um visitante compra um produto ou serviço por meio de um desses links, o site recebe uma comissão do vendedor. O valor que o comprador paga (em promoções, ele diminui ↓) não aumenta por causa disso. Preços, descontos e informações de estoque valem para o momento em que o texto foi escrito e podem ter mudado, por isso confirme com o vendedor antes de comprar. Os produtos são escolhidos e avaliados por critérios próprios, e o recebimento de comissão não influencia a ordem de apresentação nem o conteúdo das avaliações.