você está aqui: Home  → Arquivo de Mensagens

Gnu Linux Red Hat - Gerenciamento de Software com RPM

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 22 de Janeiro de 2006

O gerenciamento de software em sistemas Red Hat Linux é feito por meio de uma ferramenta denominada RPM, iniciais de Red Hat Package Manager. Esta ferramenta permite a instalação, atualização e remoção de pacotes de software, simplificando enormemente esta tarefa comparativamente ao método tradicional, que exigia que todos os pacotes fossem compilados e instalados, em um processo difícil e propenso a falhas, com um grande consumo de tempo.

Com o RPM a instalação de software se torna extremamente simples, requerendo, na maioria dos casos, apenas a execução de um comando de uma linha. Além da facilidade de uso em si, o banco de dados RPM permite a fácil duplicação de sistemas com exatamente a mesma configuração de software.

1. Utilização RPM

O RPM possui cinco modos básicos de operação: instalação, desinstalação, atualização, consulta e verificação. A seguir passaremos a realizar uma análise de cada um destes modos de operação.

1.1. Instalação

Softwares distribuídos no formato rpm geralmente possuem a terminação .rpm, como por exemplo gnosamba-0.3.3-1.i386.rpm. Esta representação contém o nome do software (gnosamba), a versão (0.3.3), número do release (1) e a arquitetura (i386). A instalação de um software requer nada mais do que a execução, como superusuário root do comando:

  # rpm -i gnosamba-0.3.3-1.i386.rpm

1.2. Desinstalação

A remoção de um pacote é tão simples quanto sua instalação:

  # rpm -e netsaint-plugins

Na remoção de um software basta especificar-se o seu nome. Não é necessário indicar o nome completo (netsaint-plugins-1.2.4-1.i386.rpm).

Na desinstalação, caso a remoção de um pacote implique em problemas para o funcionamento de outros softwares pela eliminação de componentes compartilhados, teremos o seguinte erro:

  # rpm -e kdelibs-1.1.2-9
  error: removing these packages would break dependencies:
  libjscript.so.2 is needed by kdebase-1.1.2-11
  ...
  

Caso realmente se deseje a remoção do software, ignorando todos e quaisquer problemas passíveis de serem gerados, especificar a opção --nodeps na linha de comando:

  # rpm -e --nodeps kdelibs-1.1.2-9

1.3. Atualização

A atualização de um software também é bastante simples:

  # rpm -Uvh gnome-audio-1.0.0-7.noarch.rpm
  gnome-audio < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>#

O que na verdade ocorre quando se faz a atualização de um pacote é que a versão anterior é removida e substituída pela nova. A opção -U pode ser usada com segurança mesmo quando o software não se encontra instalado em seu sistema.

1.4. Consultas

O banco de dados RPM nos permite consultar a lista de softwares instalados. Isto é feito através do comando rpm -q. Por exemplo, se quisermos verificar se o software gnosamba está instalado, basta emitir o comando:

  % rpm -q gnosamba
  gnosamba-0.3.3-1
  

As consultas podem também ser feitas de um modo mais genérico. Caso não seja conhecido o nome correto do software, pode-se proceder como abaixo:

  % rpm -qa | grep samba
  samba-2.0.5a-1
  gnosamba-0.3.3-1
  samba-client-2.0.5a-1

Desta forma, conhecendo-se apenas uma parte do nome de um pacote, podemosobter a informação desejada conjugando o uso do programa rpm com o comando grep.

O rpm nos permite determinar também a qual pacote pertence determinadoarquivo. Por exemplo, se desejarmos determinar a qual pacote pertence o arquivo smbd, basta emitir o comando:

  % rpm -qf /usr/sbin/nmbd
  samba-2.0.5a-1

Importante, é necessário que se especifique o caminho completo até o arquivo. Caso emitamos o comando:

  % rpm -qf nmbd
  file nmbd: Arquivo ou diretório não encontrado

será emitida uma mensagem de erro mesmo existindo o arquivo. 2.5 Verificação

A verificação de um pacote consiste em comparar a informação entreos arquivos que o compõem e aqueles que efetivamente se encontram no sistema. Esta comparação consiste em verificar, entre outras coisas, o tamanho, soma MD5, permissões, tipo de arquivo, a quem o arquivo deve pertencer (dono e grupo).

O comando rpm -V verifica um pacote. Qualquer forma de verificação já abordada nos itens anteriores é válida. Por exemplo:

  % rpm -V gnosamba

Se tudo estiver correto nada é impresso na tela. Caso algum arquivo estiver faltando, será impressa uma mensagem de erro informando a inconsistência encontrada:

  # rpm -V gnosamba
  missing /usr/doc/gnosamba-0.3.3/TODO

Neste caso o arquivo TODO, integrante do pacote gnosamba, está faltando.

