Gerenciamento de Pacotes Red Hat: rpm, yum e dnf no CentOS e RHEL
O Red Hat Package Manager e o YUM são um poderosos gerenciadores de pacotes que permite ao administrador instalar, remover e obter informações sobre pacotes. É um método de distribuição de software largamente usado em várias distribuições Linux, como o Red Hat Enterprise Linux, CentOS e Fedora.
O Gerenciamento de Pacotes Red Hat RPM e YUM possibilita instalar pacotes, fazer atualizações de software, grupos de software e mais dezenas de tarefas. É tão poderoso quanto o dpkg e apt-get.
Este gerenciador de pacotes realiza de forma simples a instalação, manutenção e remoção de pacotes de software.
Cada pacote rpm contém programas binários, arquivos de configuração, documentação e informações de como eles devem ser instalados e suas dependências.
Este utilitário mantém um banco de dados de todos os pacotes instalados e seus arquivos, controle de versões e dependências.
Em algumas situações especiais o banco de dados pode ficar corrompido. O gerenciador de pacotes conta com funções especiais para recuperar a sua integridade.
Os pacotes rpm acompanham a seguinte nomenclatura:

- Nome_do_pacote: Assim como nos pacotes Debian, um pacote rpm tem um nome curto que descreve seu conteúdo. Se mais de uma palavra for utilizada é utilizado o traço;
- Versão do Software: Cada arquivo rpm tem a sua versão que podem variar de acordo com os pacotes. Geralmente é numérica e são separadas do nome por um traço;
- Distribuição do Software: Cada arquivo também pode ter uma distribuição ou empacotamento diferente;
- Arquitetura: O pacote rpm costuma carregar o nome da arquitetura para a qual foi montado;
- Sufixo: Ele utiliza a terminação .rpm para fácil identificação.
Podemos encontrar também pacotes com nomes no formato pacote-versao.src.rpm. Esses pacotes contêm os arquivos fontes de um software e são na grande maioria independentes de arquitetura.
O gerenciador de pacotes rpm é utilizado por várias distribuições Linux. Mas os pacotes podem diferir nas informações adicionais de uma distribuição para outra. Procure sempre utilizar pacotes feitos especificamente para a sua distribuição.
Este gerenciador também faz o controle de dependências entre os pacotes. Eles contêm informações das dependências de cada aplicativo, e essa informação é utilizada durante sua instalação ou remoção.
Caso a instalação de um novo pacote requeira outro, o rpm alertará o administrador.
A ferramenta rpm
O comando rpm é responsável pela instalação, remoção, atualização, conversão dos pacotes. Este comando é organizado primeiro em modos de operação, que podem ser: consulta, verificação, integridade, instalação, remoção, atualização e reconstrução do banco de dados rpm. Cada modo de operação pode ou não conter várias opções disponíveis.
Os modos de operação mais frequentes são:
Para consultar a base de dados do rpm
# rpm {-q|—query} [opções de consulta] nome_do_pacote
Exemplo:
# rpm –q bash
bash-2.05b-207
Para verificar o status dos pacotes com rpm
# rpm {-V|—verify} nome_do_pacote
Exemplo:
# rpm -V snort-2.0.1-98.i586.rpm
package snort-2.0.1-98.i586.rpm is not installed
Para verificar a assinatura e integridade dos pacotes com rpm
# rpm {-K|—checksig} nome_do_pacote
Exemplo:
# rpm -K libpcap-0.7.2-37.i586.rpm
libpcap-0.7.2-37.i586.rpm: sha1 md5 gpg OK
Para instalar um novo pacote com rpm:
# rpm {-i|—install} [opções de instalação] nome_do_pacote
Exemplo:
# rpm –i libpcap-0.7.2-37.i586.rpm
Para instalar um novo pacote mostrando detalhes da instalação:
# rpm –ivh libpcap-0.7.2-37.i586.rpm
Preparing... ########################################### [100%]
1:libcap ########################################### [100%]
Para atualizar um pacote com rpm:
# rpm {-U|—upgrade} [opções de instalação] nome_do_pacote
Exemplo:
# rpm -U libpcap-0.7.2-37.i586.rpm
package libpcap-0.7.2-37 is already installed
Para remover um pacote com rpm:
# rpm {-e|—erase} [opções de remoção] nome_do_pacote
Exemplo:
# rpm –e libpcap-0.7.2-37.i586.rpm
Para refazer o banco de dados RPM:
# rpm {—initdb|—rebuilddb}
Exemplo:
# rpm —initdb
Para consultar as dependências de um pacote com rpm:
# rpm {—qpR }
Exemplo:
# rpm —qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm
/usr/bin/python2.4
python >= 2.3
python(abi) = 2.4
python-crypto >= 2.0
python-psyco
python-twisted >= 2.0
python-zopeinterface
rpmlib(CompressedFileNames) = 2.6
Para instalar um pacote ignorando as dependências (algo bem estúpido de se fazer):
# rpm {—ivh --nodeps }
Exemplo:
# rpm -ivh --nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm
Preparing... ########################################### [100%]
1:BitTorrent ########################################### [100%]
Para listar os pacotes rpm instalados recentemente:
# rpm {—qa --last }
Exemplo:
# rpm -qa --last
kernel-headers.x86_64 Sex 06 Mar 2019 11:55:01 BRT
graphviz-gd.x86_64 Sex 06 Mar 2019 11:55:00 BRT
file-devel.x86_64 Sex 06 Mar 2019 11:55:00 BRT
Para saber a qual pacote rpm um arquivo pertence:
# rpm {—qf arquivo }
Exemplo:
# rpm -qf /usr/bin/htpasswd
httpd24-tools-2.4.10-15.58.amzn1.x86_64
Para saber informações de um determinado pacote instalado:
# rpm {—qi nome_do_pacote }
Exemplo:
# rpm -qi httpd24
Name : httpd24
Version : 2.4.10
Release : 15.58.amzn1
Architecture: x86_64
Install Date: Sex 13 Fev 2015 21:56:14 BRST
Group : System Environment/Daemons
Size : 3792099
Para verificar a integridade dos arquivos instalados com o banco de dados de pacotes:
# rpm {—Va }
Exemplo:
# rpm -Va
S.5....T. c /etc/sysconfig/svnserve
....L.... c /etc/localtime
..?...... /usr/sbin/glibc_post_upgrade.x86_64
S.5....T. c /etc/httpd/conf/httpd.conf
..?...... /usr/sbin/suexec
As opções de consulta de informações de pacotes mais frequentes são:
- -a: Lista todos os pacotes instalados no sistema;
- -f arquivo: Lista o nome do pacote que contém o arquivo procurado;
- -p nomedopacote: Mostra se um determinado pacote está instalado;
- -i nomedopacote: Mostra informações extras sobre um determinado pacote;
- -l nomedopacote: Mostra a lista dos arquivos que um pacote contém;
- -R nomedopacote: Mostra a lista de dependências que um pacote necessita para ser instalado.
As opções de instalação e atualização de pacotes mais frequentes são:
- —force: Esta opção força a instalação de um pacote e seus arquivos mesmo se ele já estiver instalado. Esta opção inclusive força a instalação de um pacote mais antigo por cima de um mais novo
- -h: Esta opção mostra o progresso da instalação;
- —nodeps: Esta opção desabilita a checagem de dependências para a instalação de um pacote;
- -v: Mostra informações extras durante a instalação e atualização dos pacotes;
- -vv: Mostra muito mais informações durante a instalação e atualização dos pacotes. Geralmente utilizada por desenvolvedores.
As opções de desinstalação dos pacotes são:
- —nodeps: Desabilita a checagem de dependências, desinstalando o pacote mesmo que ele seja necessário por outros;
- —test: Testa a remoção do pacote, sem de fato removê-lo. É útil para testar se a remoção do pacote vai causar algum dano ao sistema ou aplicativo.
Prefira ao atualizar um pacote por uma versão mais nova utilizar o modo –U. Assim o pacote mais antigo será removido, o pacote novo será instalado e as configurações serão mantidas.
Ferramenta YUM
O Yum é um acrônimo para Yellow dog Updater, Modified. É uma ferramenta utilizada para gerenciar a instalação e remoção de pacotes em distribuições Linux, que utilizam o sistema RPM.
É um gerenciador de pacotes de arquivos similar ao APT-GET que lida automaticamente com dependências computando-as e resolvendo o que deve ser feito para tratá-las.
Ele possui um arquivo de configuração que especifica quais os repositórios que o YUM deve utilizar para procurar e baixar os pacotes RPM.
Nem sempre um Linux baseado em RPM terá o gerenciador de pacotes YUM instalado. Se for necessário instalar o YUM, ele pode ser conseguido no site http://yum.baseurl.org.
O comando para instalação é:
# rpm -ivh yum.rpm
O YUM necessita que você faça a configuração dos repositórios de pacotes no arquivo de configuração yum.conf
Exemplo:
# vi /etc/yum.conf
[fedora-us-3-core]
name=Fedora Core 3 — Fedora US mirror
baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.os
[fedora-us-3-updates]
name=Fedora Core 3 Updates — Fedora US mirror
baseurl=http://SERVERNAME/fedora/fedora/$releasever/$basearch/RPMS.updates
Além do arquivo de configuração /etc/yum.conf, o YUM permite que você coloque arquivos de configuração de repositórios no diretório /etc/yum.repos.d/. Neste diretório ficam as configurações de cada repositório.
Você pode adicionar repositórios extras ou de software em “beta-teste” na lista de repositórios do YUM.
Alguns comandos do yum:
- yum list: Lista todos os pacotes disponíveis;
- yum check-update ou yum list updates: Verifica se há pacotes disponíveis para um update;
- yum update: Faz o update de seu sistema;
- yum install <pacote(s)>:Instala um pacote específico e suas dependências;
- yum remove <pacote(s)>: Remove um pacote específico
- yum info < pacote >: Apresenta informações básicas de um determinado pacote.
Veja os exemplos:
Para instalar um pacote com yum:
# yum install postgresql
Resolving Dependencies
Install 2 Package(s)
Is this ok [y/N]: y
Package(s) data still to download: 3.0 M
(1/2): postgresql-9.0.4-5.fc15.x86_64.rpm | 2.8 MB 00:11
(2/2): postgresql-libs-9.0.4-5.fc15.x86_64.rpm | 203 kB 00:00
------------------------------------------------------------------
Total 241 kB/s | 3.0 MB 00:12
Running Transaction
Installing : postgresql-libs-9.0.4-5.fc15.x86_64 1/2
Installing : postgresql-9.0.4-5.fc15.x86_64 2/2
Complete!
Para fazer update dos pacotes instalados com yum:
# yum update
Plugins carregados: priorities, update-motd, upgrade-helper
amzn-main/latest
Resolvendo dependências
--> Executando verificação da transação
---> O pacote aws-cli.noarch 0:1.7.5-1.2.amzn1 será atualizado
---> O pacote aws-cli.noarch 0:1.7.12-1.3.amzn1 será uma atualização
--> Resolução de dependências finalizada
Dependências resolvidas
==============================================================
Package Arq. Versão Repo Tam.
==============================================================
Instalando:
kernel x86_64 3.14.34-27.48.amzn1 amzn-updates 16 M
Atualizando:
aws-cli noarch 1.7.12-1.3.amzn1 amzn-updates 604 k
Resumo da transação
============================================================== Instalar 1 Package (+4 Dependent packages)
Upgrade 1 Package
Tamanho total do download: 16 M
Is this ok [y/d/N]:
Para remover um pacote com yum:
# yum remove postgresql
Resolving Dependencies
---> Package postgresql.x86_64 0:9.0.4-5.fc15 will be erased
Is this ok [y/N]: y
Running Transaction
Erasing : postgresql-9.0.4-5.fc15.x86_64 1/1
Removed:
postgresql.x86_64 0:9.0.4-5.fc15
Complete!
Para procurar todos os pacotes com uma determinada palavra
# yum search firefox
Loaded plugins: langpacks, presto, refresh-packagekit
============== N/S Matched: firefox ======================
firefox.x86_64 : Mozilla Firefox Web browser
gnome-do-plugins-firefox.x86_64 : gnome-do-plugins for firefox
mozilla-firetray-firefox.x86_64 : System tray extension for firefox
mozilla-adblockplus.noarch : Adblocking extension for Mozilla Firefox
mozilla-noscript.noarch : JavaScript list extension for Mozilla Firefox
Name and summary matches only, use “search all” for everything.
Para obter informações sobre um determinado pacote usando o yum:
# yum info mysql
yum info mysql
Plugins carregados: priorities, update-motd, upgrade-helper
newrelic 59/59
Pacotes instalados
Nome : mysql
Arquitetura : noarch
Versão : 5.5
Lançamento : 1.6.amzn1
Tamanho : 0.0
Repo : installed
Para ver todos os pacotes disponíveis no repositório do yum:
# yum list
Pacotes instalados
GeoIP.x86_64 1.4.8-1.5.amzn1 @amzn-main
GeoIP-devel.x86_64 1.4.8-1.5.amzn1 @amzn-main
PyYAML.x86_64 3.10-3.6.amzn1 installed
acl.x86_64 2.2.49-6.9.amzn1 installed
acpid.x86_64 1.0.10-2.1.6.amzn1 installed
alsa-lib.x86_64 1.0.22-3.9.amzn1 installed
apr.x86_64 1.5.0-2.11.amzn1 @amzn-updates
(…)
Para saber a qual pacote um determinado arquivo pertence:
# yum provides /etc/sysconfig/nfs
Plugins carregados: priorities, update-motd, upgrade-helper
1:nfs-utils-1.2.3-39.15.amzn1.x86_64 : NFS utilities and supporting clients and daemons for the kernel NFS server
Repo : amzn-main
Resultado a partir de:
Nome de arquivo : /etc/sysconfig/nfs
Para saber quais são os repositórios ativos no YUM:
# yum repolist
id do repo nome do repo status
amzn-main/latest amzn-main-Base 5.019
amzn-updates/latest amzn-updates-Base 1.085
newrelic/x86_64 New Relic packages 59
repolist: 6.163
O comando yumdownloader
O comando yumdownloader faz o download dos arquivos RPM dos repositórios do YUM. É útil para você baixar os pacotes para posterior instalação, ou quando vai instalar pacotes em várias máquinas, sem a necessidade de baixar várias vezes o mesmo pacote.
Exemplo:
$ yumdownloader httpd24
amzn-main/latest | 2.1 kB 00:00
amzn-updates/latest | 2.3 kB 00:00
httpd24-2.4.10-15.58.amzn1.x86_64.rpm | 1.3 MB 00:00
Aprenda o Red Hat Enterprise Linux com o Curso Preparatório para RHCSA da Certificação Linux. Se você já tem uma conta, ou quer criar uma, basta entrar ou criar seu usuário aqui.
Gostou? Compartilhe
Isso foi só uma peça. O curso ensina o caminho completo — do primeiro comando ao dia da prova.