Gerenciamento de Pacotes Red Hat RPM e YUM [Guia Básico]
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.