User Tools

Site Tools


doc:appunti:linux:sa:gestione_pacchetti

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>

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
doc/appunti/linux/sa/gestione_pacchetti.txt · Last modified: 2021/12/27 08:56 by niccolo