Table of Contents

Gestione dei pacchetti in Linux e FreeBSD

Tool per la gestione dei pacchetti

RedHat Linux         rpm
Debian GNU/Linux     dpkg
FreeBSD              pkg_*

Installazione di un pacchetto

rpm -i archive.rpm
dpkg -i archive.deb
pkg_add archive.tgz

Disinstallazione di un pacchetto

rpm -e package
dpkg -r package       (lascia i file di configurazione)
dpkg -P package       (rimuove i file di configurazione)
pkg_delete package

A quale pacchetto appartiene un file

rpm -qf /path/to/file
dpkg --search /path/to/file
pkg_info -W /path/to/file

Informazioni su un pacchetto installato

rpm -qi package
dpkg --status package
pkg_info -v package

Informazioni su un pacchetto da installare, comprese le dipendenze

rpm -qpi archive.rpm
dpkg --info archive.deb
pkg_info -v archive.tgz

Quali dipendenze ha un pacchetto

Elenca i pacchetti richiesti, cioè le dipendenze, di un pacchetto già installato:

rpm -qR package

Lista concisa di tutti i pacchetti installati

rpm -qa
dpkg --get-selections
pkg_info

Lista di tutti i file installati da un pacchetto

rpm -ql package
dpkg --listfiles package
pkg_info -L package

Estrarre (senza installare) il contenuto di un paccheto

rpm ????
dpkg --extract archive.deb directory
dpkg --control archive.deb directory/DEBIAN
tar zxvf archive.tgz

Estrarre gli script da un archivio rpm:

rpm -qp --scripts archive.rpm > ListOfScripts

Controllo integrità file appartenenti a un pacchetto

NOTA: non tutti i pacchetti .deb hanno l'md5sum

rpm -V package
debsums package
# In alternativa al precedente:
cd /; md5sum -c /var/lib/dpkg/info/package.md5sums
pkg_info -g package

Elenco dei pacchetti che dipendono da uno dato

rpm -q --whatrequires package
apt-cache showpkg package
pkg_info -R package

Uso di apt e dpkg in Debian GNU/Linux

Nelle moderne distribuzioni Debian (a partire da Debian 8) esistono i comandi apt-get e apt per interagire con il gestore di pacchetti APT (Advanced Package Tool). Il secondo è più moderno, include le funzionalità di apt-get e apt-cache, più alcune funzionalità esclusive. Quindi conviene aggiornarsi a questa nuova sintassi.

Aggiorna la lista del software disponibile alla sorgente. Le fonti sono indicate in /etc/apt/sources.list.

atp update

Tenta di aggiornare automaticamente e gentilmente il sistema. Non installa ne' rimuove pacchetti.

apt upgrade

Aggiorna i pacchetti anche per l'eventuale passaggio ad una nuova release Debain. Eventualmente rimuove pacchetti non più necessari o che impediscono l'aggiornamento:

apt full-upgrade
apt-get dist-upgrade

Lista dettagliata dei pacchetti installati, loro stato e breve descrizione:

dpkg --list

Come ottenere la lista dei pacchetti installati e come usare la lista per installare gli stessi pacchetti:

dpkg --get-selections > lista
dpkg --set-selections < lista

Elenco dei pacchetti aggiornabili:

apt list --upgradable

Scoprire l'origine di un pacchetto

Finding the origin of a package installed by APT. In breve, usare:

apt-cache policy <pkgname>

Pulire lo stato dei pacchetti

Quando una installazione ha subito diversi aggiornamenti, alcuni pacchetti potrebbro trovarsi in condizioni non ottimali, segnalati durante le varie operazioni di apt oppure dpkg.

Con questo script si dovrebbero risolvere automaticamente tutte le situazioni indicate sopra:

# Sistema "The following packages have been kept back"
apt-get --assume-yes dist-upgrade
# Sistema "The following packages were automatically installed and are no longer required"
apt -y autoremove
# Rimuovere i pacchetti in stato diverso da "install":
dpkg --get-selections | egrep -v '\binstall\b' | awk '{print $1}' | xargs dpkg --purge

Ricompilare un pacchetto Debian GNU/Linux

Nella directory corrente: scarica, scompatta e applica le patch Debian ai sorgenti di un pacchetto. Bisogna che in /etc/apt/sources.list sia indicata una sorgente deb-src.

apt-get source packagename

Se i sorgenti li abbiamo già scaricati (nella directory corrente ci devono essere i tre file: .diff.gz, .dsc e .orig.tar.gz):

dpkg-source -x filename.dsc

Installa i pacchetti necessari a compilare un pacchetto:

apt-get build-dep package

Compila i sorgenti e crea il pacchetto .deb:

cd packagedir
dpkg-buildpackage -rfakeroot -b

Scaricare pacchetto Debian GNU/Linux senza installare

Con aptitude è semplice e non richiede permessi di root. Il file viene salvato nella directory corrente:

aptitude download packagename

Yum

Disponibile in Fedora, CentOS (ed altre derivate RedHat?).

Cerca un pacchetto nella lista di quelli disponibili e lo installa:

yum search <string>
yum install <package>

Yum attinge ai repository on-line, l'elenco dei repository è indicato nei file presenti in /etc/yum.repos.d/.

Per vedere l'elenco dei pacchetti installati, gli aggiornamenti disponibilie e per installarli:

yum list installed
yum list updates
yum update

Per aggiungere il repository EPEL ad una CentoOS 5:

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -ivh epel-release-5-4.noarch.rpm
yum repolist

Per vedere quali repository attivi ci sono in yum:

yum repolist enabled

Per sapere da quale repository è arrivato un pacchetto si usa il comando repoquery fornito dal pacchetto yum-utils:

repoquery -i php55w-common

Per scaricare un pacchetto senza installarlo si usa il comando yumdownloader fornito dal pacchetto yum-utils:

yumdownloader php55w-common

Signature dei pacchetti rpm

Per installare pacchetti da repository non ufficiali è opportuno installare la chiave con la quale vengono firmati. Ad esempio:

rpm --import https://mirror.webtatic.com/yum/RPM-GPG-KEY-webtatic-el7

In alternativa è possibile scaricare il file della chiave ed eseguire l'opzione --import sul file scaricato in locale.

Il risultato è l'installazione di un pacchetto con nome del tipo gpg-pubkey-62e74ca5-539c878e, che non contiene alcun file. Per vedere quali chiavi sono state installate nel sistema:

rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE}\t%{SUMMARY}\n'

Per rimuovere la chiave si deve rimuovere il pacchetto con rpm:

rpm -e gpg-pubkey-62e74ca5-539c878e