Gestione dei pacchetti - Linux -
Che cos'è un pacchetto? [ Breve guida ]_
La prima cosa che dobbiamo sapere è, cos'è un pacchetto? Ci sono due modi per installare software. Il primo è di ottenere il codice sorgente e compilarlo nel preoprio Computer _
Il secondo modo è di prendere e installare un pacchetto. Un pacchetto contiene il codice sorgente precompilato e pacchettizzato come file binario di installazione (eseguibile). Può comprendere icone, librerie, files di configurazione, binari, man pages, scorciatoie desktop, header files, fonts, ecc. In aggiunta può contenere dei meta dati, come informazioni sulla versione, manutentori del pacchetto ed i nomi degli autori del pacchetto e informazioni sui contatti, licenze, changelogs, README e collocazione sul web del progetto e codice sorgente. Ogni formato di pacchetto ha una struttura del file per la conservazione dei dati ed è compresso. Quando il pacchetto viene eseguito, vengono decompressi i dati e copiati tutti i files del pacchetto nel file system del sistema operativo, creati links simbolici dove necessario, inserito un links di avvio nel menu e sul desktop e, qualche volta, vengono date opzioni di configurazione all'utente.
I pacchetti sono specifici di una distribuzione e di una versione, così come la collocazione delle repositories per le dipendenze possono variare tra distribuzioni e tra diverse versioni della stessa distribuzione. Talvolta è possibile scaricare e installare software come in Windows cliccando semplicemente sul pacchetto, essendo compatibile comunque con il sistema operativo.
Ci sono molti formati di pacchetti, con .tgz, .deb ed .rpm per i più comuni. Altri come .pup, .pisi, .tazpkg e .mo sono meno comuni. I codici sorgente sono solitamente distribuiti come file tar.gz o tar.bz2, ma alcune distribuzioni offrono il propri pacchetti binari a loro modo. La maggior parte di noi usa pacchetti .deb o .rpm.
Gestori di pacchetti (Package Manager)
OK, ora sappiamo cosa sia un pacchetto, cos'è un gestore di pacchetti? In breve un gestore di pacchetti installa, rimuove e aggiorna i pacchetti. Questa è una definizione semplice, ma un moderno gestore di pacchetti può fare molto altro. Può connettersi automaticamente a una repository, scaricare automaticamente il software, controllare e risolvere le dipendenze, elencare i pacchetti, elencare le dipendenze, cercare le liste dei pacchetti, scegliere l'elenco e aggiungere e rimuovere le repositories. Può specificare una repository per un pacchetto specifico e bloccare gli aggiornamenti per specifici pacchetti, verificare i checksums e le firme digitali per garantire l'integrità dei pacchetti, permettere l'aggiornamento automatico e rimuovere le dipendenze quando vengono disinstallati.
Non tutti i gestori di pacchetti fanno queste cose, nemmeno garantiscono queste prestazioni per le singole funzioni. Questo ha visto crescere il numero dei gestori di pacchetti e, contrariamente alle credenze diffuse, non tutti offrono le stesse funzioni.
Repositories e sistemi di gestione pacchetti
Le Repositories sono raccolte di pacchetti tipicamente presso un server remoto, ma possono risiedere anche nell'hard disk locale, in un CD-ROM, DVD o altri supporti di stoccaggio. La cosa importante da sapere al riguardo delle repositories è che raccolgono i dati dei pacchetti in un particolare formato dipendente dal gestore dei pacchetti. Come esempio, urpmi di Mandriva non può leggere la repository yum di Fedora anche se entrambe contengono pacchetti .rpm, mentre APT di Debian non può leggere le repositories di Mandriva o Fedora.
pkgtool
Slackware e le sue derivate usano questo sistema. Il formato dei pacchetti è tar.gz ed hanno .tgz come estensione. E' un archivio tape (tar) compresso con gzip (gz). Non si tratta di un package manager nel modo in cui normalmente intendiamo oggi. E' in realtà solo un formato di pacchetto e alcune linee di comando per creare, vedere, installare, rimuovere e aggiornare. Il sistema di pacchettizzazione consente l'annidamento di scripts di installazione. Tali scripts sono la sola differenza tra installare un sorgente tarball ed un pacchetto Slackware. Non c'è il controllo delle dipendenze, nessun collegamento automatico alla repository, nessun aggiornamento automatico del sistema o verifica del checksum. Usando pkgtool, si può accedere all'elenco dei software installati per rimuovere, installare pacchetti o avviare scripts di installazione. I pacchetti sono manualmente scaricati dalla repository. Questo era il sistema migliore ai tempi in cui Slackware Linux era il sistema Linux dominante. Slackware fornisce un browser dei pacchetti su internet e sono disponibili anche feeds RSS. Entrambe questi strumenti sono di recente introduzione. SWareT, slapt-get, slackpkg e pkgsrc di NetBSD sono strumenti di terzi sviluppati per aiutare la gestione dei pacchetti in Slackware e/o nelle sue derivate. Questi strumenti forniscono la risoluzione delle dipendenze e offrono anche funzioni più avanzate.
Advanced Packaging Tool (APT)
APT è usato principalmente in Debian e sue derivate. APT è una libreria di routines in libapt che agisce come un front-end per dpkg, che è un gestore di pacchetti di basso livello con utilità di installazione, disinstallazione e aggiornamento di pacchetti .deb. APT fornisce dpkg con funzioni maggiormente avanzate, non ultima la risoluzione delle dipendenze. L' APT di oggi si è evoluto molto dalle sue origini, ma ha mantenuto le sue relazioni con dpkg. Tutte le derivate di Debian usano predefinitamente APT. APT è stato importato da OpenSolaris e Mac OS X, e può essere usato su distribuzione basate su RPM attraverso apt4rpm o apt-rpm.
RPM Package Manager (RPM)
RPM è sia un formato di pacchetti che un gestore di pacchetti. E' facile e popolare come APT. Mentre RPM ha alcune delle funzioni di alto livello inserite in esso fin dall'inizio, come il controllo delle dipendenze (ma non la risoluzione delle dipendenze), sembra che fornire tutte le caratteristiche di un moderno gestore di pacchetti allo standard RPM, non sia affatto semplice da fare. Questo ha determinato la nascita di strumenti di gestione come YUM, urpmi, YaST, up2date e apt-rpm, che offrono le funzioni di risoluzione delle dipendenze ed altre dotazioni avanzate, mentre lasciano ad RPM le funzioni di basso livello. Queste utilità sono talvolta chiamate Meta Package Managers in quanto gestiscono RPM che è già un package manager. RPM è stato usato dalla architettura AIX di IBM ed è il gestore di pacchetti predefinito di Linux Standard Base (LSB).
urpmi
Mandriva è la sola distribuzione che usa urpmi, così come openSUSE è la sola distribuzione che usa il suo sistema. Il formato dei pacchetti è .rpm. Lo strumento urpmi è uno dei primi, se non il primo gestore di pacchetti per pacchetti RPM. Attualmente comprende molte utilità che adempiono a varie funzioni: urpme disinstalla il software, urpmq interroga il database per il nome del file, urpmi installa i pacchetti, e via dicendo. Una delle funzioni interessanti di urpmi è che vengono aggiunti meta dati agli RPM installati in una directory locale.
Yellow Dog Updater Modified (YUM)
Derivato da Yellow Dog Updater (YUP), YUM è un Package manager per sistemi basati su Red Hat/Fedora che usano pacchetti RPM. E' diventato il package manager predefinito di Red Hat Enterprise Linux 5 ed è usato dalla maggior parte dei sistemi basati su Red Hat/Fedora. La modularità è la maggiore caratteristica di YUM. Funzioni extra vengono aggiunte con dei plugins e con il pacchetto yum-utils. Le critiche indicano che lo strumento non è integrato e le prestazioni possono variare. Tuttavia la sua ampia utilizazione indica che si tratta di un buon sistema di gestione dei pacchetti.
ZYpp
openSUSE usa un vasto parco di utilità per la gestione dei pacchetti. L'input passa attraverso rug (un front-end a linea di comando) o zen-updater (un frontend grafico) fino a Zenworks Management Daemon (ZMD). ZMD sente i comandi e li passa a libzypp, che comunica con il database del software, valuta e traduce i metadata e passa dati e comandi a libzypp. Libzypp avvia la risoluzione delle dipendenze, l'installazione, la rimozione e gli aggiornamenti - usando le utilità di gestione dei pacchetti RPM. E' possibile anche usare YaST o zypper (a linea di comando) per accedere direttamente a libzypp. Si è all'opposto di pkgtool usato da Slackware. Tre front-ends, due sistemi di gestione dei pacchetti, due repositories. Il sistema zen-updater aggiunge anche un demone e il livello helper (che non ha alcun altro sistema) prima di raggiungere il package manager per la risoluzione delle dipendenze e le fasi di installazione. E' un sistema molto lento, ma che di recente è stato molto velocizzato.
Distribuzioni basate su sorgenti e BSD
Per questi sistemi, una repository contiene scripts di installazione al posto di binari precompilati e la compilazione e fatta sulla macchina locale. Portage in Gentoo usa scripts chiamati ebuilds che si collegano al codice sorgente e contengono istruzioni per il compilatore e le routines di installazione. Questo sistema ha funzioni simili ad un package manager in molte modalità, compreso installare, rimuovere, aggiornare, tracciare il software installato, risolvere le dipendenze, ecc. Questo è il principio generale di BSD Ports, con scripts di installazione al posto di pacchetti. Il bello di questo tipo di gestione appare ovvio. Installare scripts è più breve che installare pacchetti, quindi la repository è leggera. Sorgente originale significa avere un codice pulito e facile alla ottimizzazione da parte di terzi, e gli scripts di installazione possono avere delle patches. La compilazione locale significa mancanza di codice extra per il supporto di hardware non presente nel sistema e l'ottimizzazione avviene a carico dell'hardware disponibile. Ci possono essere altri vantaggi, ma è meglio leggere la documentazione di Gentoo o di BSD.
Conclusione Ci sono altri gestori di pacchetti. I primi package managers erano una semplice raccolta di operazioni di installazione, rimozione ed aggiornamento. Mentre APT è stato eventualmente sviluppato per essere riccamente dotato, i gestori di pacchetto di terze parti per Slackware Linux sono principalmente dei semplici programmi che aggiungono la risoluzione delle dipendenze ed uno o due dotazioni in più. RPM è una evoluzione di un package manager verso un completo sistema di gestione dei pacchetti. Aggiunge caratteristiche come il controllo delle dipendenze, tracciamento, installazione automatica e verifica del checksum. RPM ha molte più funzioni di dpkg, ma meno funzioni di APT. Per qualche ragione, invece di aggiungere funzioni ad RPM, gli sviluppatori hanno creato "meta package managers" come YUM, urpmi, Smart e YaST. Infine abbiamo la gestione dei pacchetti basata su script che usano il codice sorgente originale e lo compilano al momento della installazione. Le repositories basate su scripts sono piccole rispetto alle repositories di pacchetti e gli scripts potrebbero richiedere meno risorse per la manutenzione di piccoli aggiornamenti del software. Tuttavia richiedono una monitorizzazione frequente delle risorse software per garantire che gli hyperlinks negli scripts, rimangano validi.
Ci sono molti package managers non descritti in questa sede. Variano da quelli molto ricchi di dotazioni come Smart, a quelli minimalisti come Pacman di Arch Linux. Sono solitamente sviluppati quando nessun altro gestore fa al caso della distribuzione specifica e dei suoi principi filosofici. Smart e YUM, tra gli altri, sono stati sviluppati per leggere molti titpi di repositories. Anche Puppy ha il suo, indubbiamente ottimizzato in quanto a dimensioni. Poi ci sono tanti, tanti frontend grafici. Essi non aggiungono nuove funzioni, ma migliorano l'usabilità. Personalmente preferisco i gestori con interfaccia grafica per la consultazione degli elenchi dei pacchetti disponibili.
La prima cosa che dobbiamo sapere è, cos'è un pacchetto? Ci sono due modi per installare software. Il primo è di ottenere il codice sorgente e compilarlo nel preoprio Computer _
Il secondo modo è di prendere e installare un pacchetto. Un pacchetto contiene il codice sorgente precompilato e pacchettizzato come file binario di installazione (eseguibile). Può comprendere icone, librerie, files di configurazione, binari, man pages, scorciatoie desktop, header files, fonts, ecc. In aggiunta può contenere dei meta dati, come informazioni sulla versione, manutentori del pacchetto ed i nomi degli autori del pacchetto e informazioni sui contatti, licenze, changelogs, README e collocazione sul web del progetto e codice sorgente. Ogni formato di pacchetto ha una struttura del file per la conservazione dei dati ed è compresso. Quando il pacchetto viene eseguito, vengono decompressi i dati e copiati tutti i files del pacchetto nel file system del sistema operativo, creati links simbolici dove necessario, inserito un links di avvio nel menu e sul desktop e, qualche volta, vengono date opzioni di configurazione all'utente.
I pacchetti sono specifici di una distribuzione e di una versione, così come la collocazione delle repositories per le dipendenze possono variare tra distribuzioni e tra diverse versioni della stessa distribuzione. Talvolta è possibile scaricare e installare software come in Windows cliccando semplicemente sul pacchetto, essendo compatibile comunque con il sistema operativo.
Ci sono molti formati di pacchetti, con .tgz, .deb ed .rpm per i più comuni. Altri come .pup, .pisi, .tazpkg e .mo sono meno comuni. I codici sorgente sono solitamente distribuiti come file tar.gz o tar.bz2, ma alcune distribuzioni offrono il propri pacchetti binari a loro modo. La maggior parte di noi usa pacchetti .deb o .rpm.
Gestori di pacchetti (Package Manager)
OK, ora sappiamo cosa sia un pacchetto, cos'è un gestore di pacchetti? In breve un gestore di pacchetti installa, rimuove e aggiorna i pacchetti. Questa è una definizione semplice, ma un moderno gestore di pacchetti può fare molto altro. Può connettersi automaticamente a una repository, scaricare automaticamente il software, controllare e risolvere le dipendenze, elencare i pacchetti, elencare le dipendenze, cercare le liste dei pacchetti, scegliere l'elenco e aggiungere e rimuovere le repositories. Può specificare una repository per un pacchetto specifico e bloccare gli aggiornamenti per specifici pacchetti, verificare i checksums e le firme digitali per garantire l'integrità dei pacchetti, permettere l'aggiornamento automatico e rimuovere le dipendenze quando vengono disinstallati.
Non tutti i gestori di pacchetti fanno queste cose, nemmeno garantiscono queste prestazioni per le singole funzioni. Questo ha visto crescere il numero dei gestori di pacchetti e, contrariamente alle credenze diffuse, non tutti offrono le stesse funzioni.
Repositories e sistemi di gestione pacchetti
Le Repositories sono raccolte di pacchetti tipicamente presso un server remoto, ma possono risiedere anche nell'hard disk locale, in un CD-ROM, DVD o altri supporti di stoccaggio. La cosa importante da sapere al riguardo delle repositories è che raccolgono i dati dei pacchetti in un particolare formato dipendente dal gestore dei pacchetti. Come esempio, urpmi di Mandriva non può leggere la repository yum di Fedora anche se entrambe contengono pacchetti .rpm, mentre APT di Debian non può leggere le repositories di Mandriva o Fedora.
pkgtool
Slackware e le sue derivate usano questo sistema. Il formato dei pacchetti è tar.gz ed hanno .tgz come estensione. E' un archivio tape (tar) compresso con gzip (gz). Non si tratta di un package manager nel modo in cui normalmente intendiamo oggi. E' in realtà solo un formato di pacchetto e alcune linee di comando per creare, vedere, installare, rimuovere e aggiornare. Il sistema di pacchettizzazione consente l'annidamento di scripts di installazione. Tali scripts sono la sola differenza tra installare un sorgente tarball ed un pacchetto Slackware. Non c'è il controllo delle dipendenze, nessun collegamento automatico alla repository, nessun aggiornamento automatico del sistema o verifica del checksum. Usando pkgtool, si può accedere all'elenco dei software installati per rimuovere, installare pacchetti o avviare scripts di installazione. I pacchetti sono manualmente scaricati dalla repository. Questo era il sistema migliore ai tempi in cui Slackware Linux era il sistema Linux dominante. Slackware fornisce un browser dei pacchetti su internet e sono disponibili anche feeds RSS. Entrambe questi strumenti sono di recente introduzione. SWareT, slapt-get, slackpkg e pkgsrc di NetBSD sono strumenti di terzi sviluppati per aiutare la gestione dei pacchetti in Slackware e/o nelle sue derivate. Questi strumenti forniscono la risoluzione delle dipendenze e offrono anche funzioni più avanzate.
Advanced Packaging Tool (APT)
APT è usato principalmente in Debian e sue derivate. APT è una libreria di routines in libapt che agisce come un front-end per dpkg, che è un gestore di pacchetti di basso livello con utilità di installazione, disinstallazione e aggiornamento di pacchetti .deb. APT fornisce dpkg con funzioni maggiormente avanzate, non ultima la risoluzione delle dipendenze. L' APT di oggi si è evoluto molto dalle sue origini, ma ha mantenuto le sue relazioni con dpkg. Tutte le derivate di Debian usano predefinitamente APT. APT è stato importato da OpenSolaris e Mac OS X, e può essere usato su distribuzione basate su RPM attraverso apt4rpm o apt-rpm.
RPM Package Manager (RPM)
RPM è sia un formato di pacchetti che un gestore di pacchetti. E' facile e popolare come APT. Mentre RPM ha alcune delle funzioni di alto livello inserite in esso fin dall'inizio, come il controllo delle dipendenze (ma non la risoluzione delle dipendenze), sembra che fornire tutte le caratteristiche di un moderno gestore di pacchetti allo standard RPM, non sia affatto semplice da fare. Questo ha determinato la nascita di strumenti di gestione come YUM, urpmi, YaST, up2date e apt-rpm, che offrono le funzioni di risoluzione delle dipendenze ed altre dotazioni avanzate, mentre lasciano ad RPM le funzioni di basso livello. Queste utilità sono talvolta chiamate Meta Package Managers in quanto gestiscono RPM che è già un package manager. RPM è stato usato dalla architettura AIX di IBM ed è il gestore di pacchetti predefinito di Linux Standard Base (LSB).
urpmi
Mandriva è la sola distribuzione che usa urpmi, così come openSUSE è la sola distribuzione che usa il suo sistema. Il formato dei pacchetti è .rpm. Lo strumento urpmi è uno dei primi, se non il primo gestore di pacchetti per pacchetti RPM. Attualmente comprende molte utilità che adempiono a varie funzioni: urpme disinstalla il software, urpmq interroga il database per il nome del file, urpmi installa i pacchetti, e via dicendo. Una delle funzioni interessanti di urpmi è che vengono aggiunti meta dati agli RPM installati in una directory locale.
Yellow Dog Updater Modified (YUM)
Derivato da Yellow Dog Updater (YUP), YUM è un Package manager per sistemi basati su Red Hat/Fedora che usano pacchetti RPM. E' diventato il package manager predefinito di Red Hat Enterprise Linux 5 ed è usato dalla maggior parte dei sistemi basati su Red Hat/Fedora. La modularità è la maggiore caratteristica di YUM. Funzioni extra vengono aggiunte con dei plugins e con il pacchetto yum-utils. Le critiche indicano che lo strumento non è integrato e le prestazioni possono variare. Tuttavia la sua ampia utilizazione indica che si tratta di un buon sistema di gestione dei pacchetti.
ZYpp
openSUSE usa un vasto parco di utilità per la gestione dei pacchetti. L'input passa attraverso rug (un front-end a linea di comando) o zen-updater (un frontend grafico) fino a Zenworks Management Daemon (ZMD). ZMD sente i comandi e li passa a libzypp, che comunica con il database del software, valuta e traduce i metadata e passa dati e comandi a libzypp. Libzypp avvia la risoluzione delle dipendenze, l'installazione, la rimozione e gli aggiornamenti - usando le utilità di gestione dei pacchetti RPM. E' possibile anche usare YaST o zypper (a linea di comando) per accedere direttamente a libzypp. Si è all'opposto di pkgtool usato da Slackware. Tre front-ends, due sistemi di gestione dei pacchetti, due repositories. Il sistema zen-updater aggiunge anche un demone e il livello helper (che non ha alcun altro sistema) prima di raggiungere il package manager per la risoluzione delle dipendenze e le fasi di installazione. E' un sistema molto lento, ma che di recente è stato molto velocizzato.
Distribuzioni basate su sorgenti e BSD
Per questi sistemi, una repository contiene scripts di installazione al posto di binari precompilati e la compilazione e fatta sulla macchina locale. Portage in Gentoo usa scripts chiamati ebuilds che si collegano al codice sorgente e contengono istruzioni per il compilatore e le routines di installazione. Questo sistema ha funzioni simili ad un package manager in molte modalità, compreso installare, rimuovere, aggiornare, tracciare il software installato, risolvere le dipendenze, ecc. Questo è il principio generale di BSD Ports, con scripts di installazione al posto di pacchetti. Il bello di questo tipo di gestione appare ovvio. Installare scripts è più breve che installare pacchetti, quindi la repository è leggera. Sorgente originale significa avere un codice pulito e facile alla ottimizzazione da parte di terzi, e gli scripts di installazione possono avere delle patches. La compilazione locale significa mancanza di codice extra per il supporto di hardware non presente nel sistema e l'ottimizzazione avviene a carico dell'hardware disponibile. Ci possono essere altri vantaggi, ma è meglio leggere la documentazione di Gentoo o di BSD.
Conclusione Ci sono altri gestori di pacchetti. I primi package managers erano una semplice raccolta di operazioni di installazione, rimozione ed aggiornamento. Mentre APT è stato eventualmente sviluppato per essere riccamente dotato, i gestori di pacchetto di terze parti per Slackware Linux sono principalmente dei semplici programmi che aggiungono la risoluzione delle dipendenze ed uno o due dotazioni in più. RPM è una evoluzione di un package manager verso un completo sistema di gestione dei pacchetti. Aggiunge caratteristiche come il controllo delle dipendenze, tracciamento, installazione automatica e verifica del checksum. RPM ha molte più funzioni di dpkg, ma meno funzioni di APT. Per qualche ragione, invece di aggiungere funzioni ad RPM, gli sviluppatori hanno creato "meta package managers" come YUM, urpmi, Smart e YaST. Infine abbiamo la gestione dei pacchetti basata su script che usano il codice sorgente originale e lo compilano al momento della installazione. Le repositories basate su scripts sono piccole rispetto alle repositories di pacchetti e gli scripts potrebbero richiedere meno risorse per la manutenzione di piccoli aggiornamenti del software. Tuttavia richiedono una monitorizzazione frequente delle risorse software per garantire che gli hyperlinks negli scripts, rimangano validi.
Ci sono molti package managers non descritti in questa sede. Variano da quelli molto ricchi di dotazioni come Smart, a quelli minimalisti come Pacman di Arch Linux. Sono solitamente sviluppati quando nessun altro gestore fa al caso della distribuzione specifica e dei suoi principi filosofici. Smart e YUM, tra gli altri, sono stati sviluppati per leggere molti titpi di repositories. Anche Puppy ha il suo, indubbiamente ottimizzato in quanto a dimensioni. Poi ci sono tanti, tanti frontend grafici. Essi non aggiungono nuove funzioni, ma migliorano l'usabilità. Personalmente preferisco i gestori con interfaccia grafica per la consultazione degli elenchi dei pacchetti disponibili.
Commenti
Posta un commento
Ciao a tutti voi, sono a chiedervi se avete preferenze per Post di vostro interesse
in modo da dare a tutti voi che mi seguite un aiuto maggiore, grazie per la vostra disponibilità.