Handbook:Parts/Working/USE/it

L'idea dietro alle opzioni USE
Quando si installa Gentoo (o qualunque altra distribuzione, o in generale un sistema operativo) gli utenti compiono scelte a seconda dell'ambiente con cui stanno lavorando. Un'installazione per un server differisce da una per una postazione lavoro. Una stazione da gioco differisce da una per il rendering 3D.

Tutto ciò non solo è vero riguardo alla scelta dei pacchetti da installare, ma anche riguardo alle caratteristiche che un certo pacchetto dovrebbe supportare. Se non c'è bisogno di OpenGL, perché ci si dovrebbe preoccupare di installare e mantenere OpenGL e compilare tutto il suo supporto nella maggior parte dei pacchetti? Se non si desidera usare KDE, perché mai compilare i pacchetti con il supporto a KDE se quei pacchetti funzionano perfettamente senza?

Per aiutare gli utenti a decidere che cosa installare/attivare e che cosa no, Gentoo esige che l'utente definisca il proprio ambiente in modo semplice. Ciò spinge l'utente a stabilire di cosa realmente ha bisogno e facilita il processo affinché Portage possa prendere decisioni utili.

Definizione di un'opzione USE
Inserire le opzioni USE (flag). Una tale opzione è una parola chiave che include il supporto e le informazioni sulle dipendenze per un certo concetto. Se qualcuno specifica una qualche opzione USE, Portage saprà che si desidera il supporto per la parola chiave scelta. Certamente questo modificherà anche le informazioni sulle dipendenze per un pacchetto.

Si dia un'occhiata ad un esempio specifico: la parola chiave. Se questa parola chiave non è nella variabile USE, tutti i pacchetti che hanno il supporto opzionale di KDE saranno compilati senza il supporto KDE. Tutti i pacchetti che hanno una dipendenza opzionale da KDE saranno installati senza installare le librerie KDE (come dipendenze). Quando la parola chiave KDE viene specificata, allora quei pacchetti saranno compilati con il supporto a KDE e le librerie KDE saranno installate come dipendenze.

Definendo correttamente le parole chiave, il sistema sarà adattato in modo specifico alle esigenze dell'utente.

Quali opzioni USE esistono
Ci sono due tipi di opzioni USE: le opzioni USE globali e locali.


 * Un'opzione USE globale viene usata da numerosi pacchetti, si applica a tutto il sistema. Questo è quel che solitamente si pensa in relazione alle opzioni USE (flag). Una lista delle opzioni USE globali disponibili si può trovare sul sito ufficiale o localmente nel file.
 * Un'opzione USE locale viene usata da un singolo pacchetto per prendere decisioni specifiche su un pacchetto. Una lista delle opzioni USE locali disponibili si può trovare sul sito ufficiale o localmente nel file.

Dichiarare opzioni USE permanenti
Come già menzionato, tutte le opzioni USE sono dichiarate nella variabile USE. Per facilitare agli utenti la ricerca e la scelta delle opzioni USE, viene fornita un'impostazione per USE predefinita. Questa impostazione è una raccolta di opzioni USE che si ritiene siano comunemente usate dagli utenti di Gentoo. L'impostazione predefinita è dichiarata nei file che fanno parte del profilo selezionato.

Il profilo che il sistema segue è indicato dal link simbolico. Ogni profilo funziona sopra gli altri profili e il risultato finale è dunque la somma di tutti i profili. Il profilo più alto è il profilo base.

Per vedere (interamente) le opzioni USE attive correnti, digitare :

Come si può vedere, questa variabile contiene già molte parole chiave. Non si modifichi alcun file per adattare la variabile USE alle proprie esigenze personali: i cambiamenti in questi file verrebbero annullati dall'aggiornamento del repositorio di Gentoo!

Per cambiare queste impostazioni predefinite, per aggiungere o rimuovere parole chiavi alla variabile USE. Ciò viene fatto globalmente definendo la variabile USE su. In questa variabile uno può aggiungere le opzioni USE aggiuntive richieste, o rimuovere le opzioni USE che non sono più necessarie. Quest'ultima cosa viene fatta mettendo il prefisso segno meno davanti alla parola chiave.

