Gestione pacchetti
Indice
Informazioni generali
Un sistema di gestione pacchetti è una raccolta di strumenti che fornisce un metodo coerente per l'installazione, l'aggiornamento e la rimozione del software sul tuo sistema. Una distribuzione Linux, inclusa openSUSE, è costituita tipicamente da migliaia di pacchetti software distinti.
I software sono distribuiti attraverso pacchetti collegati a metadati che contengono informazioni aggiuntive come la descrizione della finalità del software e una lista di dipendenze necessarie al software per essere eseguito correttamente. I pacchetti sono forniti da repository come supporti locali (CD, DVD o hard disk) o repository online e, una volta installati, i metadati vengono memorizzati in un database locale che viene usato in seguito per recuperare i pacchetti quando devono essere rimossi.
Libzypp è l'implementazione di un sistema di gestione pacchetti per openSUSE. Fornisce il Gestore pacchetti di YaST come interfaccia grafica utente e Zypper come interfaccia a riga di comando.
Pacchetti
I pacchetti sono archivi di file che includono tutti i file che compongono un software (come l'applicazione stessa, le librerie condivise, pacchetti di sviluppo contenenti i file necessari per compilare un software su una data libreria, ...) ed eventualmente istruzioni per farli funzionare.
Un pacchetto è integrato correttamente nella distribuzione per cui è stato creato con un occhio di riguardo ai percorsi per l'installazione, dipendenze, integrazione desktop, script di avvio per i server, ecc. Per questa ragione dovresti sempre installare pacchetti che sono stati creati per la distribuzione che stai usando, inclusa la versione esatta della distribuzione (esempio openSUSE 11.4). Ad esempio non installare i pacchetti di Fedora su openSUSE e neanche i pacchetti per openSUSE 11.3 su openSUSE 11.4.
I metadati del pacchetto
Un pacchetto contiene ulteriori informazioni comunemente chiamate metadati come
- un sommario,
- una descrizione,
- una lista di file contenuti nel pacchetto,
- la versione del software che contiene la versione di rilascio del pacchetto,
- quando, dove e chi l'ha creato,
- per quale architettura hardware è stato creato.
- il checksum dei file contenuti nel pacchetto,
- la licenza del software,
- quali altri pacchetti richiede per funzionare correttamente,
- ecc.
Le dipendenze del pacchetto
Un aspetto importante dell'archivio dei pacchetti sono le relazioni che contiene. Di fatto i pacchetti mettono in relazione file di altri pacchetti dato che le applicazioni pacchettizzate hanno bisogno di un ambiente di esecuzione (altri strumenti, librerie, ecc...) per avviare l'applicazione. Le dipendenze del pacchetto sono usate per esprimere tali rapporti.
Ad esempio il pacchetto A ha bisogno che i pacchetti B, C e D siano installati in modo da lavorare correttamente.
- Le dipendenze dei pacchetti sono transitive, ciò significa che quando un pacchetto A necessita del pacchetto B e il pacchetto B necessita del pacchetto C, il pacchetto A necessita anche del pacchetto C, ecco perché a volte bisogna installare più pacchetti anche se hai richiesto una sola applicazione.
- Le dipendenze da libreria (tipicamente pacchetti il cui nome comincia con "lib") sono molto comuni e più o meno ogni singola applicazione dipende da un insieme di pacchetti di librerie.
I pacchetti e le sue dipendenze sono aspetti molto importanti di una distribuzione Linux (così come per altri sistemi BSD e UNIX) perché forniscono un approccio modulare per configurare e gestire un sistema operativo e le sue applicazioni. Questo è vero specialmente per i pacchetti di librerie.
Ad esempio il pacchetto openssl contiene librerie per la crittografia usate da molte altre applicazioni e librerie (ad esempio per la crittografia SSL). Quando una nuova e migliorata versione di openssl è disponibile, tutte le applicazioni che la usano ne beneficeranno semplicemente aggiornando questo singolo pacchetto alla nuova versione.
C'è da dire che è anche un sistema molto efficiente per mantenere stabile e sicuro il sistema: quando un buco di sicurezza, un exploit o un bug affligge una libreria usata da una o più applicazioni, aggiornare il singolo pacchetto risolverà il problema per tutti gli altri.
I formati del pacchetto
Nel mondo delle distribuzioni Linux il software nativo viene pacchettizzato essenzialmente in tre tipi di formati di pacchetto.
- tgz (file tar gzip) che sono fondamentalmente archivi di codice sorgente. Possono contenere qualunque cosa che il responsabile del pacchetto reputi utile. A parte il formato del file stesso, per estrarre i file necessari, non c'è nulla di standard sul contenuto di un file tgz. Hanno bisogno di essere compilati al fine di poter eseguire il software.
- rpm (RPM Package Manager) sono archivi precompilati. Creato da Red Hat Linux e standardizzato da LSB, è usato al giorno d'oggi da molte distribuzioni Linux, inclusa openSUSE, come sistema di pacchettizzazione del software.
- deb (Debian) sono archivi precompilati usati su sistemi basati su Debian.
Tuttavia, se il formato dell'archivio avvisa il sistema delle dipendenze richieste, non forniscono le capacità di un gestore di dipendenze e si limiterà a presentare ogni problema incontrato all'utente lasciando decidere a lui cosa fare.
Ad esempio se si desidera installare un pacchetto RPM A che dipende dal pacchetto RPM B, RPM non installerà automaticamente il pacchetto B, ma dirà solamente che ha bisogno del pacchetto B e basta. Spetta all'utente installare il pacchetto B e successivamente il pacchetto A. Adesso immagina che il pacchetto B dipende dal pacchetto C e D e il pacchetto D dipende dal pacchetto E e così via. Si finisce per inseguire le dipendenze dei pacchetti manualmente lungo tutti i rami di questo albero gigante.
Gestore dei pacchetti
Sulle moderne distribuzioni Linux come openSUSE, l'installazione del software è ottenuta tramite un gestore dei pacchetti. Il gestore pacchetti, che lavora su RPM, prende i pacchetti software dai repository (server online, CD, DVD ecc.), risolve le dipendenze e le installa sul tuo sistema. Il gestore pacchetti rende facile la successiva rimozione o l'aggiornamento dei pacchetti. Il numero dei pacchetti disponibili per l'installazione dipende da quali repository hai aggiunto.
Il gestore pacchetti nativo di openSUSE è fornito dal modulo Gestore pacchetti di YaST e da Zypper per quanto riguarda la riga di comando, sebbene la distribuzione presenti diversi strumenti per la gestione dei pacchetti.
Repository di pacchetti
Prima che i pacchetti possano essere installati devono essere disponibili in un repository di pacchetti che sia un supporto fisico come CD o DVD oppure online via internet.
I repositori di pacchetti openSUSE includono:
- repository di pacchetti ufficiali che includono tutti i pacchetti supportati e testati
- repository di terze parti come Packman e i repository del Build Service. Questi forniscono diversi pacchetti aggiuntivi, alcuni dei quali sono più aggiornati o che non possono essere inclusi nei repository ufficiali per ragioni legali, sebbene siano stati testati limitatamente.
Vedi anche
- Repository ufficiali
- Repository aggiuntivi
- Cambiare fornitore degli aggiornamenti
- Aggiornamento del sistema