Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

I Pacchetti: istruzioni per l'uso

Link copiato negli appunti

La prima cosa che si cerca di fare dopo aver installato (e configurato) un nuovo sistema operativo È probabilmente quella di cercare dei nuovi programmi che possano rimpiazzare quelli usati col nostro precedente OS. La domanda successiva che ci si pone È come vengono installati questi nuovi programmi con il nostro nuovo OS. Se si trattassero di programmi per Windows, non ci sarebbe nessun problema: nella quasi totalità dei casi basta decomprimere il programma e avviare setup (tutto questo cercando magari di evitare la spiacevole conoscenza di virus). Con Linux le cose cambiano, e per evitare che qualche utente alle prime armi perda i suoi giorni migliori nel cercare files con estensione exe da avviare, dedicheremo questo articolo all'installazione dei programmi per Linux.

L'installazione dei programmi sotto Linux può avvenire fondamentalmente in due modi: compilandoli (cfr. articolo Compilare un programma) oppure utilizzando dei pacchetti precompilati, se disponibili. Questi due metodi sono quelli più usati per i programmi OpenSource, anche se talvolta per alcuni programmi commerciali o per altri molto complessi (la cui compilazione richiederebbe un'annosa attesa) esiste una modalità molto simile al "setup.exe" di Windows (ad esempio utilizzano questo tipo di installazione programmi come StarOffice o OpenOffice). In un precedente articolo abbiamo già parlato di cosa consiste la compilazione di un programma, quindi non ci dilungheremo ulteriormente.

Fondamentalmente le distribuzioni si basano su due modelli: quello di Red Hat e quello di Debian. Queste due distribuzioni differiscono per diversi aspetti, primo tra tutti il tipo di pacchettizzazione. Da queste prendono il nome per esempio il tipo di pacchetto usato: l'RPM (Red Hat Package Manager) e DEB per l'appunto. Vi sono comunque distribuzioni come Slackware che continuano ad utilizzare un proprio tipo di pacchetti (il .tgz).

Qual È l'utilità di distribuire i programmi sotto forma di pacchetti precompilati? I motivi sono molti: primo tra tutti, in questo modo si dà la possibilità all'utente di avere a disposizione dei programmi già compilati (cosa non da poco che vi permetterà di risparmiare tempo prezioso e di evitare patimenti causati da dipendenze non soddisfatte o librerie fantasma). In secondo luogo questi sistemi di packaging hanno un proprio database con i pacchetti installati e il contenuto di ogni singolo pacchetto: grazie a questo l'installazione o la rimozione di un programma avviene in maniera molto pulita (cosa che non accade sempre con i programmi per Windows, che tendono a lasciare delle tracce, spesso tutt'altro che invisibili). Terzo, tramite questi, operazioni come l'aggiornamento e la manutenzione del sistema sono molto più agevoli e facilitate (basta un singolo comando per installare e disinstallare un pacchetto).

Inoltre, al contrario dei programmi compilati, grazie a un database interno si sa sempre cosa È installato su un sistema (files, versione di un programma, ecc.) in modo da rendere semplice l'aggiornamento.

Passiamo ora ad analizzare questi due package manager.

RPM Red Hat, nel voler portare un pò di facilità d'uso a quello che era un mondo riservato ad addetti ai lavori, quasi sempre programmatori, ha pensato di creare un proprio sistema di distribuzione dei programmi, l'RPM. Il programma utilizzato per la gestione di questo tipo di pacchetti si chiama, per l'appunto, rpm.

Il suo uso È molto semplice. Se ad esempio volessimo installare il programma wget-1.7-i586.rpm basterà usare:

lnxbox1:~# rpm -ivh wget-1.7-i586.rpm

Ovviamente se esso È presente in /root, altrimenti mettete il percorso completo. Le altre 2 opzioni, -vh, fanno visualizzare l'avanzamento dell'installazione.

Con l'opzione -i però rpm si aspetta che il programma che si vuole installare non sia già presente sul vostro sistema. Occorrerebbe quindi prima controllare che non sia già stato installato. Per aggiornare un pacchetto già presente si userà invece l'opzione -U. Tramite questa opzione rpm controllerà se il pacchetto sia già presente e provvederà, a seconda dei casi, ad aggiornarlo o ad installarlo da zero. Una volta installato il pacchetto, il programma sarà pronto per l'uso, non sarà quindi necessario riavviare, come si fa regolarmente con altri sistemi operativi.

Una piccola nota riguardo il nome del file: solitamente i file distribuiti sotto forma di pacchetti (rpm o deb) contengono al loro interno la versione (1.7) e il tipo di processore per i quali sono stati compilati (i586, corrispondente ai Pentium compatibili). Un programma compilato con le ottimizzazioni per Pentium non girerà su un 386 (mentre rimane sempre possibile il contrario), quindi attenzione alla versione che installate.

Se una volta installato il programma vorreste cancellarlo, potete sempre farlo sempre con rpm, che provvederà a eliminare ogni traccia. L'opzione da utilizzare in questo caso È -e nomepacchetto. Ad esempio:

lnxbox1:~# rpm -e wget

Eliminerà il programma wget dal nostro sistema.

Talvolta però può capitare che un pacchetto sia necessario per il corretto funzionamento di altri programmi o sia esplicitamente richiesto da altri pacchetti (dipendenza). In quest'ultimo caso, rpm vi avvertirà dicendovi che È impossibile continuare in quanto il pacchetto È essenziale per altri. Se non avete bisogno neanche degli altri pacchetti allora potrete cancellarli tutti inserendoli come argomento a rpm -e. Esiste tuttavia la possibilità di "forzare" l'eliminazione di un pacchetto senza che vengano prima controllate le dipendenze. Si tratta comunque di un'operazione da evitare, perché potrebbe compromettere seriamente l'usabilità del vostro sistema. Questa opzione È da fare usare solo ed esclusivamente ad utenti esperti che sanno con certezza cosa stanno facendo. Ad esempio:

lnxbox1:~# rpm -e --nodeps glibc

Cancellerà il pacchetto glibc rendendo praticamente inutilizzabile il vostro sistema (la soluzione più veloce sarà reinstallare la distribuzione...). Quindi, mi raccomando, non fatelo.

Un altra opzione molto utile può essere -q che controllerà la presenza di un pacchetto nel database. Può essere unita ad altre opzione per darci delle preziose informazione come i file che costituiscono un certo file .rpm, i pacchetti che lo richiedono, chi l'ha fatto, una sua descrizione, ecc. Ad esempio:

lnxbox1:~# rpm -ql wget

Ci fornirà la lista dei file che sono contenuti nel pacchetto wget. Un'altra opzione utile È -i grazie alla quale potremo sapere chi ha creato il pacchetto, la versione, la dimensione, l'url a cui fa riferimento e una sua breve descrizione. È possibile anche ricavare queste informazioni da un file .rpm non ancora installato utilizzando l'opzione -p. Esempio:

lnxbox1:~# rpm -qpi wget-1.7-i586.rpm

È può anche avere una lista dei pacchetti installati tramite l'opzione -qa, ad esempio:

lnxbox1:~# rpm -qa

Ci dirà tutti i pacchetti installati sul nostro sistema (probabilmente sarà utile filtrare l'output con |less).

Se invece volessimo sapere a quale pacchetto appartiene un determinato file installato sul nostro PC potremo usare l'opzione -qf /percorso/nomefile. Ad esempio per conoscere qual È il pacchetto che contiene il file /usr/bin/head dovremo scrivere:

lnxbox1:~# rpm -qf /usr/bin/head textutils-2.0-10mdk

Talvolta però l'rpm viene anche usato per distribuire codice sorgente. Se vi capiterà di imbattervi in un file .src.rpm niente paura, si tratta di un programma da compilare. Per compilarlo e creare in maniera del tutto automatica un file .rpm potrete usare:

lnxbox1:~# rpm --rebuild file-versione.src.rpm

Talvolta però la risoluzione delle dipendenze può causare qualche problema anche se si usano dei pacchetti precompilati, soprattutto se si ha a che fare con programmi molto complessi. Se si È sicuri di avere tutti i pacchetti necessari per l'installazione di un programma, allora basterà fornire come parametro tutti gli rpm. Ad esempio:

lnxbox1:~# rpm -Uvh gnorpm-0.96-1mdk.i586.rpm libghttp1-1.0.9-1mdk.i586.rpm

installerà gnorpm e libghttp (libreria richiesta da gnorpm).

Se non si ha la minima idea del pacchetto in cui risiede un file richiesto da un rpm (rpm ci avverte della mancanza di un file necessario a un pacchetto, no del pacchetto che lo contiene), si può fare una veloce ricerca su www.rpmfind.net, un motore di ricerca per rpm.

Altra soluzione, se si usa come distribuzione Mandrake, È quella di utilizzare urpmi, una versione intelligente e migliorata di rpm -i, che provvederà a risolvere correttamente le dipendenze. Tutto quello che dovrete fare È scrivere:

lnxbox1:~# urpmi nomepacchetto

Se sarà necessario provvederà a installare i pacchetti mancanti, chiedendovi di inserire il CDROM di Mandrake che li contiene. È anche possibile configurarlo per scaricare gli rpm da un FTP o un sito Web. Assieme a urpmi viene fornito anche urpme, grazie al quale potrete cancellare un pacchetto e tutti quelli che vi dipendono. Ovviamente prima di procedere urpme vi chiederà conferma.

DEB

L'rpm però non È l'unico formato in cui possono essere distribuiti dei pacchetti. Un altro package manager usato dagli utenti di e distribuzioni basate su quest'ultima (come l'ormai ex Corel Linux) È il deb. Anche questo tipo di pacchetti utilizza un proprio database per il riconoscimento dei pacchetti installati (anche se differisce la struttura di un pacchetto rpm da un deb, che È leggermente più complesso). In più Debian può vantare un eccellente strumento per l'installazione e la manutenzione dei programmi, apt. APT È in grado di installare, risolvendo tutte le dipendenze, un programma, utilizzando come fonte anche Internet.

APT È utilissimo anche per l'aggiornamento del proprio sistema: È in grado infatti di riconoscere da solo la presenza di aggiornamenti su Internet. Rimane comunque possibile fare a meno di APT, continuando a utilizzare dpkg (anche se personalmente non ne vedo la necessità).

Dpkg, come rpm, È in grado di installare un pacchetto, cancellarlo, aggiornarlo o visualizzare delle informazioni su di esso. Per installare o aggiornare un pacchetto ad esempio dovremo scrivere:

lnxbox1:~# dpkg -i nomepacchetto.deb

Se volessimo invece disinstallare un programma scriveremo:

lnxbox1:~# dpkg -r nomepacchetto

Eliminerà il programma associato a nomepacchetto. L'opzione -r non provvederà comunque a cancellare totalmente il programma: file come quelli di configurazione verranno lasciati. Se volessimo cancellare anche questi potremo utilizzare --purge.

Per avere maggiori informazioni sul contenuto di un pacchetto useremo l'opzione -p. Ad esempio:

lnxbox1:~# dpkg -p wget

Per avere una lista completa dei pacchetti installati su un sistema È possibile utilizzare l'opzione -l, mentre con -S /percorso/file cercheremo quale pacchetto contiene quel file. Esempi:

lnxbox1:~# dpkg -l

Restituirà come output i pacchetti installati o non completamente rimossi, riportando anche lo stato.

lnxbox1:~# dpkg -S /usr/bin/wget

Restituirà come output:

wget: /usr/bin/wget

L'uso di APT semplifica queste operazioni. Il suo funzionamento si basa su un database di pacchetti che viene aggiornato online direttamente dal sito di Debian o da un suo mirror. È anche possibile tramite APT, aggiornare a una versione successiva di Debian, se uscita in versione stabile, oppure utilizzare una unstable o testing (le versioni di sviluppo di Debian, sempre aggiornate, ma anche abbastanza stabili, a scapito del nome). Il file a cui fare riferimento, con all'interno "le fonti" da cui prendere i files aggiornati, È /etc/apt/sources.list.

