[TUTORIAL] Gerenciamento de pacotes com DNF para o dia a dia

Fernando_linuxbr
editado October 2023 em Tutoriais

Olá a todos!
Esse tutorial é para quem deseja realizar tarefas básicas de gerenciamento de pacotes usando o comando DNF, do tipo instalar, remover e atualizar programas e o sistema todo.
Não vou descrever todo o manual do DNF aqui, apenas os comandos mais comuns no dia a dia.


INSTALAÇÃO DE PACOTES

Para instalar programas usando o comando dnf, você precisa estar logado como root ou usar o comando sudo, isso é necessário pois o pacote que será instalado, colocará arquivos em locais protegidos do sistema, irei utilizar o sudo nesse tutorial.

Neste exemplo vou instalar um editor de texto simples chamado leafpad, para instalar um pacote/programa é bem simples, basta você usar o comando sudo dnf install nome_do_programa e se tudo correr bem o dnf vai baixar o programa verificar as dependências e instalar o software na sua maquina, veja o exemplo abaixo.

sudo dnf install leafpad

Se você rodar esse comando, vai notar que o pacote não será instalado automaticamente, o dnf por padrão irá perguntar se você realmente deseja instalar o pacote e solicitar que você pressione a tecla "S" e enter para confirmar, isso é útil para você ter uma noção das dependências que serão instadas e se ocorrer algum problema o dnf também mostrará o erro, então prefira essa maneira para instalar programas. Mas se você deseja que ele instale o pacote automaticamente sem perguntar nada, pode usar a opção "-y" de "yes".

sudo dnf install leafpad -y

Com o dnf você também pode instalar pacotes que estão fora do repositório, por exemplo, se você baixou o pacote rpm do google-chrome no site oficial, você pode usar o dnf para instalar, basta você navegar no terminal até a pasta e passar o nome do pacote, essa opção é útil, pois o dnf vai resolver todas as dependências que o pacote precisa.

sudo dnf install ./google-chrome-stable_current_x86_64.rpm

Com o dnf você também pode passar um link do pacote, sem precisar baixar na sua maquina, por exemplo, vou instalar o leafpad de a partir de um link:

sudo dnf install http://fedora.c3sl.ufpr.br/linux/releases/34/Everything/x86_64/os/Packages/l/leafpad-0.8.18.1-27.fc34.x86_64.rpm

Quando você instala pacotes com o dnf pode aparecer uma lista de "dependências fracas", dependências fracas são pacotes extras que o pacote que você quer precisa para estender funcionalidades, por exemplo, ao instalar o gerenciador de arquivo thunar, ele tem uma dependência fraca o pacote thunar-google-drive, que serve para você ter o google-drive direto no thunar, apesar de ser interessante esse pacote, ele não é necessário para o funcionamento do thunar, é útil apenas para quem deseja essa funcionalidade, se você não quer que essas dependências fracas sejam instaladas, use o comando abaixo.
(Utilize esse comando quando você conhece o software e tem certeza do que não quer, na maioria dos casos o que dnf sugere na instalação será útil de alguma forma.)
(O exemplo do thunar é apenas uma ilustração, não existe pacote thunar-google-drive.)

sudo dnf install NOME_PACOTE --setopt=install_weak_deps=False


REMOÇÃO DE PACOTES.

Para remover pacotes usando o dnf é muito simples, basta usar o sudo dnf remove nome_do_pacote, veja o exemplo abaixo para remover o programa leafpad que eu tinha instalado.

sudo dnf remove leafpad 

Você também pode usar a opção "-y" de yes para remover automaticamente sem realizar perguntas.

sudo dnf remove leafpad -y


PESQUISANDO PACOTES

Pesquisando pacotes no repositório, você pode usar a opção "list" do dnf, para pesquisar pacotes.

Pesquisar pelo pacote synapse que é um launcher de aplicativos, por exemplo:

dnf list synapse
Pacotes disponíveis
synapse.x86_64                                                  0.2.99.4-7.fc34

Pacotes disponíveis, mostra que o pacote está disponível no repositório, mas não está instalado na máquina.

Pesquisando por pacotes instalados na máquina, por exemplo, pesquisar por um pacote chamado tree.

dnf list --installed tree
Pacotes instalados
tree.x86_64                                                   1.8.0-6.fc34                                                    @anaconda

13:11:34.
Pesquisando utilizando utilitário grep, por exemplo, pesquisar todos os pacotes instalados na minha máquina que tenham "tree" no nome.

dnf list --installed | grep tree
ostree.x86_64                               2021.1-2.fc34                       @fedora  
ostree-libs.x86_64                          2021.1-2.fc34                       @fedora  
tree.x86_64                                 1.8.0-6.fc34                        @anaconda

Poderia ser feito dessa maneira o dnf suporta globbing.

dnf list --installed '*tree*'
Pacotes instalados
ostree.x86_64                                                    2021.1-2.fc34                                                @fedora  
ostree-libs.x86_64                                               2021.1-2.fc34                                                @fedora  
tree.x86_64                                                      1.8.0-6.fc34                                                 @anaconda

Se você não tem o nome correto do software talvez o list não mostre o nome do pacote, se você quiser pesquisar uma "string" e ver todos os pacotes que cotenham a "string" pesquisada na sua busca, use a opção "search"

dnf search synapse

Vai buscar todos os pacotes que tenham "synapese" no seu nome.

ATUALIZAÇÃO DO SISTEMA

Você pode atualizar todo o sistema com o dnf, fazendo a atualização pelo terminal, você pode analisar o que vai ser instalado no sistema e também pode verificar melhor se algum erro ocorrer, o comando para atualizar todo o sistema é:

