Table of Contents

RPM (RedHat Package Manager)

Base de dados RPM

Atrás do gerenciador de pacotes está o banco de dados RPM. Ele consiste em uma lista duplamente ligada que contém todas as informações de todos os RPM instalados.

O banco de dados lista todos os arquivos que são criados ou modificados quando um usuário instala um programa e facilita a remoção destes mesmos arquivos. Se o banco de dados fica corrompido (o que acontece facilmente se o cliente de RPM é fechado subitamente), as ligações duplas garantem que eles possam ser reconstruídos sem nenhum problema.

Em computadores com o sistema operacional RedHat instalado, este banco de dados encontra-se em /var/lib/rpm.

Para saber a versão do utilitário rpm:

# rpm --version

Instalando um pacote:

# rpm -ivh (pacote.rpm)

Forçando a instalação de um pacote:

# rpm -ivh --force (pacote.rpm)

Para instalar um pacote em outro diretório, por exemplo a instalação do editor de texto vim sendo instalado no diretório /opt:

# rpm -ivh --prefix /opt vim.rpm

Para fazer um downgrade de um pacote:

# rpm -U --oldpackage (pacote.rpm)

Para exibir as últimas atualizações:

# rpm -q --last

Para exibir as últimas atualizações do programa mysqld:

# rpm -q --last | sort | grep mysqld

Opções de consultas

Para saber quantos pacotes estão instalado no sistema, apenas o total de pacotes:

# rpm -qa | wc -l

Para listar todos os pacotes instalados no sistemas e ordenados:

# rpm -qa | sort

Para listar usando tags todos os pacotes instalados e ordenados:

# rpm -qa --qf "%{name}\n" | sort

Para saber de qual pacote o arquivo ou comando faz parte. É necessário informar o caminho, o qual conseguimos com o comando which seguido do nome do programa ou pacote.

Exemplo para o comando locate:

# which locate
/usr/bin/locate

Agora a consulta;

# rpm -qf /usr/bin/locate

Usando subshell:

# rpm -qf $(which locate)

Para ter uma lista de todos os arquivos do pacote ao qual o comando mail pertence:

# rpm -ql $(rpm -qf $(which mail))

Para saber usando tags a descrição de um pacote instalado:

# rpm -qa --qf%{DESCRIPTION}\n” httpd

Para saber usando tags todos os grupos de pacotes presentes no sistema ordenados e numerados:

# rpm -qa --qf "%{GROUP}\n" | sort -u | nl

Para saber usando tags quais são os comandos/utilitários pertencente ao grupo no sistema: Nesse exemplo ao grupo internet.

# rpm -qa --qf "%{GROUP}: %{NAME}\n" | sort -uu | grep -i "Internet" | nl

Para saber as tags disponível que podemos usar com o comando rpm:

# rpm --querytags | less

Para mostrar os pacotes empacotados pela distribuição fedora;

# rpm -qa --queryformat '%{VENDOR} %{NAME}\n' | grep -i "Fedora" | sort

Exemplos de tags usando o comando rpm:

# rpm -qa --qf 'O pacote %{NAME} eh licenciado sobre a licença %{LICENSE}\n'
# rpm -qa --qf 'O tamanho do pacote %{NAME} eh ${SIZE} bytes\n'
# rpm -qa --qf 'Mais informações sobre o pacote %{NAME} veja %{URL}\n'
# rpm -qa --qf 'O pacote %{NAME} tem a arquitetura %{ARCH}\n'
# rpm -qa --qf 'O pacote %{NAME} tem como sumario %{SUMARY}\n'

Para obter todas as informações de um pacote com cabeçalhos e locais dos arquivos instalados:

# rpm -qfil $(which vim)

Opção de seleção de informação

Para saber as informações sobre um pacote:

# rpm -qpi (pacote.rpm)

Para saber quais são os arquivos de documentação de um pacote:

# rpm -qpd (pacote.rpm)

Para saber quais são os arquivos de configuração de um pacote:

# rpm -qpc (pacote.rpm)

Para saber quais são os arquivos de um pacote;

# rpm -qpl (pacote.rpm)

Para listar os pacotes que um pacote depente:

# rpm -qpR (pacote.rpm)

Opções de verificação

Para verificar todos os arquivos no sistema de arquivos (processo demorado):

# rpm --verify -a 

ou

# rpm -va 

ou ainda

# rpm -Va

Para mostrar o nome do pacote responsável por ter instalado o arquivo /etc/exports:

# rpm ­-qf /etc/exports

Para verificar o estado de um pacote não instalado:

# rpm -V (pacote.rpm)

Para verificar o estado de um pacote instalado:

# rpm -V httpd

Para verificar dependência em um pacote não instalado:

# rpm -Va (pacote.rpm)

Para verificar todos os pacotes de um grupo qualquer;

# rpm -V -g Applications/Multimedia

Opções de validação de assinatura

Para verificar se estão faltando ou não as chaves criptográficas em um pacote;

# rpm -K (pacote.rpm)

Para verificar a situação das chaves criptográficas de um pacote:

# rpm -vK (pacote.rpm)

Para importar as chaves de repositórios, para mais segurança em pacotes:

# rpm --import (url)

Opção de desinstalação

Desinstalando um pacote:

# rpm -e sshd

Forçando a desinstalação de um pacote:

# rpm -e --nodeps sshd

Removendo um pacote sem dó:

# rpm -e 'rpm -qa | grep httpd'

Outra opção:

# rpm -e $(rpm -qa | grep httpd)

Opção de reconstrução do banco de dados:

# rpm -v --rebuilddb

rpm2cpio

O comando rpm2cpio converte o pacote RPM para um arquivo CPIO.

Para visualizar o conteúdo do pacote .rpm com rpm2cpio:

# rpm2cpio pacote.rpm | cpio -­t

Para converter o pacote .rpm para cpio execute o seguinte comando:

# rpm2cpio pacote.rpm
# rpm2cpio < pacote.rpm