È possibile aggiungerne altri con il comando apt-setup. Quelli proposti sono tutti dei mirror ufficiali di debian, ma se ne trovano sulla Rete anche di non ufficiali (come quelli di KDE o GNOME). In ogni riga di questo file È presente anche la versione della vostra distribuzione. Al momento della scrittura di quest'articolo le versioni di Debian disponibili sono: Potato (la versione stabile), Woody (la versione di test, che verrà rilasciata come stabile prossimamente, sostituendo Potato) e Sid (la versione "instabile"). Ognuna di queste ha i suoi vantaggi: in Potato troveremo soltanto pacchetti considerati ragionevolmente sicuri, ma spesso poco aggiornati (il suo uso È destinato ai server); in Sid invece troveremo tutte le ultime versioni dei programmi, scaricabili dalla Rete: sulla loro stabilità non garantisce nessuno. Se voleste passare a una versione successiva alla vostra, dovrete sostituire nel file /etc/apt/sources.list in ogni riga potato a woody o sid, a seconda di cosa avete scelto.

A questo punto dovrete aggiornare il database dei pacchetti scrivendo:

lnxbox1:~# apt-get update

È conveniente fare questa operazione ogni qual volta si voglia aggiornare la propria distribuzione, o installare un nuovo programma. Se ad esempio volessimo aggiornare la nostra distribuzione dovremo scrivere:

lnxbox1:~# apt-get dist-upgrade

Se decideste di passare a una versione successiva di Debian È bene che sappiate che l'aggiornamento spesso richiede lo scaricamento di centinaia di megabytes di file .deb aggiornati. Inoltre essendo versioni non ritenute stabili, vengono rilasciati giornalmente degli aggiornamenti, che È sempre consigliabile scaricare e installare (utilizzando come al solito apt-get update seguito da un apt-get dist-upgrade).

Per installare un programma useremo invece:

lnxbox1:~# apt-get install nomepacchetto

Questo comando provvederà anche a soddisfare tutte le dipendenze. Per cancellare un programma potremo usare apt-get remove nomepacchetto, accompagnato dall'opzione --purge se volessimo rinunciare anche ai file di configurazione. Ad esempio:

lnxbox1:~# apt-get remove --purge sendmail

Se il pacchetto che vogliamo disinstallare È un pacchetto necessario per altri programmi, APT ci avvertirà chiedendoci se vogliamo proseguire.

Un altro comando molto interessante È apt-cache. Con apt-cache potremo interrogare il database, controllando per esempio la presenza di un pacchetto o la sua descrizione. Ad esempio se cercassimo un player di file MP3, ma non abbiamo alcuna idea su quale installare potremo usare il comando:

lnxbox1:~# apt-cache search mp3

Che ci restituirà come output tutti i programmi che hanno a che fare (spesso anche lontanamente) con quel tipo di formato audio. Se una volta individuato un pacchetto, volessimo avere maggiori informazioni su questo potremo usare il comando apt-cache show nomepacchetto. Ad esempio:

lnxbox1:~# apt-cache show mpg123

Ci fornirà una dettagliata descrizione su mpg123.

E se necessitassimo di un file senza sapere in che pacchetto si trova? Per questo esiste online un ottimo motore di ricerca sul sito di Debian (search.debian.org) che ci permetterà di sapere, dato il nome di un file (anche scritto parzialmente) il pacchetto corrispondente. Una volta scoperto il file che ci serve, È possibile con apt-get install nomepacchetto, scaricarlo automaticamente e installarlo.

Esistono anche dei front-end grafici a questi due strumenti. Tra questi vi ricordiamo: kpackage, gnome-apt e gnorpm. Sono dei programmi molto intuitivi, che cercano di aggiungere maggiore usabilità a questi due potentissimi programmi.

In questo articolo abbiamo introdotto i due tipi di package manager maggiormente usati per installare un programma. Per avere una padronanza assoluta dei due È necessaria molta pratica. Il loro uso È spesso caldamente consigliato, perché può rappresentare un'ottima soluzione ai problemi di compilazione che potrete avere durante l'installazione di un programma.

Ti consigliamo anche