====== 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