Ferramentas do usuário

Ferramentas do site


infra-estrutura:linux:gerenciamento_pacotes_rpm

Gerenciamento de pacotes RPM

Instalar pacote RPM

rpm -ivh pacote.rpm

Atualizar pacote RPM

rpm -Uvh pacote.rpm

Remoção de pacotes de RPM

Para remover um pacote e possível utilizar o yum ou a opção -e do rpm. Para executar um teste antes de remover

 rpm -e --test minicom

Consultando pacotes RPM

Para consulta de pacotes RPM utilize

rpm -q minicom
rpm -qi minicom

Exibindo arquivos dentro do arquivo RPM

rpm -ql minicom

Consulta todos os pacotes instalados

rpm -qa 

Consulta as dependencias de um pacote instalado

rpm -qR minicom

Visualizar arquivos de configuração de um determinado pacote

rpm -qc <nome do pacote>

Checando integridade do pacote RPM

[root@echidna ~]# rpm -vK vim-enhanced-7.2.411-1.fc12.x86_64.rpm
vim-enhanced-7.2.411-1.fc12.x86_64.rpm:
    Header V3 RSA/SHA256 signature: OK, key ID 57bbccba
    Header SHA1 digest: OK (f9a199545a515f7ff0716729768b41eb68fe29a8)
    V3 RSA/SHA256 signature: OK, key ID 57bbccba
    MD5 digest: OK (d4045f1f72d48073e3f401ee9d1f71cf)
    

Verificação de um pacote instalado

[ian@echidna ~]$ rpm -V vim-common

Remover pacote RPM não verificando dependências

Normalmente, o sistema de gerenciamento de pacote mantém seus pacotes em ordem. No entanto, se você excluir algum arquivo que seja uma parte importante de um pacote—e reinstalar o pacote sem removê-lo, isso não corrigirá o problema—então é preciso remover o pacote antes de instalá-lo novamente. Neste caso, muito provavelmente você irá querer excluir a cópia existente e reinstalá-lo, sem a necessidade de desinstalar e reinstalar todos os pacotes que dependem dele. Para isso, é possível usar a opção –nodeps do comando de rpm para evitar verificação de dependência ao remover um pacote. A listagem 24 mostra como isso funciona se você removeu acidentalmente o arquivo /usr/bin/xxd file, que é parte do pacote vim-common, como fizemos anteriormente.

	
[root@echidna ~]# rm /usr/bin/xxd
rm: remove regular file `/usr/bin/xxd'? y
[root@echidna ~]# # Oops! we needed that file
[root@echidna ~]# rpm -Fvh vim-common-7.2.411-1.fc12.x86_64.rpm 
[root@echidna ~]# ls /usr/bin/xxd
ls: cannot access /usr/bin/xxd: No such file or directory
[root@echidna ~]# # Oh! Freshening the package didn't replace the missing file
[root@echidna ~]# rpm -e vim-common
error: Failed dependencies:
    vim-common = 2:7.2.411-1.fc12 is needed by (installed) vim-enhanced-2:7.2.411-1.f
c12.x86_64
[root@echidna ~]# # Can't remove vim-common because vim-enhanced needs it
[root@echidna ~]# rpm -e --nodeps vim-common
[root@echidna ~]# # Bypassing the dependency check allowed removal
[root@echidna ~]# rpm -Uvh vim-common-7.2.411-1.fc12.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:vim-common             ########################################### [100%]
[root@echidna ~]# # Update (or install) vim-common again
[root@echidna ~]# ls /usr/bin/xxd
/usr/bin/xxd
[root@echidna ~]# # And /usr/bin/xxd is back

Extraindo conteúdo do pacote RPM

rpm2cpio ../gcl-selinux*.rpm | cpio -idv

Assinatura de pacotes RPM

Diretório de localização das assinaturas do RPM /etc/pki/rpm-gpg/ :

# ls /etc/pki/rpm-gpg/
RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Debug-7  RPM-GPG-KEY-CentOS-Testing-7

Any of the keys whether they are official CentOS 7 archive signing keys or other unofficial archive signing keys found at this location can be imported into the system by using rpm command. For example the following linux command will import RPM-GPG-KEY-CentOS- signing key:

# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
# rpm --import /etc/pki/rpm-gpg/*

Para listar todas as chaves importadas:

# rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
gpg-pubkey-f4a80eb5-53a7ff4b    gpg(CentOS-7 Key (CentOS 7 Official Signing Key) )
gpg-pubkey-b6792c39-53c4fbdd    gpg(CentOS-7 Debug (CentOS-7 Debuginfo RPMS) )
gpg-pubkey-8fae34bd-538f1e51    gpg(CentOS-7 Testing (CentOS 7 Testing content) )

Para remover uma chave do “gpg(CentOS-7 Debug (CentOS-7 Debuginfo RPMS) )”

# rpm -e gpg-pubkey-b6792c39-53c4fbdd

Verificando se a chave foi removida

# rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'
gpg-pubkey-f4a80eb5-53a7ff4b    gpg(CentOS-7 Key (CentOS 7 Official Signing Key) )
gpg-pubkey-8fae34bd-538f1e51    gpg(CentOS-7 Testing (CentOS 7 Testing content) )

Validação da assinatura de um pacote

rpm - - checksig rp-pppoe-3.10-8.el6.i686.rpm
# rpm -K rp-pppoe-3.10-8.el6.i686.rpm

Banco de dados do RPM

Backup do banco de dados RPM

Fazendo o backup do banco de dados RPM que esta no diretório /var/lib/rpm.

# mkdir /backups/
# tar -zcvf /backups/rpmdb-$(date +"%d%m%Y").tar.gz  /var/lib/rpm

Verificando integridade do banco de dados RPM

# /usr/lib/rpm/rpmdb_verify /var/lib/rpm/Packages

Realizar dump e carregar o banco de dados RPM

# cd /var/lib/rpm/
# mv Packages Packages.back
# /usr/lib/rpm/rpmdb_dump Packages.back | /usr/lib/rpm/rpmdb_load Packages
# /usr/lib/rpm/rpmdb_verify Packages

Reconstruir banco de dados RPM

# rpm -vv --rebuilddb

DCRPM

O comando dcrpm (detect and correct rpm) é utilizado para identificar e corrigir erros com a base de dados RPM corrompida.

# git clone https://github.com/facebookincubator/dcrpm.git
# cd dcrpm
# python setup.py install
# dcrpm