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.

The profile the system listens to is pointed to by the symlink. Each profile works on top of other profiles, and the end result is therefore the sum of all profiles. The top profile is the base profile.

To view the currently active USE flags (completely), use :

As can be seen, this variable already contains quite a lot of keywords. Do not alter any file to tailor the USE variable to personal needs though: changes in these files will be undone when the Gentoo repository is updated!

To change this default setting, add or remove keywords to/from the USE variable. This is done globally by defining the USE variable in. In this variable one can add the extra USE flags required, or remove the USE flags that are no longer needed. This latter is done by prefixing the keyword with the minus-sign.

For instance, to remove support for KDE and Qt but add support for LDAP, the following USE can be defined in :

Declaring USE flags for individual packages
Sometimes users want to declare a certain USE flag for one (or a couple) of applications but not system-wide. To accomplish this, edit. is typically a single file, however it can also be a directory filled with children files; see the tip below and then for more information on how to use this convention. The following examples assume is a single file.

For instance, to only have Blu-ray support for the VLC media player package:

Similarly it is possible to explicitly disable USE flags for a certain application. For instance, to disable bzip2 support in PHP (but have it for all other packages through the USE flag declaration in ):

Declaring temporary USE flags
Sometimes users need to set a USE flag for a brief moment. Instead of editing twice (to do and undo the USE changes) just declare the USE variable as an environment variable. Remember that this setting only applies for the command entered; re-emerging or updating this application (either explicitly or as part of a system update) will undo the changes that were triggered through the (temporary) USE flag definition.

The following example temporarily removes the  value from the USE variable during the installation of SeaMonkey:

Precedence
Of course there is a certain precedence on what setting has priority over the USE setting. The precedence for the USE setting is, ordered by priority (first has lowest priority):
 * 1) Default USE setting declared in the  files part of your profile
 * 2) User-defined USE setting in
 * 3) User-defined USE setting in
 * 4) User-defined USE setting as environment variable

To view the final USE setting as seen by Portage, run. This will list all relevant variables (including the USE variable) with their current definition as known to Portage.

Adapting the entire system to the new USE flags
After having altered USE flags, the system should be updated to reflect the necessary changes. To do so, use the  option with :

Next, run Portage's depclean to remove the conditional dependencies that were emerged on the "old" system but that have been obsoleted by the new USE flags.

When depclean has finished, run to rebuild the applications that are dynamically linked against shared objects provided by possibly removed packages. is part of the package; don't forget to emerge it first.

When all this is accomplished, the system is using the new USE flag settings.

Viewing available USE flags
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: