*Linux Guide

Comparazione tra i maggiori gestori di pacchetti

Articolo originale

1. Introduzione

Una delle differenze principali nelle varie distribuzioni Linux è la gestione dei pacchetti. Molte volte si tratta del motivo per il quale alcuni passano da una distro ad un'altra, in quanto potrebbero non accettare il modo con il quale viene gestito il software, oppure perchè manca del software in alcune specifiche distribuzioni. Se siete dei principianti e volete sapere quali possano essere le varie differenze, questo è un buon punto di partenza. Se avete usato una sola od un paio di distribuzioni e volete sapere cosa ci sia in altre realtà, questo potrebbe essere il vostro articolo. Infine se volete fare delle comparazioni tra i vari sistemi di gestione dei pacchetti, questo articolo potrebbe interessarvi. Potrete scoprire alcune cose interessanti, ad esempio come si installano i pacchetti, come si cercano, come si aggiornano e come si rimuovono ed altre opzioni.
Buona lettura.

2. Sistemi di gestione dei pacchetti

2.1 La famiglia apt

APT è un acronimo di Advanced Packaging Tool, ma l'acronimo è scritto in minuscolo, quindi ci riferiremo ad esso in questo modo. La famiglia apt è un frontend di dpkg nella famiglia Debian dei sistemi operativi Linux. Alcune delle sue applicazioni sono apt-get, apt-cache, apt-cdrom o apt-file. Non è una lista completa, ma quello che viene usato più di frequente è in essa. C'è anche aptitude, che quando viene invocato senza argomenti, presenta un simpatico menù. Alcune derivate di Debian hanno cambiato alcune cose in aptitude, ma in questa sede si tratterà dell'applicazione di base presente in una versione qualsiasi di Debian.

2.1.1 Installare software

Installare software è semplice, tutto quello che dovete fare è:

# apt-get install $software

o se usate aptitude:

# aptitude install $software

Se ricevete qualche messaggio che dice che il software non è stato trovato, assicuratevi di avere aggiornato il vostro elenco del software, con il comando update:

# apt-get update

o

# aptitude update

Senza perdere altro spazio, possiamo dire che tutto quello che si può fare con apt, lo si può fare allo stesso modo con aptitude.

2.1.2 Aggiornare il software

Diversamente da altri PM, la famiglia apt richiede due passaggi per aggiornare il software installato sul vostro sistema, di cui la prima parte vi è stata già illustrata. Ciò è considerato un vantaggio dai proprositori ed una perdita di tempo dagli impazienti, che dicono che un solo comando sarebbe più semplice. Chi scrive non prende posizioni e lascia a voi il compito di giudicare. Quindi senza altre divagazioni, ecco cosa dovete fare per aggiornare un sistema Debian:

# apt-get update && apt-get upgrade

Ora ecco la parte interessante: c'è anche un comando dist-upgrade ed anche aptitude supporta un avanzamento completo, che è un po' diverso e completo rispetto al comando upgrade. Si può dire invasivo, in quanto rimuoverà tutti i vecchi pacchetti, quando ci sono degli aggiornamenti importanti. Questo dipende anche dal tipo di distribuzione Debian abbiate. Se avete una stabile, potete effettuare l'avanzamento con semplicità e sicurezza, ma su sistemi meno stabili, questo potrebbe arrecare qualche dispiacere.

2.1.3 Cercare software

Non conoscete il nome esatto del pacchetto che volete installare? Potete installare sia "bash-completion" e scrivere "aptitude install $first_letters + Tab" o potete usare la funzione di ricerca offerta dagli strumenti di apt. Potete usare:

$ apt-cache search $search_term

o con aptitude:

$ aptitude search $search_term

Ancora una volta ricordate di digitare "update" prima di installare, in modo che il package manager sappia cosa è disponibile.

2.1.4 Rimuovere software

aptitude, come apt-get, supporta i comandi remove e purge per rimuovere il software. Mentre remove supporta la funzione basica di disinstallare, purge fa un ulteriore passo e cancella anche i file di configurazione specifici del pacchetto disinstallato. E' a vostra discrezione decidere caso per caso, quando usare remove e quando usare purge, dipendendo da diversi fattori.

2.2 yum

Alcuni di voi ricorderanno i giorni infernali delle dipendenze dei pacchetti RPM. Ora grazie a yum, quei giorni appartengono al passato e la installazione del software è diventata una cosa più semplice. Come gli altri package managers, yum supporta le funzioni basiche come installare e rimuovere il software, più .

2.2.1 Installare software

I comandi di base sono più o meno gli stessi discussi nelle parti riguardanti Debian. Quindi se, per esempio, volete installare jed, l'editor di testo, dovrete digitare:
# yum install jed
Loaded plugins: auto-update-debuginfo, langpacks, presto, refresh-packagekit 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package jed.i686 0:0.99.19-3.fc15 will be installed
--> Processing Dependency: slang-slsh for package: jed-0.99.19-3.fc15.i686
--> Running transaction check
---> Package slang-slsh.i686 0:2.2.4-1.fc16 will be installed
--> Processing Dependency: libonig.so.2 for package: slang-slsh-2.2.4-1.fc16.i686
--> Running transaction check
---> Package oniguruma.i686 0:5.9.2-2.fc15 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
================================================================================
 Package            Arch         Version                   Repository      Size
================================================================================
Installing:
 jed                i686         0.99.19-3.fc15            fedora         795 k
Installing for dependencies:
 oniguruma          i686         5.9.2-2.fc15              fedora         125 k
 slang-slsh         i686         2.2.4-1.fc16              fedora         165 k
Transaction Summary
================================================================================
Install       3 Packages
Total download size: 1.1 M
Installed size: 1.1 M
Is this ok [y/N]: y
Downloading Packages:
(1/3): jed-0.99.19-3.fc15.i686.rpm                       | 795 kB     00:02     
(2/3): oniguruma-5.9.2-2.fc15.i686.rpm                   | 125 kB     00:00     
(3/3): slang-slsh-2.2.4-1.fc16.i686.rpm                  | 165 kB     00:00     
--------------------------------------------------------------------------------
Total                                           268 kB/s | 1.1 MB     00:04     
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : oniguruma-5.9.2-2.fc15.i686                                  1/3 
  Installing : slang-slsh-2.2.4-1.fc16.i686                                 2/3 
  Installing : jed-0.99.19-3.fc15.i686                                      3/3 
Installed:
  jed.i686 0:0.99.19-3.fc15                                                     
Dependency Installed:
  oniguruma.i686 0:5.9.2-2.fc15          slang-slsh.i686 0:2.2.4-1.fc16         
Complete!

Questo è come figura l'output completo in Fedora 16. yum supporta anche il comando localinstall, che è molto utile se avete scaricato un pacchetto RPM in locale e lo volete installare.

2.2.2 Aggiornare il software

Come detto dianzi, i comandi sono pressoché simili, ma con yum non avete due comandi separati come li avete in apt*. Quindi il semplice comando "yum update" aggiornerà non solo i dati della repository, ma procederà anche ad aggiornare veramente i pacchetti se ci sono delle nuove versioni. Potete vedere se ci sono delle novità usando il comando check-update, che è molto simile ad "aptitude update" nel senso che aggiorna i dati, ma non i pacchetti.

2.2.3 Cercare software

Qualche tempo addietro la funzione di ricerca di yum offriva troppi risultati di poco rilievo e gli sviluppatori hanno aggiunto delle modifiche in modo che il risultato sia più consistente. Per avere ancora il risultato offerto in precedenza, basta digitare "search all" .

2.2.4 Rimuovere software

Se voglio rimuovere del software, naturalmente il comando è "yum remove". Questo rimuoverà il pacchetto e le sue dipendenze. Se doveste non voler seguire questa via, volendo trattenere le dipendenze (e per questo vi raccomandiamo molta attenzione), dovreste digitare:

# yum --nodeps remove jed

Il wiki di yum dice quanto segue a proposito di --nodeps, quindi state attenti: "--nodeps è usato solamente quando un pacchetto o un sistema è irrimediabilmente corrotto. Come regola generale non potete mettere una vite nel buco senza giravite, usando il martello." Naturalmente cercate di leggere il manuale di yum, che spiega tutte le opzioni che potete usare. Come con i text editors, il package manager è uno strumento di uso frequente, quindi è bene conoscere tutto di lui per essere il più efficaci possibile.

2.3 pacman

Il gestore dei pacchetti di Arch Linux è relativamente una novità, dato che anche la distribuzione è nuova, ma questo non significa che non siano disponibili le caratteristiche che si trovano in yum o zypper. Una differenza tra pacman ed i menzionati package manager è il fatto che non offre comandi come update o remove. Al loro posto l'utente usa una lettera singola per ottenere varie funzioni offerte da pacman. Un'altra differenza è che pacman è più veloce, ma potrebbe essere un dato soggettivo.

2.3.1 Installare software

Per installare jed su un sistema Arch, potete digitare:

# pacman -S jed

La -S sta per sync ed è anche usato per altre funzioni, come cercare software o aggiornare. All'inizio potrebbe sembrare illogico, ma la spiegazione nella pagina del manuale, vi lluminerà.

2.3.2 Aggiornare il software

pacman offre la scelta tra aggiornare i dati della repository e/o aggiornare il software esistente. Entrambe le opzioni sono usate congiuntamente con -S e sono accessibili con -y (ricarica la repository) e -u (upgrade software). Quindi per aggiornare i pacchetti installati, occorre digitare:

# pacman -Syu

Potete omettere -u se siete sicuri che la repository sia aggiornata, abbreviando il tempo di installazione.

2.3.3 Cercare software

Avrete ancora bisogno di -S per cercare il software, aggiungendo una "s" minuscola ad esso:

# pacman -Ss jed

2.3.4 Rimuovere software

Finalmente il flag -S esce di scena ed è sostituito da -R più il nome del pacchetto che avete intenzione di rimuovere. C'è il flag --nodeps, abbreviato in -d. pacman offre altre utili opzioni, ricordatevi quindi di leggere il manuale con il comando "man pacman".

2.4 Portage

Alcuni forse affermano che Portage non è un importante sistema di gestione dei pacchetti, ma in effetti non è così. Sebbene Gentoo non sia famoso come dovrebbe essere, ha un suo preciso posto nel mondo Linux e non ha intenzione di andare in nessun altro posto, con utenti che lo usano felicemente e non vogliono usare altro. Tuttavia, proprio come pacman, sebbene non sia facile come yum, offre capacità molto avanzate e richiede qualche tempo per essere imparato bene.

2.4.1 Installare software

Prima di tutto, se siete nuovi di Gentoo e Portage, vi raccomandiamo di usare le opzioni lunghe, piuttosto di quelle corte (come --help vs. -h), in quanto sono molto più descrittive. Dopo che avrete fatto più esperienza, potrete usare le forme più corte. Secondo, mentre viene spesso accennato a Portage, questo nome è usato per indicare strumenti relativi alla gestione dei pacchetti. Userete emerge come strumento principale di gestione dei pacchetti, ma ci saranno altri strumenti che potreste usare, tutti con riferimenti nelle pagine del manuale. Assicuratevi di usare --sync prima di installare il primo pacchetto, che è l'equivalente del comando update di aptitude. Quindi semplicemente emerge il pacchetto che volete:

 # emerge jed

Si, è così semplice. Ricordatevi che emerge è uno strumento molto complesso e potente e non possiamo fornirvi tutte le opzioni possibili, solo quelli basici, ma tutto quello che vi serve, dovrebbe esserci.

2.4.2 Aggiornare il software

Come apt* o pacman, emerge effettua gli aggiornamenti in due passaggi: prima aggiorna i dati dei pacchetti dall'host remoto con --sync, poi aggiorna il software installato con:

# emerge --update --deep world

Il comando di aggiornamento di cui sopra è la versione semplificata, ma ci sono anche altre opzioni che potete/dovete usare quando aggiornate, specialmente dato che Gentoo è source-based. Per esempio, se cambiate qualcosa etichettato USE dopo l'ultimo aggiornamento, è assai raccomandato l'uso di --newuse in modo che emerge stia attento ad effettuare i cambiamenti e possibilmente a ricompilare alcuni dei pacchetti in relazione a ciò (o tutti). Potete usare anche --ask se volete un messaggio di conferma prima che inizi l'aggiornamento o --verbose per un output più dettagliato. Quindi tutti i comandi e le opzioni descritte dianzi, saranno tradotte con:

# emerge -uDNav world

Portage non è solo uno strumento complesso, è anche ben documentato. Potete avere molte informazioni qui, ma il resto lo trovate nella guida a Portage.

2.4.3 Cercare software

emerge offre --search e --searhdesc per questo, e vi spiegherò quali sono le differenze tra i due. ecco un esempio: --search jed ci dice in quale categoria sia jed (app-editors e le categorie in Portage sono simili a quelle che si trovano ports/pkgsrc di BSD), informazioni sulla licenza, le versioni, ecc. Usando --searchdesc ci da più risultati, in quanto come dice il nome, emerge cercherà il testo di cui avete bisogno, ma richiede più tempo per farlo. Un paragone grossolano può essere la differenza tra search e search all in yum.

2.4.4 Rimuovere software

Poichè installare software si dice "emerging" nella lingua di Gentoo, è naturale dire "unmerge" quando lo si disinstalla. L'abitutdine comune è quella di lasciare le dipendenze, del tipo "--nodeps" che si fa in yum/rpm. Se si usa "--depclean" verranno rimosse tutte le dipendenze del pacchetto che viene disinstallato, ma per evitare incidenti, è bene sapere cosa si sta facendo, prima di rimuovere pacchetti importanti e danneggiare l'intero sistema.

3. Conclusione

Avrete notato che sono state trattate solo le funzioni base dei PM elencati. Lasciamo tutto il resto come esercizio dell'utente, dato che gli strumenti illustrati sono in grado di fare ben altro, come elencare il software installato. Raccomandiamo di allestire una macchina per i test, tipo una macchina virtuale e divertitevi con il vostro PM preferito.

***