[Guida] Sysadmin GNU/Linux: rpm low level package manager – Parte 1
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.
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
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.
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!
Seguiteci 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.