Handbook:Parts/Working/Portage/it

Benvenuto in Portage
Portage è una delle innovazioni più notevoli di Gentoo per quanto riguarda la gestione del software. Grazie alla sua grande flessibilità e all'enorme quantità di caratteristiche, è frequentemente considerato il miglior strumento di gestione del software disponibile per Linux.

Portage è scritto completamente in Python e Bash e di conseguenza è completamente visibile dagli utenti in quanto entrambi sono linguaggi per lo scripting.

La maggior parte degli utenti lavorerà con Portage tramite lo strumento. Questo capitolo non è pensato per duplicare le informazioni disponibili tramite la pagina man di emerge. Per un resoconto completo delle opzioni di emerge, per favore si consulti la pagina man:

Ebuild
Quando la documentazione di Gentoo parla dei pacchetti, intende i titoli dei software che sono disponibili per gli utenti di Gentoo attraverso il repository di Gentoo. Questo repository è una raccolta di ebuild, file che contengono tutte le informazioni di cui Portage abbisogna per mantenere il software (installazione, ricerca, ecc.). Queste ebuild risiedono normalmente nel percorso.

Ogni qual volta qualcuno chiede a Portage di effettuare una certa azione riguardante dei titoli software, userà le ebuild nel sistema come base. Di conseguenza, è importante aggiornare regolarmente le ebuild nel sistema così che Portage venga a conoscenza del nuovo software, degli aggiornamenti di sicurezza, ecc.

Aggiornamento del repository di Gentoo
Il repository di Gentoo è solitamente aggiornato tramite, una veloce utilità incrementale di trasferimento dei file. L'aggiornamento è piuttosto semplice in quanto il comando fornisce un front-end per :

Talvolta vengono applicate restrizioni sul firewall tali da impedire a di contattare i mirror. In questo caso, si aggiorni il repository di Gentoo tramite le istantanee (snapshot) di Gentoo generate quotidianamente. Lo strumento ottiene ed installa automaticamente l'istantanea più recente sul sistema:

Un vantaggio aggiuntivo quando si usa consiste nel permettere all'amministratore di scaricare solo le istantanee del repository di Gentoo che sono firmate con la chiave GPG dell'ingegneria dei rilasci di Gentoo. Per ulteriori informazioni, consultare le sezioni che trattano le caratteristiche di Portage in ottenere le istantanee convalidate del repository di Gentoo.

Ricerca del software
Ci sono vari modi per cercare software nel repository di Gentoo. Una possibilità è tramite stesso. Predefinitamente, restituisce i nomi dei pacchetti il cui titolo corrisponde (completamente o parzialmente) alla stringa di ricerca inserita.

Per esempio, per cercare tutti i pacchetti che contengono "pdf" nel loro nome:

Per cercare anche nelle descrizioni, usare l'opzione  (o  ):

Si noti che vengono restituite un sacco di informazioni. I campi sono etichettati chiaramente quindi non andremo ulteriormente nei dettagli circa i loro significati:

Installazione del software
Una volta trovato un certo software, si è ad appena un comando di distanza dall'installazione vera e propria. Per esempio, per installare gnumeric:

Poiché molte applicazioni dipendono l'una dall'altra, qualunque tentativo di installare un certo software potrà risultare anche nell'installazione di numerose dipendenze. Non ci si preoccupi, Portage gestisce bene le dipendenze. Per scoprire cosa installerebbe Portage, aggiungere l'opzione. Per esempio:

Durante l'installazione di un pacchetto, Portage scaricherà il codice sorgente necessario da Internet (se necessario) e lo metterà in. Dopodiché spacchetterà, compilerà ed installerà il pacchetto. Per dire a Portage di scaricare solamente il sorgente senza installarlo, aggiungere l'opzione  al comando emerge:

Trovare la documentazione dei pacchetti installati
Molti pacchetti possiedono una loro documentazione. Talvolta, l'opzione USE  determina se la documentazione di un pacchetto debba essere installata oppure no. Per vedere se l'opzione USE   viene usata da un certo pacchetto, usare :

Il miglior modo per abilitare l'opzione USE  per  un certo pacchetto è tramite, così che venga installata solo la documentazione per i pacchetti voluti. Per ulteriori informazioni, consultare la sezione Opzioni USE del manuale.

Una volta installato il pacchetto, la sua documentazione si trova generalmente in una sotto cartella che si chiama come il pacchetto nel percorso :