Per esempio, per rimuovere il supporto a KDE e Qt, ma aggiungendo il supporto a LDAP, il seguente USE può essere definito su :

Dichiarare opzioni USE per singoli pacchetti
Talvolta gli utenti vogliono dichiarare certe opzioni USE per una (o una coppia) di applicazioni, ma non per tutto il sistema. Per soddisfare ciò, modificare. solitamente è un singolo file, ad ogni modo può anche essere una cartella piena di file figli; vedere il consiglio sottostante e per maggiori informazioni su come usare questa convenzione. I seguenti esempi considerano che sia un singolo file.

Per esempio, per avere solo il supporto Blu-ray nel pacchetto VLC media player (lettore multimediale):

Analogamente è possibile disabilitare esplicitamente delle opzioni USE per una certa applicazione. Per esempio, per disabilitare il supporto a bzip2 su PHP (pur conservandolo per tutti gli altri pacchetti grazie alla dichiarazione dell'opzione USE su ):

Dichiarare opzioni USE temporanee
Talvolta gli utenti necessitano di impostare opzioni USE per un breve momento. Anziché modificare due volte (per fare e disfare le modifiche su USE) basta dichiarare la variabile USE come variabile di ambiente. Non dimenticare che questa impostazione si applica solo al comando appena inserito; ri-emergere (ri-compilare) o aggiornare questa applicazione (sia esplicitamente che come parte di un aggiornamento di sistema) disferà le modifiche che furono attivate attraverso la (temporanea) definizione delle opzioni USE.

Il seguente esempio rimuove temporaneamente il valore  dalla variabile USE in relazione all'installazione di SeaMonkey:

Precedenza
Certamente c'è una precedenza che stabilisce quali opzioni hanno la priorità nell'impostazione di USE. La precedenza per l'impostazione di USE è, ordinata secondo priorità (la prima ha priorità più bassa):
 * 1) Impostazione USE predefinita dichiarata nei file  facenti parte del proprio profilo
 * 2) Impostazione USE definita dall'utente su
 * 3) Impostazione USE definita dall'utente su
 * 4) Impostazione USE definita dall'utente come variabile d'ambiente

Per vedere l'impostazione USE finale così come viene passata a Portage, eseguire. Ciò elencherà tutte le variabili rilevanti (inclusa la variabile USE ) con la loro attuale definizione così come Portage le riceverà.

Adattare l'intero sistema alle nuove opzioni USE
Dopo aver modificato le opzioni USE, il sistema andrebbe aggiornato per riprodurre i necessari cambiamenti. Per fare ciò, usare l'opzione  con :

In seguito, eseguire depclean (pulizia profonda) di Portage per rimuovere le dipendenze condizionali che furono compilate con il "vecchio" sistema, ma rese obsolete dalle nuove opzioni USE.

Quando depclean ha concluso, eseguire per ricompilare le applicazioni che sono dinamicamente collegate agli oggetti condivisi forniti dai pacchetti eventualmente rimossi. fa parte del pacchetto ; non dimenticare di compilarlo (emergerlo) per primo.

Quando tutto ciò sarà compiuto, il sistema starà usando il nuovo insieme di opzioni USE.

Visionare le opzioni USE disponibili
Let's take the example of seamonkey: what USE flags does it listen to? To find out, we use with the   and   options:

isn't the only tool for this job. In fact, there is a tool dedicated to package information called which resides in the  package

Now run with the uses argument to view the USE flags of a certain package. For instance, for the gnumeric package:

Satisfying REQUIRED_USE conditions
Some ebuilds require or forbid certain combinations of USE flags in order to work properly. This is expressed via a set of conditions placed in a REQUIRED_USE expression. This conditions ensure that all features and dependencies are complete and that the build will succeed and perform as expected. If any of these are not met, emerge will alert you and ask you to fix the issue.

Some examples of this REQUIRED_USE  expression are given below: