Pacchetti RPM

Introduzione RPM è un tool di gestione dei pacchetti binari già compilati che consente l'installazione, la rimozione, l'aggiornamento dei pacchetti di sistema e di ottenere informazioni sulle loro caratteristiche. Questo strumento è disponibile sulle seguenti distribuzioni: RedHat e derivate, Fedora, Mandrake, Suse e ecc. Attenzione, ogni pacchetto rpm viene rilasciato per una specifica versione di una distribuzione, quindi i pacchetti rilasciati per una distro non funzionano su un'altra.
Il nome di ogni pacchetto rpm segue il seguente schema standard: nome-versione-release.architettura.rpm
Query al database e file RPM. Visualizzare tutti i pacchetti rpm installati:
# rpm -qa
Eseguire una query al db rpm filtrando tutti pacchetti contenenti la stringa 'httpd':
# rpm -qa | grep httpd
Ottenere informazioni su un determinato pacchetto installato, esempio:
# rpm -qi httpd
Visualizzare la lista dei file forniti da un pacchetto installato, esempio:
# rpm -ql httpd
Visualizzare solo la lista dei file di configurazione forniti da un pacchetto installato:
# rpm -qc httpd
Ottenere informazioni sulla documentazione fornita da un pacchetto:
# rpm -qc httpd
Visualizzare la lista delle dipendenze richieste da un pacchetto:
# rpm -q httpd --whatrequires
Visualizzare le capability fornite da un pacchetto:
# rpm -q httpd --whatprovides
Visualizzare gli script avviati in fase di installazione/rimozione:
# rpm -q httpd --scripts
Visualizzare lo storico delle revisioni di pacchetto:
# rpm -q httpd --changelog
Verificare a quale pacchetto appartiene un dato file:
# rpm -qf /etc/httpd/conf/httpd.conf
Visualizzare la lista dei file forniti da un pacchetto non ancora installato:
# rpm -qp httpd-2.0.52-3.i386.rpm -l
Veificare l'integrità di un pacchetto rpm. Fedora/RedHat, firmano tutti i pacchetti con una chiave digitale privata GPG. Importare prima la public-key col seguente comando:
# rpm --import /media/cdrom/RPM-GPG-KEY
Per verificare l'integrità di un pacchetto, prima di procedere con l'installazione, specie se questo è stato scaricato da internet, eseguire il prossimo comando:
# rpm --checksig nome_pacchetto.rpm
Per verificare tutti i pacchetti installati sul sistema:
# rpm -qa gpg-pubkey
Installare un pacchetto rpm. Installare un pacchetto binario:
# rpm -ivh nome_pacchetto.rpm
Installare un pacchetto binario ignorando le dipendenze richieste:
# rpm -ivh --nodeeps nome_pacchetto.rpm
Installare un pacchetto binario utlizzando la risoluzione automatica delle dipendenze:
# rpm -ivh --aid nome_pacchetto.rpm
Aggiornare un pacchetto rpm. Aggiornare un pacchetto senza modificarne i file di configurazione:
# rpm -U nome_pacchetto.rpm
Aggiornare un pacchetto solo se quest'ultimo risulta già installato:
# rpm -F nome_pacchetto.rpm
Rimuovere un pacchetto rpm.
# rpm -e nome_pacchetto
Altre utility e opzioni del comando rpm. Verificare file size, permessi, tipo, owner, group, MD5 checksum e ultima modifica sul database RPM:
# rpm -V httpd
Verificare tutti i pacchetti installati sul sistema - usare con cautela:
# rpm -Va
Verificare un pacchetto non ancora installato:
# rpm -Vp httpd-2.0.52-3.i386.rpm
Questo comando permette di estrarre i files dal pacchetto per essere convertiti in un flusso cpio e quindi di estrarre gli eseguibili dal pacchetto:
# rpm2cpio httpd-2.0.52-3.i386.rpm | cpio --extract --make-directories *bin*
Utility grafica su RedHat/Fedora, che permette la gestione dei pacchetti:
# system-config-packages
up2date è un'utility di RedHat che permette di installare, aggiornare, scaricare pacchetti rpm via internet da RHN(RedHat Network).
Installare un nuovo kernel da un rpm. E' possibile installare anche un nuovo kernel sul nostro sistema, mediante file rpm. Quando installate un nuovo kernel eseguite sempre l'installazione dell'rpm, mai l'upgrade.
# rpm -ivh kernel-version.arch.rpm
il un nuovo kernel sarà subito disponibile all'avvio del sistema, mantenendo comunque il vecchio kernel(non accadrebbe invece con un aggiornamento).
Installazione di un pacchetto sorgente su piattaforma i386. primo passo:
# rpmbuild --rebuild nome_pacchetto.src.rpm
secondo passo:
# rpm -ivh /usr/src/redhat/RPMS/i386/nome_pacchetto.rpm
Oppure altra procedura, primo passo:
# rpmbuild --recompile nome_pacchetto.src.rpm
secondo passo:
# rpmbuild --bb /usr/src/redhat/SPECS/nome_pacchetto.spec
terzo passo:
# rpm -ivh /usr/src/redhat/RPMS/i386/nome_pacchetto.rpm
Creazione di un pacchetto rpm a partire dal sorgente. Supponiamo di volere creare un pacchetto a partire dai sorgenti dell'applicazione snort. Scarichiamo il sorgente da internet:
# wget http://www.snort.org/dl/snort-2.0.0.tar.gz
# cp snort-2.0.0.tar.gz /usr/src/redhat/SOURCE
# cd /usr/src/redhat/SOURCE
# tar xzf snort-2.0.0.tar.gz Controllare se esiste all'interno della directory scompattata il file '.spec', il quale contiene le specifiche per la creazione del binario, e copiarlo in /usr/src/redhat/SPEC:
# cp snort.spec /usr/src/redhat/SPEC/snort.spec
Se il file .spec non esiste può essere creato.
Infine prepariamo la compilazione per la creazione del nuovo rpm:
# cd /usr/src/redhat
# rpmbuild -bb SPECS/snort.spec
|