Un modo più sicuro per elencare i file installati della documentazione è usare l'opzione  di. viene usato per cercare nel database di Portage ed è parte del pacchetto :

L'opzione  può essere usata con altre regole per vedere i percorsi di installazione per molti tipi di file. Si possono vedere ulteriori funzionalità nella pagina man di :.

Rimozione del software
Per rimuovere il software da un sistema, usare. Ciò dirà a Portage di rimuovere dal sistema tutti i file installati da quel pacchetto. Un'eccezione a ciò sono tutti i file di configurazione di quell'applicazione "se" sono stati modificati dall'utente. Lasciare i file di configurazione permette agli utenti di continuare a lavorare con il pacchetto senza bisogno di riconfigurarlo se viene reinstallato successivamente.

Quando un pacchetto viene rimosso dal sistema, le dipendenze di quel pacchetto che sono state installate automaticamente quando era stati installato vengono lasciate intatte nel sistema. Per far sì che Portage individui tutte le dipendenze che ora possono essere rimosse, usare la funzionalità  di emerge, che verrà discussa in seguito.

Aggiornamento del sistema
Per mantenere il sistema in forma perfetta (senza contare l'installazione degli aggiornamenti di sicurezza più importanti) è necessario aggiornare regolarmente il sistema. Poiché Portage controlla solo le ebuild nel repository di Gentoo, la prima cosa da fare è aggiornare questo repository. Quando il repository di Gentoo viene aggiornato, il sistema può essere aggiornato usando. Nell'esempio successivo, viene usata anche l'opzione, che dirà a Portage di mostrare la lista dei pacchetti che vuole aggiornare e di chiedere conferma:

Portage cercherà poi versioni più recenti delle applicazioni che sono installate. Tuttavia, verificherà solo le versioni per le applicazioni che sono esplicitamente installate (le applicazioni elencate in ) - non controllerà accuratamente le loro dipendenze. Per aggiornare anche le dipendenze di quei pacchetti, aggiungere l'opzione :

Ciò non significa ancora tutti i pacchetti: alcuni pacchetti nel sistema sono necessari durante la compilazione e la costruzione di alcuni pacchetti, ma una volta che il pacchetto viene installato, queste dipendenze non sono più richieste. Portage le chiama dipendenze di costruzione. Per comprenderle in un ciclo di aggiornamento, aggiungere :

Poiché gli aggiornamenti di sicurezza coinvolgono anche pacchetti che non sono esplicitamente installati nel sistema (ma che sono scaricati come dipendenze di altri programmi), viene raccomandato di eseguire questo comando una volta ogni tanto.

Se le impostazioni USE del sistema sono state alterate, è raccomandato di aggiungere anche. Portage allora verificherà se il cambio richiede l'installazione di nuovi pacchetti o la ricompilazione di alcuni di quelli esistenti:

Metapacchetti
Alcuni pacchetti nel repository di Gentoo non hanno alcun contenuto reale ma sono usati per installare una raccolta di pacchetti. Per esempio, il pacchetto installerà un ambiente KDE completo nel sistema semplicemente scaricando vari pacchetti relativi a KDE come dipendenze.

Per rimuovere un pacchetto del genere dal sistema, eseguire sul pacchetto non avrà molto effetto in quanto le dipendenze rimarranno nel sistema.

Portage possiede la capacità di rimuovere anche le dipendenze rimaste orfane, ma poiché la disponibilità del software è dipendente in maniera dinamica è importante per prima cosa aggiornare completamente il sistema, comprendendo i nuovi cambiamenti applicati quando si cambiano le opzioni USE. Una volta fatto ciò, si esegua per rimuovere le dipendenze rimaste orfane. Una volta fatto ciò, potrebbe essere necessario ricostruire le applicazioni che erano collegate dinamicamente ai pacchetti ora rimossi, ma che ora non sono più richiesti, benché sia stato aggiunto supporto a Portage per questo recentemente.

Tutto ciò viene gestito con i seguenti tre comandi:

è fornito dal pacchetto ; non dimenticarsi di installarlo:

Licenze
A partire dalla versione 2.1.7 di Portage, è possibile accettare o rifiutare l'installazione del software in base alla sua licenza. Tutti i pacchetti nell'albero contengono una variabile LICENSE nelle loro ebuild. L'esecuzione di mostrerà la licenza del pacchetto.

Normalmente, Portage dà il consenso a tutte le licenze, ad eccezione degli Accordi di Licenza con l'Utente Finale (End User License Agreements - EULAs) che richiedono la lettura e la firma di un accordo di accettazione.

La variabile che controlla le licenze consentite viene chiamata ACCEPT_LICENSE, che può essere impostata nel file. Nell'esempio seguente, viene mostrato il suo valore predefinito:

Con questa configurazione, i pacchetti che richiedono l'interazione dell'utente durante l'installazione per approvare gli accordi di licenza non saranno installabili. I pacchetti senza un accordo di licenza saranno invece installabili.

È possibile impostare ACCEPT_LICENSE globalmente in, oppure specificarla per ciascun pacchetto nel file.

Per esempio, per dare il consenso alla licenza per il pacchetto, aggiungere quanto mostrato di seguito nel file :

Questo permette l'installazione del pacchetto, ma proibisce l'installazione del pacchetto , anche se ha la stessa licenza.

I gruppi di licenze definiti nella variabile ACCEPT_LICENSE hanno un prefisso con un carattere. Un'impostazione richiesta comunemente è di permettere solamente l'installazione del software libero e della documentazione. Per ottenere ciò, rimuovere tutte le licenze attualmente accettate (usando ) e poi permettere solo le licenze nel gruppo FREE come mostrato di seguito:

In questo caso, il termine "libero" è definito principalmente da FSF e OSI. Qualunque pacchetto la cui licenza non presenta questi requisiti non sarà installabile nel sistema.

Terminologia
Come affermato precedentemente, Portage è estremamente potente e supporta molte caratteristiche di cui sono privi altri strumenti di gestione del software. Per comprenderle, spiegheremo alcuni aspetti di Portage senza entrare troppo nei dettagli.

Con Portage, possono coesistere diverse versioni di un singolo pacchetto su un sistema. Mentre altre distribuzioni tendono a chiamare i loro pacchetti con quelle versioni (come freetype e freetype2), Portage usa una terminologia denominata SLOT. Un'ebuild dichiara un certo SLOT per la sua versione. Possono coesistere ebuild con diversi SLOT nello stesso sistema. Per esempio, il pacchetto freetype ha ebuild con SLOT="1" e SLOT="2".

Ci sono anche pacchetti che forniscono la stessa funzionalità ma che sono implementati in maniera diversa. Per esempio, metalogd, sysklogd, e syslog-ng sono tutti logger di sistema. Le applicazioni che si basano sulla disponibilità di un "logger di sistema" non possono dipendere, per esempio, da metalogd, in quando gli altri logger di sistema sono anch'essi una buona scelta. Portage permette di usare logger virtuali: ogni logger di sistema viene elencato come dipendenza "esclusiva" del servizio di logging nel pacchetto virtuale del logger della categoria virtuale, così che le applicazioni possano dipendere dal pacchetto. Una volta installato, il pacchetto si prenderà il primo pacchetto di logging menzionato nel pacchetto, a meno che non sia già stato installato un pacchetto di logging (nel cui caso il logger virtuale è soddisfatto).

Il software nel repository di Gentoo può risiedere in rami diversi. Normalmente il sistema accetta solo pacchetti che Gentoo definisce stabili. La maggior parte del software nuovo, una volta caricato, viene aggiunto al ramo di prova, per far capire che serve testarlo più a lungo prima di poterlo segnalare stabile. Benché le ebuild per quel software siano nel repository di Gentoo, Portage non le aggiornerà prima che siano poste nel ramo stabile.

Qualche software è disponibile solo per poche architetture. O il software non funziona su altre architetture, o ha bisogno di più test, oppure lo sviluppatore che ha aggiunto il software al repository di Gentoo non è in grado di verificare se il pacchetto funziona su architetture diverse.

Ogni installazione di Gentoo aderisce anche ad un certo profilo che contiene, tra le altre cose, la lista dei pacchetti che sono richiesti perché un sistema funzioni normalmente.

Pacchetti bloccati
Le ebuild contengono campi specifici che informano Portage circa le loro dipendenze. Ci sono due dipendenze possibili: dipendenze di costruzione, dichiarate nella variabile DEPEND e dipendenze per l'esecuzione, dichiarate similmente in RDEPEND. Quando una di queste dipendenze marca esplicitamente un pacchetto o un pacchetto virtuale come non compatibile, innesca un blocco.

Mentre le versioni recenti di Portage sono abbastanza intelligenti da eludere i blocchi minori senza l'intervento dell'utente, occasionalmente tali blocchi devono essere risolti manualmente.

Per rimuovere un blocco, gli utenti possono scegliere di non installare il pacchetto o di disinstallare prima il pacchetto in conflitto. Nell'esempio dato, si può optare di non installare postfix o di rimuovere prima ssmtp.

Talvolta ci sono anche pacchetti bloccanti con specifiche atomiche, come per esempio. In questo caso, l'aggiornamento dello stesso ad una versione più recente potrebbe rimuovere il blocco.

È anche possibile che due pacchetti che devono ancora essere installati si blocchino fra loro. In questo raro caso, si tenti di scoprire perché debbano essere installati entrambi. Nella maggior parte dei casi, è sufficiente farlo con uno solo dei pacchetti. Se così non fosse, si segnali cortesemente un errore nel sistema di tracciamento degli errori di Gentoo.

Pacchetti mascherati
Questi errori di mascheramento avvengono quando si tenta di installare un pacchetto che non è disponibile per il sistema. Gli utenti dovrebbero cercare di installare un'applicazione diversa che è disponibile per il sistema oppure attendere finché il pacchetto non viene marcato come disponibile. C'è sempre una ragione per la quale un pacchetto viene mascherato:

Modifiche necessarie alle opzioni USE
The error message might also be displayed as follows, if  isn't set:

Tale avvertimento od errore avviene quando si richiede di installare un pacchetto che non solo dipende da un altro pacchetto, ma che richiede anche che quel pacchetto sia compilato con un'opzione USE particolare (od un insieme di opzioni USE). Nell'esempio, il pacchetto app-text/feelings ha deve essere compilato con USE="test", ma questa opzione USE non è impostata nel sistema.

Per risolvere tale problema, si aggiunga l'opzione USE richiesta alle opzioni USE globali in, oppure impostarla per lo specifico pacchetto in.

Missing dependencies
The application to install depends on another package that is not available for the system. Please check Bugzilla if the issue is known and if not, please report it. Unless the system is configured to mix branches, this should not occur and is therefore a bug.

Ambiguous ebuild name
The application that is selected for installation has a name that corresponds with more than one package. Supply the category name as well to resolve this. Portage will inform the user about possible matches to choose from.

Dipendenze circolari
Due (o più) pacchetti da installare dipendono l'uno dall'altro e di conseguenza non possono essere installati. Ciò è probabilmente dovuto ad un errore in uno dei pacchetti nel repository di Gentoo. Si prega di effettuare nuovamente la sincronizzazione dopo un po' e riprovare di nuovo. Potrebbe essere anche utile controllare Bugzilla per vedere se il problema è noto e se non lo è, riportarlo.

Acquisizione (fetch) fallita
Portage non è stato in grado di scaricare i sorgenti per una certa applicazione e continuerà ad installare le altre applicazioni (se possibile). Questo fallimento può essere dovuto ad un mirror che non è stato sincronizzato correttamente oppure perché l'ebuild punta ad una posizione non corretta. Il server in cui risiedono i sorgenti può anche essere guasto per qualche ragione.

Ritentare dopo un'ora per vedere se il problema persiste.

Protezione del profilo di sistema
L'utente ha richiesto di rimuovere un pacchetto che è parte dei pacchetti del nucleo del sistema. È elencato nel profilo come richiesto e di conseguenza non dovrebbe essere rimosso dal sistema.

Fallimento nella verifica del digest
Questo indica che c'è qualcosa che non va con il repository di Gentoo - spesso, causato da un errore fatto quando si inserisce un ebuild nel repository delle ebuild di Gentoo.

Quando la verifica del digest fallisce, non tentare di effettuare il digest nuovamente di persona. Eseguire non risolverà il problema; potrebbe anzi renderlo peggiore.

Al contrario, attendere un'ora o due affinché il repository si sistemi. È probabile che l'errore sia già stato notato, ma la soluzione può impiegare un po' di tempo prima che arrivi nei mirror rsync. Controllare Bugzilla e vedere se qualcuno ha già riportato il problema o chiedere in giro su (IRC). Se il problema non è noto, proseguire e presentare istanza del problema per l'ebuild corrotta.

Una volta che l'errore è stato risolto, ri-sincronizzare il repository delle ebuild di Gentoo per ottenere il digest riveduto.