Handbook:Parts/Working/Portage/it

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

Portage è scritto completamente in Python e Bash e di conseguenza è completamente visibile agli utenti in quanto entrambi sono linguaggi di 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 di pacchetti, intende i titoli dei software che sono disponibili per gli utenti di Gentoo attraverso il repositorio di Gentoo (repository). Questo repositorio è una raccolta di ebuild, ovvero file che contengono tutte le informazioni di cui Portage necessita per mantenere il software (installazioni, ricerche, interrogazioni, ecc.). Queste ebuild risiedono normalmente nel percorso.

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

Aggiornare il repositorio di Gentoo
Il repositorio di Gentoo è solitamente aggiornato tramite, una veloce utilità di trasferimento file incrementale. L'aggiornamento è piuttosto semplice in quanto il comando fornisce un front-end (interfaccia utente) per :

Talvolta vengono applicate restrizioni tramite firewall tali da impedire a di contattare i mirror. In questo caso, si aggiorni il repositorio di Gentoo tramite le istantanee (snapshot) di Gentoo generate quotidianamente. Lo strumento preleva 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 repositorio di Gentoo firmate con la chiave GPG dell'ingegneria dei rilasci di Gentoo. Per ulteriori informazioni, consultare le sezioni che trattano le caratteristiche di Portage su Istantanee convalidate del repository di Gentoo.

Ricerca del software
Ci sono vari modi per cercare del software nel repositorio di Gentoo. Un modo è tramite stesso. In via predefinita, restituisce i nomi dei pacchetti il cui titolo corrisponde (completamente o parzialmente) al termine di ricerca inserito.

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 l'output restituisce molte informazioni. I campi sono chiaramente etichettati perciò non approfondiremo il loro significato:

Installazione del software
Quando un titolo di un software viene trovato, allora l'installazione dista giusto ad un comando di. Per esempio, per installare gnumeric:

Poiché molte applicazioni dipendono l'una dall'altra, qualunque tentativo di installare un certo software potrà anche comportare l'installazione di numerose dipendenze. Non serve preoccuparsene, 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 conserverà su. Dopodiché spacchetterà, compilerà ed installerà il pacchetto. Per dire a Portage di scaricare solamente i sorgenti senza installarli, 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 presente su e nominata con il nome del pacchetto:

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

L'opzione  può essere usata con altre regole per vedere i percorsi di installazione di molti altri tipi di file. Ulteriori funzionalità sono documentate 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.

Aggiornare il sistema
Per mantenere il sistema in perfetta forma (per non contare l'installazione degli aggiornamenti di sicurezza più recenti) è necessario aggiornare regolarmente il sistema. Poiché Portage controlla solo le ebuild nel repositorio di Gentoo, la prima cosa da fare è aggiornare proprio questo. Quando il repositorio di Gentoo risulta aggiornato, può essere aggiornato il sistema usando. Nell'esempio successivo, viene usata anche l'opzione, che specifica a Portage di mostrare la lista dei pacchetti da aggiornare e di chiedere conferma:

Portage passerà a cercare versioni più recenti delle applicazioni installate. Tuttavia, verificherà solo le versioni delle applicazioni che sono state esplicitamente installate (le applicazioni elencate in ) - non controllerà a fondo tutte 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 altri pacchetti, ma una volta che il pacchetto viene installato, queste dipendenze non sono più necessarie. Portage le chiama dipendenze di costruzione. Per includerle in un ciclo di aggiornamento, aggiungere :

Poiché gli aggiornamenti di sicurezza capitano anche per i pacchetti non esplicitamente installati nel sistema (ma tirati dentro come dipendenze di altri programmi), è raccomandato eseguire questo comando una volta ogni tanto.

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

Metapacchetti
Alcuni pacchetti nel repositorio di Gentoo non hanno un effettivo contenuto, ma sono usati per installare una raccolta di pacchetti. Per esempio, il pacchetto installerà nel sistema un ambiente KDE completo 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 anche la capacità di rimuovere le dipendenze rimaste orfane, ma poiché la disponibilità del software presenta dipendenze dinamiche, per prima cosa è importante aggiornare completamente il sistema, inclusi i nuovi cambiamenti applicati al variare delle opzioni USE. Fatto questo, si esegua per rimuovere le dipendenze rimaste orfane. Fatto anche questo, potrebbe essere necessario ricompilare le applicazioni che erano dinamicamente collegate ai pacchetti ora rimossi, ma non più richiesti, benché recentemente sia stato aggiunto a Portage del supporto per questo.

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 voce LICENSE nelle loro ebuild. Eseguire 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 permesse 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 accettare la propria licenza EULA non saranno installabili. Invece, i pacchetti senza una licenza EULA saranno installabili.

È possibile impostare ACCEPT_LICENSE globalmente su, oppure specificarla per ciascun pacchetto tramite 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 che è il simbolo. Un'impostazione comunemente richiesta è permettere solamente l'installazione di software e documentazione liberi. 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. Qualsiasi pacchetto la cui licenza non soddisfa questi requisiti non sarà installabile nel sistema.

Terminologia
Come affermato in precedenza, 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 il numero di versione (come freetype e freetype2), Portage usa una tecnologia chiamata SLOT (fessura). 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 modo diverso. Per esempio, metalogd, sysklogd, e syslog-ng sono tutti logger (registratori di eventi) 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 valida scelta. Portage permette di usare logger virtuali: ogni logger di sistema viene elencato come una dipendenza "esclusiva" del servizio di logging (registrazione eventi) nel pacchetto virtuale logger dalla categoria virtuale, così che le applicazioni possano dipendere dal pacchetto. Una volta installato, il pacchetto rappresenterà il primo pacchetto di logging menzionato in esso, a meno che non sia stato già installato un pacchetto di logging (in tal caso quello virtuale risulta soddisfatto).

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

Alcuni software sono disponibili solo per poche architetture. Magari il software non funziona su altre architetture, oppure ha bisogno di più prove, oppure lo sviluppatore che ha aggiunto il software al repositorio di Gentoo non è in grado di verificare se il pacchetto funziona su architetture diverse.

Ogni installazione di Gentoo aderisce anche ad un determinato profilo che contiene, tra le altre informazioni, l'elenco dei pacchetti necessari affinché un sistema funzioni normalmente.

Pacchetti bloccati
Le ebuild contengono campi specifici che informano Portage sulle 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 segnala esplicitamente un pacchetto effettivo o virtuale come non compatibile, innesca un blocco.

Sebbene 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 risolvere 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 parti specifiche non divisibili, come per esempio. In questo caso, l'aggiornamento dello stesso ad una versione più recente potrebbe rimuovere il blocco.

È anche possibile che due pacchetti ancora da installare si blocchino fra loro. In questo raro caso, si tenti di scoprire perché debbano essere installati entrambi. Nella maggior parte dei casi, è sufficiente procedere 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 delle opzioni USE
Il messaggio di errore potrebbe anche essere mostrato come segue, se  non è impostato:

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.

Dipendenze mancanti
L'applicazione da installare dipende da un altro pacchetto che non è disponibile per il sistema. Si controlli per favore su Bugzilla per vedere se il problema è noto e se così non fosse, lo si riporti. A meno che il sistema non sia configurato per mescolare i rami, questo problema non dovrebbe avvenire e di conseguenza è un errore.

Nome di ebuild ambiguo
L'applicazione che viene selezionata per essere installata ha un nome che corrisponde a più di un pacchetto. Si fornisca anche il nome della categoria per risolvere questo problema. Portage informerà l'utente riguardo possibili corrispondenze da cui scegliere.

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.