OBS: Este artigo foi originalmente escrito por Douglas Tabajara e Manoel Pinho para o Portal de Usuários Brasileiros do
Mandriva Linux,
http://www.mandrivabrasil.org.
A maioria das distribuições
Linux trabalha com o conceito de pacotes binários para a instalação padronizada de softwares, sendo os mais comuns o deb (usado no Debian e derivados) e o rpm (adotado pelo Red Hat e distribuições derivadas como é o caso do Mandriva Linux, Fedora, SuSE e Conectiva). Um pacote binário de um programa nada mais é do que alguns arquivos, bibliotecas e documentação do programa, scripts para que eles sejam instalados corretamente e uma relação de quais outros pacotes ele depende.
No Mandriva, os pacotes binários (compilados) possuem nomes *mdk.i586.rpm (para PCs com processadores de 32 bits), *mdk.x86_64.rpm (para PCs com processadores de 64 bits) ou ainda *mdk.noarch.rpm (independentes de arquitetura de processador, geralmente contendo documentação ou programas feitos em linguagens interpretadas). Os pacotes fonte, que podem ser recompilados para gerar os pacotes binários, possuem nomes *mdk.src.rpm. Estes últimos 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 (arquivos contendo diferenças no código-fonte) necessários para a compilação ou adaptação do programa à distribuição.
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 software 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 do Debian, o apt-rpm do Conectiva Linux, o urpmi do Mandriva Linux e o yum do Red Hat e Fedora.
O comando rpm tem diversas opções (veja com man rpm) e vamos citar somente as opções mais utilizadas:
Instalação de um pacote
rpm -i pacote ou
rpm -install pacote
OBS: Para uma melhor visualização do que está acontecendo, em geral costuma-se usar também as opções -v (verbose, que imprime detalhes do que está sendo feito) e -h (para imprimir hashes "#" e dar uma idéia de percentagem 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 ...
OBS: 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 mais nova em um único passo.
Atualização de pacote
rpm -U pacote ou
rpm -upgrade pacote
rpm -Uvh pacote (para mais detalhes do que está sendo feito)
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 urpmi e qualquer outra ferramenta de gerenciamento de pacotes tenda a remover o programa por causa das dependências quebradas. Não tente usar rpms feitos para outras distribuições, que geralmente causam estes problemas.
Remoção de pacotes
rpm -e pacote
rpm -e pacote1 pacote2 ... pacoteN
Consultas a pacotes
rpm -qi pacote
Dá informações do pacote caso já esteja instalado.
rpm -qpi pacote-versãomdk.i586.rpm
Dá informações sobre o pacote contido em pacote-versãomdk.i586.rpm, que não precisa estar instalado.
rpm -qa
Lista TODOS os pacotes instalados no sistema. Produz uma listagem enorme, que na maioria das vezes é filtrada com o grep (rpm -qa | grep palavra).
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) do Mandriva Linux. Isso pode ser feito com:
rpmbuild -rebuild pacote.src.rpm
(que vai instalar o pacote fonte e recompilá-lo para gerar o(s) pacote(s) binário(s) derivados)
ou
rpm -ivh pacote.src.rpm (para instalar o pacote)
rpmbuild -bb arquivospecdopacote.spec
(para compilar e gerar o(s) pacote(s) binário(s) derivados conforme instruções contidas no arquivospecdopacote.spec, que é colocado em /usr/src/RPM/SPECS/ no Mandriva Linux quando o pacote fonte foi instalado).
Cabe ressaltar que praticamente não é preciso usar o rpm diretamente no Mandriva Linux pois o urpmi e as ferramentas gráficas de gerenciamento de software, que serão mostradas a seguir, cumprem as principais funções do rpm com diversas vantagens.