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