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: