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