Nesse artigo vamos tratar de um assunto muito importante para quem está na trilha da certificação Linux LPIC-1 que é o gerenciamento de pacotes utilizando as ferramentas RPM e YUM.
Esse assunto sobre o RPM e YUM é cobrado mais especificamente na prova de certificação LPI-101, uma das duas provas que fazem parte da certificação Linux LPIC-1.
Antes de iniciarmos o conteúdo sobre RPM e YUM deixa eu avisar que esse artigo foi feito com base no curso do Portal da DlteC do Brasil chamado: “Instalação do Linux e Gerenciamento de Pacotes“.
Introdução aos Pacotes no Linux
A distribuição Red Hat (e baseadas) trabalham com um conjunto de pacotes agrupados – com extensão .rpm. Veja seguir a estrutura básica de um pacote binário .rpm:
No campo Arquitetura, caso o pacote apresente a informação “noarch“, significa que ele é independente de plataforma (poderá instalado em qualquer hardware). Por outro lado, caso mostre “src“, significa que se trata de um pacote de código-fonte.
Quando estudamos sobre os pacotes do Debian, vimos que o sistema armazena metadados sobre eles. Para os pacotes .rpm, a lógica também é essa: seus metadados são armazenados no diretório rpm, presente em /var/lib.
A gestão de pacotes .rpm pode ser realizada através de duas ferramentas: RPM (Red Hat Package Manager) e YUM (Yellow Dog Updater Modified).
Comando rpm
O gerenciador de pacotes rpm(man rpm) opera apenas sobre pacotes com extensão .rpm. Caso necessite de bibliotecas e dependências, estes deverão ser instalados manualmente.
Principais opções:
- -h, –hash: Exibe um indicador de progresso para a instalação do pacote.
- -v: Modo detalhado.
- -i, –install: Instala um pacote .rpm.
- -U, –update: Instala ou atualiza um pacote .rpm.
- -q, –query: Lista informações sobre um pacote.
- Opções que acompanham a opção -q:
- -a, –all: Lista todos os pacotes instalados no sistema.
- -i, –info: Exibe informações sobre um pacote instalado.
- -d, –docfiles: Exibe documentos e páginas de manuais de um pacote instalado.
- -f, –file: Determina qual pacote instalou o arquivo.
- -l, –list: Lista os arquivos instalados por determinado pacote.
- -R, –requires: Exibe as dependências do pacote.
- –whatrequires: Exibe quais são os programas dependentes do pacote.
- -p: Realiza consultas diretamente no arquivo .rpm.
- -e, –erase: Remove o pacote.
Acompanhe alguns exemplos a seguir:
# Exibe todos os pacotes instalados no sistema
dltec@cap2:~# rpm –qa
# Verifica se o pacote BitTorrent já está instalado no sistema
dltec@cap2:~# rpm -q BitTorrent
# Exibe informações sobre o pacote .rpm
dltec@cap2:~# rpm -qip BitTorrent-5.2.2-1-Python2.4.noarch.rpm
# Exibe as dependências do pacote BitTorrent antes de instala-lo
dltec@cap2:~# rpm -qpR BitTorrent-5.2.2-1-Python2.4.noarch.rpm
# Exibe as dependências do pacote gedit (já instalado no sistema)
dltec@cap2:~# rpm -qR gedit
# Exibe todos os arquivos instalados pelo pacote BitTorrent
dltec@cap2:~# rpm -ql BitTorrent
# Exibe informações sobre um pacote instalado
dltec@cap2:~# rpm -qi BitTorrent
# Exibe as documentações instaladas por um pacote já presente no sistema
dltec@cap2:~# rpm –qdf /usr/bin/vmstat
# Lista os programas que dependem do gedit
dltec@cap2:~# rpm -q –whatrequires gedit
# Instala o pacote sem as suas dependências (Mas os pacotes dependentes já #deverão estar instalados no sistema, caso contrário o programa poderá não funcionar adequadamente)
dltec@cap2:~# rpm -ivh –nodeps BitTorrent-5.2.2-1-Python2.4.noarch.rpm
# Instala o pacote libpcap (com suas dependências)
dltec@cap2:~# rpm -ivh libpcap-0.7.2-37.i586.rpm
# Atualiza o pacote (mantendo um backup do pacote mais antigo)
dltec@cap2:~# rpm -Uvh nx-3.5.0-2.el6.centos.i686.rpm
# Remove o pacote gedit
dltec@cap2:~# rpm -e gedit
# Lista qual pacote instalou o binário /usr/bin/gedit
dltec@cap2:~# rpm -qf /usr/bin/gedit
Comando yum
O gerenciador de pacotes yum (man yum), cujo arquivo de configuração é o yum.conf (localizado em /etc), é outra ferramenta utilizada para gerenciar pacotes rpm – uma espécie de equivalente do apt-get do Debian. Dessa forma, além de fazer o download dos pacotes a partir dos repositórios configurados, antes de instalá-los, são realizadas verificações relacionadas a eventuais dependências dos pacotes e, se for o caso, essas também são baixadas e instaladas.
Arquivos de configuração do YUM
O YUM é configurado através do arquivo /etc/yum.conf. Observe o seu conteúdo parcial:
dltec@cap2:~# cat /etc/yum.conf
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=16&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
Veja que, dentre as diretivas, podemos destacar o cachedir (representando o diretório de cache do yum – onde são realizados os downloads dos pacotes), debuglevel (nível de depuração do yum) e logfile (arquivo onde são armazenados os logs do yum).
No diretório /etc/yum.repos.d são encontrados arquivos .repo que contém informações sobre quais são os repositórios utilizados pelo yum para download e instalação dos pacotes. Por exemplo, observe a estrutura inicial do arquivo CentOS-Base.repo:
dltec@cap2:~# cat /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever – Base
mirrorlist=http://mirrorlist.centos.org/?release=$release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/gpgcheck=1
Gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Para propósitos de exame, vamos comentar sobre as principais partes desta estrutura.
A identificação do repositório é indicada entre colchetes (neste caso, base).
Em seguida, encontramos name, representando a descrição do campo anterior.
Já a instrução mirrorlist representa o endereço do repositório – ou seja, a partir de onde sera efetuado o download dos pacotes (pode ser http, ftp ou file).
Comandos administrativos do YUM
# Lista informações do pacote gedit
dltec@cap2:~# yum info gedit
# Exibe qual pacote instalou o comando ou determinado arquivo de configuração
dltec@cap2:~# yum provides gedit
dltec@cap2:~# yum provides /usr/bin/gedit
Ou
dltec@cap2:~# yum whatprovides gedit
dltec@cap2:~# yum whatprovides/usr/bin/gedit
# Lista os repositórios dos pacotes instalados na máquina
dltec@cap2:~# yum list installed
# Lista os repositórios dos pacotes disponíveis para a instalação (mas ainda não #instalados)
dltec@cap2:~# yum list available
# Lista todos os pacotes disponíveis e instalados
dltec@cap2:~# yum list all
# Exibe quais são os repositórios do yum
dltec@cap2:~# yum repolist
# Busca o termo gedit no cache do yum
dltec@cap2:~# yum search gedit
# Instala o pacote gedit
dltec@cap2:~# yum install gedit
Todas as vezes em que arquivos forem instalados pelo yum, é gerada uma cópia para o seu diretório de cache. Sendo assim, é uma boa prática limpar esses arquivos:
dltec@cap2:~# yum clean all
# Remove o pacote gedit
dltec@cap2:~# yum remove gedit
ou
dltec@cap2:~# yum erase gedit
# Verifica quais são os pacotes que possuem atualizações disponibilizadas
dltec@cap2:~# yum check-update
# Atualiza o pacote gedit
dltec@cap2:~# yum update gedit
# Atualiza todos os pacotes instalados no sistema
dltec@cap2:~# yum update
# Além de atualizar todos os pacotes instalados, o yum também remove os pacotes
# marcados como obsoletos.
# Normalmente, a opção upgrade é utilizada para atualizar a versão atual da
# distribuição.
dltec@cap2:~# yum upgrade
A opção –obsoletes também poderá ser utilizada com o update para o mesmo propósito
# Lista os pacotes que são necessários para o funcionamento pleno do gedit
dltec@cap2:~# yum deplist gedit
Utilizando o yumdownloader
O yumdownloader é um programa que permite baixar pacotes RPM vindos de repositórios do yum.
As questões de dependências também são resolvidas ao utilizá-lo. Agora, atenção: o comando não irá instalar o pacote – e sim, apenas realizar o seu download.
Como trata-se de um comando disponibilizado pelo pacote yum-utils, será necessário instá-lo primeiramente.
# Instala o yumdownloader
dltec@cap2:~# yum install yum-utils -y
# Utiliza o yumdownloader
dltec@cap2:~# mkdir /opt/downloaded_rpms
dltec@cap2:~# yumdownloadersamba httpd –destdir /opt/downloaded_rpms –resolve
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirror.ventraip.net.au
* extras: mirror.optus.net
* updates: mirror.optus.net
unbound-1.4.20-26.el7.x86_64.rpm
Comando rpm2cpio
O comando cpio é responsável por realizar backups de arquivos, de forma semelhante ao comando tar. Porém, em conjunto com o comando rpm2cpio, responsável por converter um arquivo .rpm para o formato cpio, torna-se possível operar com os arquivos dentro de um pacote .rpm.
# Determina os arquivos que encontram-se em um pacote .rpm
dltec@cap2:~# rpm2cpio nomedopacote.rpm | cpio -t
# Extrai os arquivos dentro do pacote .rpm para o diretório corrente
dltec@cap2:~# rpm2cpio nomedopacote.rpm | cpio -id
Por padrão, o comando envia a sua saída para a saída-padrão (STDOUT).
Com isso finalizamos o artigo sobre o RPM e YUM e se você ainda tiver alguma dúvida, sugestão ou até mesmo um elogio utilize a parte inferior do artigo, onde temos a área de perguntas para deixar sua mensagem!
Obrigado pela leitura e até uma próxima!
One Response
Ótimo post! Sempre utilizo o apt-get no Linux mint e Ubuntu, mas é sempre bom conhecer um pouco mais do que o rpm pode fazer. Parabéns pelo artigo!