====== 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 =====
**[[http://lists.debian.org/debian-user/2005/06/msg03462.html|Finding the origin of a package installed by APT]]**. In breve, usare:
apt-cache policy
====== 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
yum install
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