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