Handbook:X86/Working/Features

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:X86/Working/Features 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

Portage possiede numerose funzionalità aggiuntive che rendono l'esperienza di Gentoo persino migliore. Molte di queste funzioni dipendono da certi strumenti software che migliorano prestazioni, affidabilità, sicurezza, ...

Per abilitare o disabilitare certe funzionalità di Portage, modificare /etc/portage/make.conf ed aggiornare o impostare la variabile FEATURES che contiene le parole chiave associate alle varie funzionalità, separate da uno spazio bianco. In numerosi casi è anche necessario installare lo strumento aggiuntivo dal quale le funzionalità dipendono.

Non tutte le funzionalità che Portage supporta sono elencate qui. Per una panoramica completa, consultare la pagina manuale make.conf:

user $man make.conf

Per scoprire quali FEATURES (caratteristiche) sono impostate in via predefinita, eseguire emerge --info e cercare la variabile FEATURES o ricavarla con grep:

user $emerge --info | grep ^FEATURES=

Compilazione distribuita

Usare distcc

distcc è un programma per distribuire le compilazioni attraverso molte, non necessariamente identiche, macchine su una rete. Il client (committente) distcc invia tutte le informazioni necessarie ai server (servitori) distcc disponibili (eseguendo distccd), così essi possono compilare parti di codice sorgente per il client. Il risultato con la rete consiste in un tempo di compilazione più veloce.

Più informazioni riguardo distcc (e come averlo in funzione su Gentoo) si trovano nell'articolo Distcc.

Installare distcc

Distcc viene fornito con un monitor grafico per monitorare le attività che il computer sta inviando per la compilazione. Questo strumento è automaticamente installato se sono impostati USE=gnome o USE=gtk.

root #emerge --ask sys-devel/distcc

Attivare il supporto distcc su Portage

Aggiungere distcc alla variabile FEATURES dentro /etc/portage/make.conf. Poi, modificare la variabile MAKEOPTS ed aumentare il numero di attività di compilazione parallele che il sistema permette. Una nota linea guida consiste nell'inserire -jN dove N è il numero dei processori (CPU) che eseguono distccd (incluso l'attuale host) più uno, ma è giusto un'indicazione di massima.

Ora eseguire distcc-config ed inserire l'elenco dei server distcc disponibili. Per fare un semplice esempio, supponiamo che i server DistCC disponibili siano 192.168.1.102 (l'attuale host), 192.168.1.103 e 192.168.1.104 (due host "remoti"):

root #distcc-config --set-hosts "192.168.1.102 192.168.1.103 192.168.1.104"

Non dimenticare di eseguire anche il servizio distccd (daemon):

root #rc-update add distccd default
root #/etc/init.d/distccd start

Oggetti di compilazione nella cache

Riguardo ccache

ccache è una cache di compilazione veloce. Ogni volta che un'applicazione viene compilata, memorizzerà i risultati intermedi nella cache in modo che, ogni volta che lo stesso programma viene ricompilato, il tempo di compilazione viene notevolmente ridotto. La prima volta che ccache viene eseguito, sarà molto più lento rispeto ad una normale compilazione. Le ricompilazioni successive tuttavia dovrebbero essere più veloci. ccache è utile solo se la stessa applicazione verrà ricompilata molte volte (o se gli aggiornamenti della stessa applicazione si verificano frequentemente); quindi è principalmente utile solo per gli sviluppatori di software.

Per maggiori informazioni su ccache, si visiti la sua homepage.

Attenzione
ccache è nota per causare fallimenti nella compilazione. Talvolta ccache conserverà oggetti di codice obsoleti o file corrotti, che possono impedire la costruzione dei pacchetti. Se ciò succede (errori come "File non riconosciuto: File troncato" compariranno nei build log - registri di compilazione), provare a ricompilare l'applicazione con ccache disabilitata (FEATURES="-ccache" su /etc/portage/make.conf) prima di segnalare un errore (bug report).

Installare ccache

Per installare ccache eseguire il seguente comando:

root #emerge --ask dev-util/ccache

Attivare il supporto ccache su Portage

Aprire /etc/portage/make.conf ed aggiungere ccache a qualsiasi valore definito nella variabile FEATURES. Se FEATURES non esiste, la si crei. Poi, aggiungere una nuova variabile chiamata CCACHE_SIZE (dimensione della cache) ed impostarla con 2G:

FILE /etc/portage/make.confAbilitare il supporto ccache su Portage
FEATURES="ccache"
CCACHE_SIZE="2G"

Per verificare che ccache funzioni, chiedere a ccache di fornire le sue statistiche. Siccome Portage usa una diversa cartella home per ccache, è necessario impostare temporaneamente la variabile CCACHE_DIR:

root #CCACHE_DIR="/var/tmp/ccache" ccache -s

La posizione /var/tmp/ccache/ è la cartella home di ccache predefinita di Portage; si può cambiare impostando la variabile CCACHE_DIR su /etc/portage/make.conf.

Eseguendo ccache in modo a sé stante (standalone), verrebbe usato il percorso predefinito ${HOME}/.ccache/, motivo per cui è necessario impostare la variabile CCACHE_DIR quando si richiedono le statistiche ccache (di Portage).

Usare ccache fuori da Portage

Per usare ccache nelle compilazioni non-Portage, aggiungere /usr/lib/ccache/bin/ all'inizio della variabile PATH (prima /usr/bin). Ciò può esser fatto modificando ~/.bash_profile nella cartella home dell'utente. Usare ~/.bash_profile è un modo per definire le variabili PATH (percorso).

FILE ~/.bash_profileImpostare la posizione ccache prima di qualsiasi altra PATH
PATH="/usr/lib/ccache/bin:${PATH}"

Supporto dei pacchetti binari

Creare pacchetti precompilati

Portage supporta l'installazione dei pacchetti precompilati. Anche se Gentoo non fornisce pacchetti precompilati da sé, Portage può essere pienamente consapevole dei pacchetti precompilati.

Per creare un pacchetto precompilato usare il comando quickpkg se il pacchetto è già installato nel sistema, o costruirlo con le opzioni --buildpkg o --buildpkgonly.

Per far sì che Portage crei pacchetti precompilati per ogni singolo pacchetto che viene installato, aggiungere buildpkg alla variabile FEATURES.

Un supporto più ampio nella creazione dei pacchetti precompilati si può ottenere con catalyst. Per maggiori informazioni su catalyst, leggere le FAQ di Catalyst.

Installare i pacchetti precompilati

Sebbene Gentoo non ne fornisce uno, è possibile creare un repositorio centrale dove i pacchetti precompilati vengono depositati. Al fine di usare questo repositorio, è necessario mettere Portage a conoscenza di esso tramite la variabile PORTAGE_BINHOST che dovrà puntare lì. Per esempio, se i pacchetti precompilati stanno su ftp://buildhost/gentoo:

FILE /etc/portage/make.confAggiungere la posizione PORTAGE_BINHOST
PORTAGE_BINHOST="ftp://buildhost/gentoo"

Per installare un pacchetto precompilato, aggiungere l'opzione --getbinpkg al comando emerge accanto all'opzione --usepkg. La prima opzione dice ad emerge di scaricare il pacchetto precompilato dal server precedentemente definito, mentre la seconda chiede ad emerge di provare ad installare il pacchetto precompilato prima di recuperare i sorgenti e compilarlo.

Per esempio, per installare gnumeric con i pacchetti precompilati:

root #emerge --usepkg --getbinpkg gnumeric

Maggiori informazioni sulle opzioni per i pacchetti precompilati di emerge si possono trovare nella pagina manuale di emerge:

user $man emerge

Distribuire pacchetti precompilati ad altri

Se i pacchetti precompilati devono essere distribuiti ad altri, allora ci si assicuri che ciò sia permesso. Per questo si controllino i termini di distribuzione posti all'origine del pacchetto. Per esempio, per un pacchetto rilasciato sotto GNU GPL, i sorgenti vanno resi disponibili insieme ai binari.

Gli ebuild possono definire una restrizione bindist nella loro variabile RESTRICT qualora i binari compilati non fossero distribuibili. Talvolta questa restrizione è condizionale sulla base di una o più opzioni USE.

In via predefinita, Portage non maschererà alcun pacchetto sulla base delle restrizioni. Ciò può essere globalmente modificato impostando la variabile ACCEPT_RESTRICT dentro /etc/portage/make.conf. Per esempio, per nascondere i pacchetti che hanno una restrizione bindist, aggiungere la seguente linea a make.conf:

FILE /etc/portage/make.confAccetta solo pacchetti binari distribuibili
ACCEPT_RESTRICT="* -bindist"

È anche possibile sovrascrivere la variabile ACCEPT_RESTRICT passando l'opzione --accept-restrict al comando emerge. Per esempio, --accept-restrict=-bindist nasconderà temporaneamente i pacchetti con una restrizione bindist.

Si consideri anche l'impostazione della variabile ACCEPT_LICENSE qualora si distribuiscano pacchetti. Vedere la sezione licenze per questo.

Importante
È pienamente responsabilità di ciascun utente conformarsi ai termini della licenza dei pacchetti e alle leggi della nazione dell'utente. Le variabili sui metadati definiti dalle ebuild (RESTRICT o LICENSE) possono fornire indicazioni nel caso in cui la distribuzione dei binari non è consentita, tuttavia l'output di Portage o le domande a cui gli sviluppatori di Gentoo hanno risposto non sono dichiarazioni legali e non dovrebbero essere considerate come tali. Usare prudenza nel rispettare la legge della propria località fisica.

Prelevare i file

Verify distfiles

To re-verify the integrity and (potentially) re-download previously removed/corrupted distfiles for all currently installed packages, run:

root #emerge --ask --fetchonly --emptytree @world