Um guia rápido para o gerenciador de pacotes DNF

Publicados: 2020-06-06

DNF é o sistema de gerenciamento de pacotes padrão na maioria das distribuições Linux baseadas em RPM agora.

O DNF baixa pacotes de repositórios, instala, desinstala e atualiza pacotes. Ele executa a resolução automática de dependência para pacotes que você está instalando, atualizando ou removendo e instala todos os pacotes necessários para atender aos requisitos de dependência.

No Fedora, ele é o gerenciador de pacotes padrão desde o Fedora 22. No RHEL 8.x, agora é o gerenciador de pacotes padrão.

O DNF fornece gerenciamento seguro de pacotes, permitindo a verificação de assinatura GPG em pacotes assinados GPG. O DNF não instalará nenhum pacote não assinado com a chave correta para esse repositório.

Para compatibilidade com versões anteriores, o RHEL 8.x também possui um comando YUM, embora seja um link para DNF.

Por que DNF?

DNF ou Dandified YUM é a próxima geração de YUM. Comparado ao YUM, o DNF tem melhor utilização de memória, gerenciamento de dependência aprimorado e capacidade de executar usando Python 2 e Python 3.

Gerenciamento de pacotes com DNF

Você deve ter privilégios de superusuário para usar o comando DNF para instalar, atualizar ou remover o pacote. A seguir está um conjunto de comandos DNF frequentemente usados ​​por administradores de sistema.

Pesquisando um pacote

Para procurar um pacote instalado ou disponível em todos os repositórios, use

 $ sudo dnf search <em>package_name</em>

Por exemplo, para procurar o pacote Nmap:

 $ sudo dnf search nmap
 Last metadata expiration check: 0:05:14 ago on Tue 02 Jun 2020 08:38:09 PM UTC. ==================================== Name Exactly Matched: nmap ===================================== nmap.x86_64 : Network exploration tool and security scanner =================================== Name & Summary Matched: nmap ==================================== nmap-ncat.x86_64 : Nmap's Netcat replacement

Listando pacotes

Para ver uma lista de todos os pacotes instalados e disponíveis:

 $ sudo dnf list all
 Installed Packages GConf2.x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 ...

Para listar todos os pacotes instalados:

$ sudo dnf list installed

 Installed Packages NetworkManager.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-libnm.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-team.x86_64 1:1.22.8-4.el8 @anaconda NetworkManager-tui.x86_64 1:1.22.8-4.el8 @anaconda PackageKit.x86_64 1.1.12-4.el8 @AppStream PackageKit-glib.x86_64 1.1.12-4.el8 @AppStream WALinuxAgent.noarch 2.2.38-1.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms abattis-cantarell-fonts.noarch 0.0.25-4.el8 @AppStream acl.x86_64 2.2.53-1.el8 @anaconda ...

Para listar todos os pacotes disponíveis:

 $ sudo dnf list available
 Last metadata expiration check: 1:15:10 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages CUnit.i686 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit.x86_64 2.1.3-17.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms CUnit-devel.i686 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms CUnit-devel.x86_64 2.1.3-17.el8 rhui-codeready-builder-for-rhel-8-x86_64-rhui-rpms ...

Por exemplo, para listar todos os pacotes MySQL disponíveis:

 $ sudo dnf list available "mysql*"
 Last metadata expiration check: 1:17:04 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Available Packages mysql.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-common.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-devel.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-errmsg.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-libs.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-server.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms mysql-test.x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms

Exibindo informações do pacote

Para exibir informações sobre um pacote:

 $ sudo dnf info <em>package_name </em>

Por exemplo, para exibir informações sobre o servidor httpd:

 $ sudo dnf info httpd
 Last metadata expiration check: 0:15:04 ago on Mon 01 Jun 2020 11:23:11 PM UTC. Available Packages Name : httpd Version : 2.4.37 Release : 21.module+el8.2.0+5008+cca404a3 Architecture : x86_64 Size : 1.4 M Source : httpd-2.4.37-21.module+el8.2.0+5008+cca404a3.src.rpm Repository : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Summary : Apache HTTP Server URL : https://httpd.apache.org/ License : ASL 2.0 Description : The Apache HTTP Server is a powerful, efficient, and extensible : web server.

Instalando pacotes

Instalando um único pacote

Para instalar um único pacote e todas as suas dependências não instaladas:

 $ sudo dnf install package_name

Por exemplo, para instalar o Nginx:

 $ sudo dnf install nginx
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k Installing dependencies: gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k jbigkit-libs x86_64 2.1-14.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 55 k ..

Isso instalará o Nginx e todos os requisitos de dependência não instalados.

Instalando vários pacotes

Você também pode instalar vários pacotes adicionando nomes de pacote a este comando. Por exemplo, para instalar o servidor Nginx, PHP e MySQL, digite:

 $ sudo dnf install nginx php mysql-server
 Dependencies resolved. =========================================================================================== Package Arch Version Repository Size =========================================================================================== Installing: mysql-server x86_64 8.0.17-3.module+el8.0.0+3898+e09bb8de rhui-rhel-8-for-x86_64-appstream-rhui-rpms 22 M nginx x86_64 1:1.14.1-9.module+el8.0.0+4108+af250afe rhui-rhel-8-for-x86_64-appstream-rhui-rpms 570 k php x86_64 7.2.24-1.module+el8.2.0+4601+7c76a223 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.5 M Installing dependencies: apr x86_64 1.6.3-9.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 125 k apr-util x86_64 1.6.1-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 105 k gd x86_64 2.2.5-6.el8 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 144 k httpd x86_64 2.4.37-21.module+el8.2.0+5008+cca404a3 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 1.4 M httpd-filesystem noarch 2.4.37-21.module+el8.2.0+5008+cca404a3 ...

Instalando um pacote por seu nome de arquivo binário

Se você souber o nome do arquivo binário a ser instalado, mas não o nome do pacote, isso já é suficiente para instalar o pacote relevante.

Por exemplo, se você inserir:

 $ sudo dnf install /usr/sbin/named
 Last metadata expiration check: 1:21:25 ago on Tue 02 Jun 2020 05:37:11 PM UTC. Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Installing: bind x86_64 32:9.11.13-5.el8_2 rhui-rhel-8-for-x86_64-appstream-rhui-rpms 2.1 M Transaction Summary ===================================================================================================== Install 1 Package Total download size: 2.1 M Installed size: 4.5 M Is this ok [y/N]:

O DNF pesquisa e localiza o pacote que fornece /usr/sbin/ nomeado e solicita que você o instale.

Descobrindo qual pacote possui um arquivo

Se você souber o nome do arquivo e quiser descobrir qual pacote o fornece (instalado ou não), use:

 $ sudo dnf provides <em>file_name</em>

Por exemplo, para descobrir qual pacote fornece nomeado, o binário para uso do servidor DNS:

 $ sudo dnf provides named
 Last metadata expiration check: 1:27:30 ago on Mon 01 Jun 2020 11:23:11 PM UTC. bind-32:9.11.4-16.P2.el8.x86_64 : The Berkeley Internet Name Domain (BIND) DNS (Domain Name System) : server Repo : rhui-rhel-8-for-x86_64-appstream-rhui-rpms Matched from: Filename : /usr/sbin/named

Removendo um pacote

Para remover um pacote:

 sudo dnf remove <em>package_name</em>

Mas cuidado, o DNF não é capaz de remover um pacote sem remover também os pacotes que dependem dele. Para remover o pacote nmap, use:

 $ sudo dnf remove nmap Dependencies resolved. ===================================================================================================== Package Architecture Version Repository Size ===================================================================================================== Removing: nmap x86_64 2:7.70-5.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 24 M Transaction Summary ===================================================================================================== Remove 1 Package Freed space: 24 M Is this ok [y/N]:

Gerenciando grupos de pacotes

Um grupo de pacotes é uma coleção de pacotes que estão intimamente relacionados e servem a um propósito comum. A instalação de um grupo de pacotes instala um conjunto de pacotes, economizando muito tempo.

Listar todos os grupos de pacotes

Para listar todos os grupos de pacotes:

 $ sudo dnf group list
 Available Environment Groups: Server with GUI Server Workstation Custom Operating System Virtualization Host Installed Environment Groups: Minimal Install Installed Groups: Security Tools Container Management Available Groups: Legacy UNIX Compatibility Development Tools Scientific Support .NET Core Development Graphical Administration Tools Headless Management RPM Development Tools Network Servers System Tools Smart Card Support

Listar todos os pacotes em um grupo

Para listar todos os pacotes em um grupo:

 $ sudo dnf group info <em>package_name</em>

Por exemplo, para visualizar pacotes no grupo Ferramentas de segurança:

 $ sudo dnf group info “security tools”
Group: Security Tools Description: Security tools for integrity and trust verification. Default Packages: scap-security-guide Optional Packages: aide hmaccalc openscap openscap-engine-sce openscap-utils scap-security-guide-doc scap-workbench tpm-quote-tools tpm-tools tpm2-tools trousers

Instalando um grupo de pacotes

A instalação de um grupo instalará todos os pacotes em um grupo. Para instalar um grupo de pacotes, use:

 sudo dnf group install <em>package_group_name</em>

Por exemplo, para instalar o grupo “Network Servers”:

 $ sudo dnf group install “Network Servers”
 Last metadata expiration check: 1:40:14 ago on Wed 03 Jun 2020 05:53:11 PM UTC. Dependencies resolved. =========================================================================================== Package Architecture Version Repository Size =========================================================================================== Installing Groups: Network Servers Transaction Summary =========================================================================================== Is this ok [y/N]:

Removendo um grupo de pacotes

Para remover um grupo de pacotes:

 sudo dnf remove <em>package_name</em>

Portanto, para remover o grupo de pacotes “Ferramentas de segurança”:

 $ sudo dnf group remove "security tools"
 Dependencies resolved. ===================================================================================================== Package Arch Version Repository Size ===================================================================================================== Removing: scap-security-guide noarch 0.1.48-7.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 182 M Removing unused dependencies: GConf2 x86_64 3.2.6-22.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 6.3 M libxslt x86_64 1.1.32-4.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 734 k openscap x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 58 M openscap-scanner x86_64 1.3.2-6.el8 @rhui-rhel-8-for-x86_64-appstream-rhui-rpms 137 k xml-common noarch 0.6.3-50.el8 @rhui-rhel-8-for-x86_64-baseos-rhui-rpms 78 k Removing Groups: Security Tools Transaction Summary ===================================================================================================== Remove 6 Packages Freed space: 247 M Is this ok [y/N]: 

Atualizando pacotes

Atualizando todos os pacotes

Para atualizar todos os pacotes e suas dependências, você pode usar:

 $ sudo dnf upgrade
 Last metadata expiration check: 1:09:31 ago on Tue 02 Jun 2020 08:38:09 PM UTC. Dependencies resolved. Nothing to do. Complete!

Isso instala todas as atualizações que podem ser instaladas. Tanto a atualização dnf quanto a atualização dnf têm o mesmo efeito, mas a atualização dnf é preferida.

Atualizando um único pacote

Para atualizar um único pacote, execute:

 $ sudo dnf upgrade package_name

Por exemplo, para atualizar o pacote python:

 $ sudo dnf upgrade python

Conclusão

Aprender DNF pode ser gratificante, pois geralmente é a maneira mais rápida de executar tarefas de administração do sistema. Se estiver interessado em aprender RHEL 8, confira este curso da Udemy.