Se o seu sistema começar a se comportar misteriosamente, talvez valha a pena fazer uma verificação global:

  rpm -Va > verificacao-dependencias

Como a saída deste comando em um sistema com problemas pode gerar muitas linhas, é conveniente redirecionar o resultado para um arquivo para verificação posterior.

2. Problemas

2.1. Softwares Previamente Instalados

Se o software já se encontra instalado em seu sistema, temos a seguinte situação:

  # rpm -ivh gnosamba-0.3.3-1.i386.rpm
  package gnosamba-0.3.3-1 is already installed

No exemplo acima, foi detectado que o software já se encontra instalado e o processamento é interrompido. É possível entretanto que se force a instalação, especificando ao RPM que ignore eventuais erros:

  # rpm -ivh --replacepkgs gnosamba-0.3.3-1.i386.rpm
  gnosamba < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>##

O comando emitido gerou uma saída contendo o nome do software seguida de marcas indicativas do progresso da instalação.

2.2. Arquivos Conflitantes

Caso se tente instalar um pacote que contenha arquivos que já tenham sido instalados previamente por outros softwares, será gerada a seguinte mensagem de erro:

  # rpm -ivh WebMaker-0.8.5-4.i386.rpm
  file /usr/share/icons/mini/html.xpm from install of
  WebMaker-0.8.5-4
  conflicts with file from package kdebase-1.1.2-11

Para fazer com que tal erro seja ignorado, utilizar a diretiva --replacefiles:

  # rpm -ivh --replacefiles WebMaker-0.8.5-4.i386.rpm
  WebMaker < A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>< A NAME="note" HREF="#textnote">< SUP>

2.3. Dependências Não Resolvidas

Muitos softwares dependem, para seu correto funcionamento, de funções oferecidas por outros softwares. Desta forma, a instalação só é bem sucedida se todos os elementos necessários estiverem presentes no sistema.

  # rpm -i netsaint-0.0.4-1.i386.rpm
  error: failed dependencies:
  netsaint-plugins is needed by netsaint-0.0.4-1

Para resolver estes problemas é necessário que os pré-requisitos apropriados sejam instalados. É também possível se forçar a instalação, o que certamente não é aconselhável. Na quase totalidade dos casos, ignorar as dependências irá resultar em um software instalado que não funcionará. Para forçar uma instalação, sem respeitar os pré-requisitos, utilizar a opção --nodeps na linha de comando.

3. Adequação de Softwares em Sistemas Linux

O processo de instalação de Linux RedHat pode ser realizado de forma quase que automatizada através da seleção de uma classe de equipamento (servidor, estação de trabalho ou personalizada). O resultado final é que frequentemente muito mais softwares são instalados do que realmente necessitamos, ocupando espaço em disco desnecessariamente. A facilidade de instalação tem como efeito colateral um sistema mais inchado do que a necessidade real.

O RPM pode nos auxiliar na adequação da configuração de software do sistema às reais necessidades. Descrevemos a seguir um procedimento simples que nos permite realizar esta tarefa de forma rápida e simples.

4. Criação de uma listagem de todos os softwares instalados:

  rpm -q -a > listagem-software

Após criada a listagem, examinar com cuidado tudo que está instalado e remover o que não for necessário. Uma recomendação, caso algum pacote seja desconhecido é melhor adiar sua desinstalação até que se possam obter mais informações sobre o mesmo e determinar o real impacto de sua remoção de seu sistema. Para realizar a remoção,edite o arquivo criado no passo anterior e preceda o nome de cada pacote a ser removida com rpm -e. Na listagem abaixo eu quero remover os pacotes AfterStep e anonftp:

  basesystem-4.0-6cl
  ldconfig-1.9.9-5cl
  mktemp-1.5-2cl
  rpm -e AfterStep-APPS-990329-3cl
  rpm -e anonftp-2.8-2cl

Após analisado todo o arquivo basta selecionar, com o comando grep, as linhas que contenham a string rpm -e, e em seguida, com o programa sh, o arquivo resultante:

  # grep "rpm -e" listagem-software > remove-list
  # sh remove-list

Caso não haja algum programa de quebra de dependências, os softwares serão removidos. Caso haja algum problema, consultar cuidadosamente a documentação dos produtos listados e proceder como for adequado.

5. Bibliografia e Referências Adicionais

Este documento foi baseado em grande parte no livro Red Hat Linux 5.2: The Official Red Hat Linux Installation Guide. Este manual ou versão mais recente está disponível em formato eletrônico no site da empresa Red Hat. Adicionalmente foi consultado também o livro Linux Newbie Administrator Guide, por Stan, Peter, Marie e Barbara Klimas.



 

 

Veja a relação completa dos artigos de Rubens Queiroz de Almeida

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script