Handbook:X86/Working/Features
Funzionalità di Portage
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.
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
:
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).
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:
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:
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.
È 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