Handbook:X86/Working/USE

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:X86/Working/USE and the translation is 100% complete.
Manuale X86
Installazione
Riguardo l'installazione
Il mezzo d'installazione
Configurare la rete
Preparare i dischi
Installare lo stage3
Installare il sistema base
Configurare il kernel
Configurare il sistema
Strumenti di sistema
Configurare l'avviatore
Ultimare l'installazione
Lavorare con Gentoo
Introduzione a Portage
Opzioni USE
Funzionalità di Portage
Sistema script di init
Variabili d'ambiente
Lavorare con Portage
File e cartelle
Variabili
Mixare i rami del software
Strumenti aggiuntivi
Repositorio pacchetti personalizzato
Funzionalità avanzate
Configurare la rete
Come iniziare
Configurazione avanzata
Networking modulare
Wireless
Aggiungere funzionalità
Gestione dinamica

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 kde. 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.

When the kde flag is set to enabled, then those packages will be compiled with KDE support, and the KDE libraries will be installed as dependency.

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

Usare le opzioni USE

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 make.defaults che fanno parte del profilo selezionato.

Il profilo che il sistema segue è indicato dal link simbolico /etc/portage/make.profile. 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 (/usr/portage/profiles/base).

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

root #emerge --info | grep ^USE
USE="a52 aac acpi alsa branding cairo cdr dbus dts ..."

Come si può vedere, questa variabile contiene già molte parole chiave. Non si modifichi alcun file make.defaults 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 /etc/portage/make.conf. 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 /etc/portage/make.conf:

FILE /etc/portage/make.confAggiornare USE su make.conf
USE="-kde -qt4 -qt5 ldap"

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 /etc/portage/package.use. package.use solitamente è un singolo file, ad ogni modo può anche essere una cartella piena di file figli; vedere il consiglio sottostante e man 5 portage per maggiori informazioni su come usare questa convenzione. I seguenti esempi considerano che package.use sia un singolo file.

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

FILE /etc/portage/package.useAbilitare il supporto Blu-ray per VLC
media-video/vlc bluray
Suggerimento
Se package.use pre-esisteva come cartella (contrariamente al singolo file), i pacchetti possono essere modificati con le opzioni USE locali semplicemente attraverso la creazione di file sotto la cartella package.use/. Qualsiasi convenzione di denominazione dei file può funzionare, ma è saggio servirsi di uno schema di denominazione coerente. Per esempio, impostare l'opzione USE bluray localmente per il pacchetto media-video/vlc può essere fatto come segue:

root #echo "media-video/vlc bluray" >> /etc/portage/package.use/vlc

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 make.conf):

FILE /etc/portage/package.useDisabilitare il supporto bzip2 per PHP
dev-lang/php -bzip2

Dichiarare opzioni USE temporanee

Talvolta gli utenti necessitano di impostare opzioni USE per un breve momento. Anziché modificare /etc/portage/make.conf 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 pulseaudio dalla variabile USE in relazione all'installazione di SeaMonkey:

root #USE="-pulseaudio" emerge www-client/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 make.defaults facenti parte del proprio profilo
  2. Impostazione USE definita dall'utente su /etc/portage/make.conf
  3. Impostazione USE definita dall'utente su /etc/portage/package.use
  4. Impostazione USE definita dall'utente come variabile d'ambiente

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

root #emerge --info

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 --newuse con emerge:

root #emerge --update --deep --newuse @world

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.

Attenzione
Eseguire emerge --depclean è un'operazione pericolosa e va maneggiata con cautela. Controllare due volte l'elenco fornito dei pacchetti "obsoleti" per essere sicuri di non rimuovere pacchetti necessari. Nel seguente esempio aggiungiamo l'opzione -p per fare in modo che depclean elenchi solo i pacchetti senza rimuoverli:
root #emerge -p --depclean

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

root #revdep-rebuild

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

Opzioni USE per specifici pacchetti

Visionare le opzioni USE disponibili

Prendiamo l'esempio di seamonkey: quali opzioni USE è in grado di recepire? Per scoprirlo, usiamo emerge con le opzioni --pretend e --verbose:

root #emerge --pretend --verbose www-client/seamonkey
Questi sono i pacchetti che dovrebbero essere uniti, nell'ordine:
 
Calcolo delle dipendenze... fatto!
[ebuild  N     ] www-client/seamonkey-2.48_beta1::gentoo  USE="calendar chatzilla crypt dbus gmp-autoupdate ipc jemalloc pulseaudio roaming skia startup-notification -custom-cflags -custom-optimization -debug -gtk3 -jack -minimal (-neon) (-selinux) (-system-cairo) -system-harfbuzz -system-icu -system-jpeg -system-libevent -system-libvpx -system-sqlite {-test} -wifi" L10N="-ca -cs -de -en-GB -es-AR -es-ES -fi -fr -gl -hu -it -ja -lt -nb -nl -pl -pt-PT -ru -sk -sv -tr -uk -zh-CN -zh-TW" 216,860 KiB
 
Totale: 1 pacchetto (1 nuovo), Grandezza scaricamento: 216,860 KiB

emerge non è il solo strumento per questo lavoro. Infatti, c'è uno strumento dedicato alle informazioni sui pacchetti chiamato equery che risiede nel pacchetto app-portage/gentoolkit

root #emerge --ask app-portage/gentoolkit

Adesso eseguire equery con l'argomento uses per vedere le opzioni USE di un dato pacchetto. Per esempio, con il pacchetto gnumeric:

user $equery --nocolor uses =gnumeric-1.12.31
[ Legend : U - impostazione finale per l'installazione]
[        : I - pacchetto installato con quell'opzione ]
[ Colors : set, unset                                 ]
 * Trovate queste opzioni USE per app-office/gnumeric-1.12.31:
 U I
 + + introspection            : Aggiunge supporto all'introspezione basata su GObject.
 - - libgda                   : Abilita supporto database attraverso gnome-extra/libgda.
 - - perl                     : Abilita il plugin perl loader (caricatore).
 + + python                   : Abilita il plugin python loader (caricatore).
 + + python_targets_python2_7 : Compilato con Python 2.7

Soddisfare le condizioni REQUIRED_USE

Alcune ebuild richiedono o proibiscono certe combinazioni di opzioni USE allo scopo di funzionare appropriatamente. Ciò viene espresso nell'insieme di condizioni collocato nell'espressione REQUIRED_USE. Queste condizioni assicurano che tutte le funzionalità e le dipendenze siano complete e che la compilazione abbia successo e sia eseguita come atteso. Se una di queste condizioni manca, emerge avvertirà l'utente e chiederà di correggere il problema.

Esempio Descrizione
REQUIRED_USE="foo? ( bar )" Se foo è impostato, anche bar deve esserlo.
REQUIRED_USE="foo? ( !bar )" Se foo è impostato, bar non deve esserlo.
REQUIRED_USE="foo? ( || ( bar baz ) )" Se foo è impostato, bar o baz devono esserlo.
REQUIRED_USE="^^ ( foo bar baz )" Esattamente uno tra foo bar e baz va impostato.
REQUIRED_USE="|| ( foo bar baz )" Almeno uno tra foo bar e baz va impostato.
REQUIRED_USE="?? ( foo bar baz )" Non più di uno tra foo bar e baz va impostato.