Instalando pacotes utilizando RPM

Publicado por Ricardo Brito do Nascimento em 27/09/2011

[ Hits: 178.853 ]

Blog: http://brito.blog.incolume.com.br

 


Instalando pacotes utilizando RPM



Este documento é indicado para usuários que, por força maior (trabalho), estão usando outra distribuição, a qual não é habituado e novos usuários que estão utilizando distribuição variante de Red Hat.

A maioria das distribuições Linux trabalha com o conceito de pacotes binários para a instalação padronizada de softwares.

Os pacotes mais comuns são o deb, originário do Debian e utilizado em suas distribuições derivadas, e o rpm, originário do Red Hat e utilizada em distribuições derivadas como Mandriva, Fedora, CentOS, PCLinuxOS, Scientific, StartCom, openSUSE e outros.

Daí os seus nomes DEB, oriundo de Debian, e RPM, acrônimo de RedHat Packet Manager.

O que é um pacote binário

Um pacote binário de um programa é composto por alguns arquivos, bibliotecas, a documentação do programa, scripts para que eles sejam instalados rápida e corretamente, e a relação de quais outros pacotes ele depende para seu funcionamento proposto.

Os pacotes binários pré-compilados RPM possuem nomes *.i586.rpm, destinados para processadores com arquitetura de 32 bits, *.x86_64.rpm, destinados para processadores com arquitetura de 64 bits, ou ainda *.noarch.rpm, independentes de arquitetura de processador, geralmente contendo documentação ou programas feitos em linguagens interpretadas. E ainda os pacotes fonte, que podem ser recompilados para gerar os pacotes binários, e possuem nomes *.src.rpm.

Estes com extensão .src.rpm, contém o código-fonte original do programa, instruções ao programa que compilará o pacote fonte para gerar o pacote binário, no caso dos rpms, o arquivo tem extensão .spec e, geralmente, patches que são arquivos contendo diferenças no código-fonte, necessárias para a compilação ou adaptação do programa à distribuição.

Cada distribuição possui um código no nome do arquivo rpm para facilitar a identificação da distribuição para qual foi preparado:
  • Red Hat: *rh9.noarch.rpm
  • Mandriva: *mdv2008.1.i586.rpm
  • Fedora: *fc9.i386.rpm
  • PCLinuxOS: *pclos2007.i586.rpm
  • CentOS: *centos.noarch.rpm

Em alguns casos há plena compatibilidade entre pacotes, pré-compilados para distribuições distintas, como RHEL para CENTOS e vice-versa.

Comando rpm

Para que seja possível instalar um pacote, é necessário um software que conheça o tipo de pacote, confira as dependências e aplique as regras de instalação. Estes softwares são o rpm para pacotes .rpm e o dkpg para pacotes .deb.

Só que estes programas dispõem somente de recursos básicos, não fazendo coisas como downloads e instalação automática dos pacotes marcados como dependências. É aí que entram os softwares de gerenciamento de pacotes, como o conhecido apt ou aptitude do Debian, o apt-rpm do Conectiva Linux, o urpmi do Mandriva Linux e o yum do CentOS, Red Hat e Fedora.

No Linux é possível a utilização do gerenciador de pacotes diferente dos padronizados na distribuição, exemplo Fedora utilizando apt, entretanto exigirá uma maior dedicação do utilizador, e não é o escopo deste documento.

Serão citadas somente as opções mais utilizadas, o comando rpm tem diversas opções, que podem ser, posteriormente se houver interesse, analisadas com man rpm.

Instalação de um pacote:

# rpm -i pacote
ou
# rpm -install pacote

Para uma melhor visualização do que está acontecendo, em geral costuma-se usar também as opções -v (verbose, que imprime detalhes da execução) e -h (para imprimir "#" e apresentar a evolução de progressão).

O comando ficaria então:

# rpm -ivh pacote

Instalação de um pacote e dependências ou de vários pacotes ao mesmo tempo:

# rpm -ivh pacote1 dependência1 dependência2 ... pacote2

Caso o programa já esteja instalado e o pacote que se quer instalar é de uma versão mais recente, deve-se utilizar a opção -U para atualizar (update) o pacote, que faz a remoção da versão antiga e a instalação da versão recente em um único passo.

Ignorando as dependências ou de um ou de vários pacotes ao mesmo tempo:

# rpm -ivh --nodeps pacote1 pacote2

Atualização de pacote:

# rpm -U pacote
ou
# rpm -upgrade pacote
ou
# rpm -Uvh pacote (para mais detalhes de execução)

Instalação/atualização forçada de pacotes:

Embora a opção -force possa ser usada juntamente com a opção -i ou -U para instalação ou atualização forçada de pacotes, isto é, sem que todas as dependências tenham sido satisfeitas, NÃO É RECOMENDADA, pois o programa terá grandes chances de não funcionar, além de fazer com que o rpm ou qualquer outra ferramenta de gerenciamento de pacotes tenda a remover o programa por causa das dependências quebradas.

Não tente usar gerenciadores de pacotes feitos para outras distribuições diferentes da que está em uso, pois geralmente causam estes problemas quando mal configuradas.

Remoção de pacotes:

# rpm -e pacote
ou
# rpm -e pacote1 pacote2 ... pacoteN

Consultas a pacotes:

# rpm -qi pacote

Dá informações do pacote caso já esteja instalado.

# rpm -qpi pacote-versão.i586.rpm

Dá informações sobre o pacote contido em pacote-versão.i586.rpm, que não precisa estar instalado.

# rpm -qa

Lista TODOS os pacotes instalados no sistema.

# rpm -qa | grep palavra

Exibe o pacote filtrado com a palavra de busca com o grep.

Compilação de pacotes fonte para a geração de pacotes binários

Embora nem todo mundo precise recompilar os pacotes fonte .src.rpm, às vezes isso pode ser útil para aproveitar pacotes fonte de outras distribuições ou de versões mais recentes ou experimentais (cooker) da distribuição Linux em uso. Isso pode ser feito com:

# rpmbuild -rebuild pacote.src.rpm

Este comando instala o pacote fonte e recompila-o para gerar o(s) pacote(s) binário(s) derivados.

# rpm -ivh pacote.src.rpm

Este comando instala o pacote a partir do fonte, o compilando especificamente para a arquitetura do processador, o que otimiza o desempenho do programa para o hardware proposto, entretanto se gerencia do gerenciador de pacotes, ou seja, isento de verificações de atualização e correções.

# rpmbuild -bb arquivospecdopacote.spec

Este comando gera um novo rpm para ser instalado, como apresentado nos tópicos anteriores.

Para compilar e gerar o(s) pacote(s) binário(s) derivados conforme instruções contidas no arquivospecdopacote.spec, se faz necessário colocar os arquivos binários em diretórios específicos. no Red Hat, Fedora e CentOS coloca-os em /usr/src/redhat/SOURCES/; no Mandriva coloca-os em /usr/src/RPM/SPECS/ ; nas outras distribuições RedHat-like não foi pesquisado, podendo conseguir estas informações com o rpmbuild da distribuição.

Desfecho

Atualizações deste artigo podem ser encontradas em: Brito: Instalando pacotes utilizando RPM

Referências:
Outras dicas deste autor

Convertendo formato de pacotes com alien

Gerenciando histórico de comandos no GNU/Linux

atrpms.repo para yum no rhel4

Instalando o plugin Java6 da Sun no Ubuntu Linux

Utilizando o comando rsync

Leitura recomendada

Plank Dock no LMDE 2

Dividindo arquivos grandes em vários disquetes

Be Linux (vídeo Youtube)

The Chakra Project

NumLock na inicialização

  

Comentários
[1] Comentário enviado por pinduvoz em 28/09/2011 - 05:30h

Uma coisa engraçada: é possível baixar os pacotes do LibreOffice em rpm e instalar diretamente no Slackware pelo próprio rpm. Testem e confirmem.

[2] Comentário enviado por rogeriocon em 06/02/2012 - 11:33h

Brito, bom dia.
Estou tentando instalar o programa wput no centos 5.7 usando um pacote .rpm, no seu post você indica para quando há dependências, que se use:
rpm -ivh pacoterpm dependencia
Porém quando tento usar isso ele me retorna um erro dizendo que não pode abrir o pacote ou arquivo, ou se eu tento instalar primeiro o rpm da dependencia, o sistema me diz que eu já tenho uma versão mais atualizada instalada. Tentei usar o pacote dessa nova versão na dependencia, porém ele me retorna o mesmo erro.
Saberia me dizer aonde estou errando?
Obrigado.
Rogério

[3] Comentário enviado por DanielDutra em 16/07/2016 - 17:56h

Obrigado companheiro pelo artigo.

Companheiros me surgiu uma duvida. O proprio RPM é um comando que instala pacotes RPM? Eu uso o openSUSE e pensava que no opensuse o unico gerenciador depacotes era o zypper. Isso significa que no proprio Opensuse eu posso utilizar o comando rpm alem do zypper para instalar pacotes rpm?

Desde já agradeço.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts