15 esempi pratici del comando RPM

By | ottobre 15, 2016

RPM (RedHat Package Manager) è il gestore di default dei pacchetti nelle distribuzioni GNU\Linux RedHat e derivate, come ad esmepio CentOS o Fedora. Questo tool consente agli amministratori dei sistemi di installare, rimuovere, aggiornare, verificare e gestire i pacchetti software di sistema. Saper gestire al meglio i pacchetti software è uno dei fondamentali per conseguire la certificazione RHCSA. In questo articolo vi propongo 15 esempi pratici del comando rpm che potrebbero risultare utili per la gestione del vostro sistema.

Dove scaricare file RPM

Possiamo scaricare i file RPM in siti non ufficiali. Ve ne elenco 3 che, oltre ad essere i più famosi, uso spesso:

  1. FreshRpms
  2. Rpm Pbone
  3. RpmFind

1. Installare un pacchetto RPM

Per installare un pacchetto .rpm appena scaricato o appena creato utilizzare il comando:

# rpm -ivh nome_pacchetto.rpm

nell’esempio il pacchetto perl-tests:

[root@centos7 ~]# rpm -ivh perl-tests-5.16.3-285.el7.x86_64.rpm
 Preparing...                       ################################# [100%]
 Updating / installing...
 1:perl-tests-4:5.16.3-285.el7      ################################# [100%]

2. Verificare le dipendenze necessarie del pacchetto prima di installarlo

Un pacchetto .rpm solitamente ha bisogno di alcune librerie o pacchetti per essere installato correttamente. Per verificare cosa abbiamo bisogno utilizziamo il comando:

# rpm -qpR nome_pacchetto.rpm

ecco un esempio:

[root@centos7 ~]# rpm -qpR perl-tests-5.16.3-285.el7.x86_64.rpm
 perl(:MODULE_COMPAT_5.16.3)
 perl-core
 rpmlib(FileDigests) <= 4.6.0-1
 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
 rpmlib(CompressedFileNames) <= 3.0.4-1
 rpmlib(PayloadIsXz) <= 5.2-1

3. Verificare se un pacchetto è installato

Come detto nel punto precedente, ogni pacchetto ha le sue dipendenze. Per verificare se un pacchetto è già installato sul nostro sistema utilizzare il comando:

# rpm -q nome_pacchetto

per l’esempio precedente:

[root@centos7 ~]# rpm -q perl-core
 perl-core-5.16.3-283.el7.x86_64

in questo caso il pacchetto perl-core è presente nel nostro sistema, in caso contrario l’output sarebbe nullo.

4. Eliminare un pacchetto

Per eliminare un pacchetto installato utilizzare l’opzione “-e” (erase):

# rpm -ev nome_pacchetto

esempio:

[root@centos7 ~]# rpm -ev perl-tests
 Preparing packages...
 perl-tests-4:5.16.3-285.el7.x86_64

5. Eliminare un pacchetto senza dipendenze

Può risultare utile anche questo comando, che permette di forzare l’eliminazione di un pacchetto anche se richiesto da altre applicazioni. Ovviamente la rimozione può causare danni al funzionamenti di altre applicazioni. Il comando da utilizzare è:

# rpm -ev --nodeps nome_pacchetto

6. Effettuare un test di installazione prima di installare un pacchetto

Può essere utile, prima di installare un pacchetto, effettuare una simulazione di installazione, per verificare se ci sono problemi. Per fare questo bisogna utilizzare il parametro “–test“, quindi:

# rpm -ivh nome_pacchetto --test

esempio:

[root@centos7 ~]# rpm -ivh perl-tests-5.16.3-285.el7.x86_64.rpm --test
Preparing...                          ################################# [100%]

in questo caso tutto è andato bene. Mentre se abbiamo problemi tipo dipendenze insoddisfatte, l’output sarà così:

[root@centos7 ~]# rpm -ivh perl-tests-5.16.3-285.el7.x86_64.rpm --test
 error: Failed dependencies:
 perl-core is needed by perl-tests-4:5.16.3-285.el7.x86_64

7. Verificare la firma di un pacchetto

Prima di installare un pacchetto è sempre consigliato verificare l’integrità del pacchetto e la firma. Questo eliminerà ogni dubbio sulla provenienza del pacchetto. Il comando da utilizzare è:

# rpm ---checksig nome_pacchetto

esempio di output:

[root@centos7 ~]# rpm --checksig perl-tests-5.16.3-285.el7.x86_64.rpm 
perl-tests-5.16.3-285.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

8. Effettuare il rebuild del database corrotto di rpm

Può succedere, come a volte sento da amici e colleghi, che il DB dei pacchetti viene corrotto per qualche motivo. Di seguito i comandi per effettuare il rebuild:

# cd /var/lib/rpm
# rm -f __db.*
# rpm --rebuilddb
# rpmdb --rebuilddb

In questo modo dovremmo riavere i file __db.01 ecc corretti.

9. Visualizzare tutte le Chiavi GPG importate

Per visualizzare tutte le Chiavi GPG presenti nel sistema utilizzare il comando:

# rpm -qa gpg-pub*

esempio:

[root@centos7 ~]# rpm -qa gpg-pub*
gpg-pubkey-f4a80eb5-53a7ff4b

10. Importare una Chiave GPG

Per importare una Chiave GPG nel nostro sistema utilizzare il comando:

# rpm --import /path/key/RPM-GPG-KEY-NAME

esempio:

[root@centos7 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

11. Reperire informazioni sulla documentazione di un pacchetto installato

Se vogliamo visualizzare dove risiede la documentazione di un binario installato sul nostro sistema, utilizzare il comando:

# rpm -qdf /path/binario

esempio:

[root@centos7 ~]# rpm -qdf /usr/sbin/ifconfig
/usr/share/doc/net-tools-2.0/COPYING
/usr/share/man/de/man5/ethers.5.gz
/usr/share/man/de/man8/arp.8.gz
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/de/man8/netstat.8.gz
/usr/share/man/de/man8/plipconfig.8.gz
/usr/share/man/de/man8/route.8.gz
/usr/share/man/de/man8/slattach.8.gz
/usr/share/man/fr/man5/ethers.5.gz
...

12. Reperire informazioni su un pacchetto installato

Se vogliamo informazioni dettagliate su un pacchetto installato nel sistema utilizzare il comando:

# rpm -qi nome_pacchetto

esempio:

[root@centos7 ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.17.20131004git.el7
Architecture: x86_64
Install Date: Tue 17 Mar 2015 12:25:13 PM CET
Group       : System Environment/Base
Size        : 938653
License     : GPLv2+
Signature   : RSA/SHA256, Fri 04 Jul 2014 05:56:18 AM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.17.20131004git.el7.src.rpm
Build Date  : Tue 10 Jun 2014 06:15:04 AM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

13. Reperire informazioni su un pacchetto rpm prima di installarlo

Come abbiamo visto nella guida “creare un paccheto RPM“, all’interno del file .spec vi sono inserite tutte le informazioni relative al software. Per visualizzare tali informazioni su un qualsiasi pacchetto .rpm utilizzare il comando:

# rpm -qip nome_pacchetto.rpm

esempio:

[root@centos7 ~]# rpm -qip perl-tests-5.16.3-285.el7.x86_64.rpm 
Name        : perl-tests
Epoch       : 4
Version     : 5.16.3
Release     : 285.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Development/Languages
Size        : 3431801
License     : GPL+ or Artistic
Signature   : RSA/SHA256, Sat 14 Mar 2015 09:28:37 AM CET, Key ID 24c6a8a7f4a80eb5
Source RPM  : perl-5.16.3-285.el7.src.rpm
Build Date  : Fri 06 Mar 2015 06:10:00 AM CET
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.perl.org/
Summary     : The Perl test suite
Description :
This package contains the test suite included with Perl 5.16.3.

Install this if you want to test your Perl installation (binary and core
modules).

14.  Vedere a quale pacchetto corrisponde un file

Potrebbe risultare molto utile capire a quale pacchetto appartiene un determinato file di configurazione. Questo è possibile utilizzando il comando:

# rpm -qf /path/file_conf

esempio:

[root@centos7 ~]# rpm -qf /etc/httpd/conf/httpd.conf 
httpd-2.4.6-19.el7.centos.x86_64

15. Aggiornare un pacchetto RPM

Per aggiornare un pacchetto RPM utilizzare il comando:

# rpm -U nome_pacchetto.rpm

esempio:

[root@centos7 ~]# rpm -Uvh perl-tests-5.16.3-285.el7.x86_64.rpm
 Preparing...                       ################################# [100%]
 Updating / installing...
 1:perl-tests-4:5.16.3-285.el7      ################################# [100%]

Conclusione

Spero che sia stato utile l’articolo per imparare, anche se non tutte, le operazioni sui pacchetti tramite il comando rpm.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *