web analytics

[Guida] Sysadmin GNU/Linux: rpm low level package manager – Parte 1

rpm packet manager centos redhat

In questa mini guida per sysadmin, divisa in due parti, vi introdurrò il funzionamento di uno dei principali package manager di basso livello: rpm. In questo primo capitolo vediamo quali sono i principi alla base dei package manager e vedremo poi nel dettaglio i primi comandi utili del gestore integrato in distribuzioni come RHEL, CentOs e openSUSE.

Package management system: un’introduzione

In estrema sintesi, si può affermare che un sistema di gestione dei pacchetti serve a fornire a sysadmin ed utenti, un sistema in grado di automatizzare l’installazione, l’aggiornamento, la verifica e la rimozione dei pacchetti software. Un pacchetto, in genere, contiene:

  • File eseguibili, dati, configurazioni, script e file di documentazione;
  • Metadata quali la versione, il checksum, elenchi di dipendenze.

sysadmin zypper Red Hat package manager rpm
Utilizzare un sistema di questo genere, risulta essere molto utile per un sysadmin. Pensate, ad esempio, alle possibilità che offre in termini di scalabilità, quando una lista di pacchetti vanno installati non su un solo computer ma su diverse decine. Ulteriore vantaggio in termini di sicurezza e controllo, è la possibilità di verificare, tramite un database interno, l’integrità dei file.
Esistono due diversi livelli di package manager. Il basso livello comprende i tool necessari per l’installazione e rimozione di un singolo pacchetto, o una lista di pacchetti, senza gestire completamente le dipendenze ed i conflitti. Esempio tipico sono rpm, creato da Red Hat, e dpkg, nelle Debian based. Quelli di alto livello, invece, sono i classici yum, dnf, zypper o apt.

Red Hat Package Manager (RPM) – Parte 1

Se ad esempio vi trovare su Centos, e volete installare un programma utilizzando rpm, è necessario prima procurarsi il pacchetto, scaricandolo in locale oppure indicando l’apposito URL. Il sistema, infatti, è compatibile con i protocolli HTTP e FTP. Secondo lo standard, il nome di un pacchetto rpm segue la struttura:

name-version-release.distro.architecture.rpm

I pacchetti rpm non sono altro che archivi cpio compressi, esiste infatti un apposito comando che può essere utilizzato per convertire un file .rpm come segue:

rpm2cpio foobar.rpm > foobar.cpio 
rpm package manager database centos sysadmin
Il database rpm in Centos 8.

La directory /var/lib/rpm, di default, è quella contenente il database delle informazioni su tutti i pacchetti rpm installati nel sistema. Questo database può essere utilizzato come mezzo di confronto, per verificare l’integrità di ciò che è installato, ad esempio per capire se i software sono aggiornati all’ultima versione.

Query

Se vogliamo verificare la corrispondenza di un particolare pacchetto con le informazioni presenti nel database, ad esempio per verificare se quel pacchetto è stato infettato da codice malevolo, dobbiamo utilizzare la sintassi simile alla seguente:

 rpm -V coreutils

Ottenere un output del genere, S.5….T, implica che non corrisponde la dimensione del file, il checksum ed i tempi di modifica. Per capire il significato di tutti i possibili output, come sempre, vi suggerisco di dare uno sguardo al manuale: man rpm.

rpm centos info
La query rpm -qi mostra le informazioni di un pacchetto.

Vediamo ora alcune importanti query che si possono utilizzare. Queste interrogazioni sul database dei pacchetti possono essere effettuate con una combinazione di opzioni, a partire da -q:

rpm -qa 			#mostra tutti i pacchetti installati su un sistema
rpm -ql nome_pacchetto	        #quali file sono contenuti in questo pacchetto
rpm -q  nome_pacchetto		#quale versione del pacchetto è installata
rpm -q --whatrequires file.rpm 	#quali pacchetti sono prerequisiti
rpm -q --whatprovides libc.so.6 #quali pacchetti ne sono dipendenti

Nella seconda parte di questa mini-guida proseguirò il discorso su rpm. Parleremo, ad esempio, di come fare per installare, disinstallare ed aggiornare un pacchetto!

sharing-caring-1Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.