sudo dnf upgrade 

Você também pode atualizar apenas um programa específico, passando seu nome para a opção upgrade, por exemplo para atualizar o editor de texto leafpad.

sudo dnf upgrade leafpad 

Às vezes problemas com dependências acorrem, por exemplo, durante uma atualização o dnf queira instalar o gimp no sistema, porém você não usa esse programa na máquina, você pode pedir para o dnf upgrade atualizar tudo, mas não instalar o gimp na máquina, com a opção "--exclude". (essa situação com gimp realmente ocorreu no dia 16/06/2021 e foi relata por usuários no grupo da Comunidade Fedora Brasil no Telegram, veja a saída da atualziação:https://pastebin.com/raw/vMfxaA6s

sudo dnf upgrade --exclude gimp 

Outra situação comum é ocorrer um erro durante a atualização e dnf não conseguir obter o pacote do reposítorio, isso pode ocorrer por varios fatores, você pode usar a opção "--refresh" para o dnf sincronizar os metadados do repositório antes de fazer o upgrade.

sudo dnf upgrade --refresh 

Para verificar se há upgrades disponíveis na sua máquina, use o comando abaixo.

dnf check-upgrade


TRABALHANDO COM GRUPOS

Grupo de pacotes são uma maneira do desenvolvedor configurar um ambiente completo, por exemplo, a área de trabalho do XFCE, não é composta por um único pacote, o XFCE é composto por vários pacotes, como o thunar (gerenciador de arquivos), xfce4-panel (painel da área de trabalho) e xfce4-screenshooter (aplicativo para screenshots da tela) dentre tantos... Imagine que para você instalar área de trabalho completa no sistema você precise lembrar o nome de cada pacote, isso seria muito dispendioso, pois são muitos pacotes. É aí que entra o grupo, basicamente é um pacote virtual que contém como dependências todos os componentes do ambiente, então quando você instala o grupo "Ambiente de Trabalho Xfce" vai instalar todos os pacotes que compoẽm o ambiente XFCE.

Para listar todos os grupos disponíveis no sistema, use o comando abaixo. (Geralmente comando de pesquisa que não modificam o sistema não necessita do uso do sudo ou root).

dnf group list -v
   Ambiente de trabalho KDE Plasma (kde-desktop-environment)
   Ambiente de trabalho LXDE (lxde-desktop-environment)
   Ambiente de trabalho LXQt (lxqt-desktop-environment)
   Ambiente de trabalho Cinnamon (cinnamon-desktop-environment)
   Ambiente de trabalho MATE (mate-desktop-environment)
   Ambiente de trabalho Sugar (sugar-desktop-environment)
   Área de trabalho deepin (deepin-desktop-environment)

Na saída deste comando é possível vários grupos de ambientes de desktop como o MATE, KDE, LXDE e LXQt, esses grupos quando instalado fornecem o ambiente completo.

Para instalar o grupo de pacote "Ambiente de trabalho MATE" você deve pegar o nome do grupo que está entre parenteses (mate-desktop-environment) no exemplo vou instalar o MATE usando o comando abaixo.

sudo dnf group install mate-desktop-environment

Ver informações do grupo.

dnf group info mate-desktop-environment

Você também pode remover um grupo já instalado no sistema, por exemplo, remover o ambiente mate instalado.

sudo dnf group remove mate-desktop-environment

Verificar quais grupos estão instalados no seu sistema.

dnf group list --installed -v

Atualizar um grupo instalado na sua maquina, exemplo você tem o KDE Desktop na versão estável no Fedora e gostaria de atualizá-lo para a versão testing, basta habilitar os repositórios testing no sistema e atualizar o grupo "Ambiente de trabalho KDE Plasma"

dnf group upgrade kde-desktop-environment


DESATUALIZANDO PACOTES (DOWNGRADE)

Imagine que você atualize um pacote para uma nova versão e note que ela não está funcionando corretamente, e pesquisando descobre que há uma bug nessa nova versão de pacote que você atualizou, isso é frustrante e é comum de ocorrer, mas existe uma opção do comando dnf que reverte esse pacote para uma versão mais baixa, onde o problema não ocorra, ou seja, você desatualiza o pacote. Exemplo revertendo uma versão do kernel.

sudo dnf downgrade kernel


REINSTALAÇÃO DE PACOTES

Reinstalar um pacote pode ser útil nos casos em que você apagou um arquivo desse pacote, por exemplo, um arquivo de configuração em /etc/ ou o software está apresentando algum comportamente estranho, para reinstar um pacote com o dnf é bem fácil, vou reinstalar o leafpad.

sudo dnf reinstall leafpad 


HABILITANDO E DESABILITANDO REPOSITÓRIOS

O dnf busca os pacotes em repositórios e por padrão vem com alguns configurados, durante o gerenciamento de pacotes pode ser necessário que você ative ou desative um repositório.

Ver todos os repositórios configurados na sua maquina e a situção, se estão "habilitados" ou "desabilitados"

dnf repolist --all

Para habilitar um repositóri, você usar o comando "sudo dnf config-manager --set-enabled", neste exemplo vou habilitar os reposítorios testing (esse repositório tem pacotes pouco testados que podem conter bugs, utilize com cuidado).

sudo dnf config-manager --set-enabled updates-testing
sudo dnf config-manager --set-enabled updates-testing-modular

Para desabilitar, neste exemplo vou desabilitar os repositórios testing.

sudo dnf config-manager --set-disabled updates-testing
sudo dnf config-manager --set-disabled updates-testing-modular

Referências

Insalação
Remoção
Pesquisando
Atualizando
Grupos
Downgrade
Reinstalação
Repositórios

Comentários