UPDATE: A distanza di mesi, sotto sollecito di alcune persone, torno ad aggiornare lo script.
- Ho fatto un paio di modifiche documentate sotto.
- Ho risolto un paio di bug riguardo lo smontaggio del fs.
- L'ho riscritto. non sono sicuro che sia apposto, provatelo, ho fatto dei test ma non posso garantire che sia perfetto.
-----------------------------------------------------------------------------------------
Questo tratta di come modificare emerge per automontare la dir temporanea di portage in ram, o nel caso specifico in tmpfs (quindi ram fino alla capacita' massima fisica disponibile, il resto in swap, per essere sicuri di non rimanere a secco).
Compilare in ram, specie per pacchetti molto esosi come gcc o glibc, diminuisce molto ma molto ma molto il tempo necessario.
Senza contare il fatto, molto importante per me, che aumenta anche la vita al vostro disco fisso (credo che la compilazione per un utente gentoo medio, sia uno degli aspetti di piu grosso stress per gli HD).
Il tutto viene fatto e disfatto automaticamente per ogni emerge, da emerge stesso.
L'unica cosa da configurare e' la dimensione, ovvero una variabile da inserire in /etc/make.conf:
Code: Select all
PORTAGE_MEMSIZE=xxxSono supportate le seguenti sintassi per la misura:
- 60 - 60 megabytes (se non c'e' unita' il default e' megabytes)
- 60M o 60Mb
- 2G o 2Gb
Ovviamente, come ogni altra variabile in make.conf, potete sovrascriverla a runtime ogni volta che emergerete un pacchetto magari molto dispendioso in termini di spazio in compilazione, ad esempio
Code: Select all
PORTAGE_MEMSIZE=800M emerge openoffice-------------
UPDATE:
Ho inserito il supporto per un file, /etc/portage/package.mem, dove si puo' sovrascrivere le impostazioni globali per pacchetto, esattamente come avviene per package.use.
La sintassi corretta per il file e':
Code: Select all
categoria/pacchetto dimensione_tmpfsL'ordine di priorita' e' questo, in ordine ascendente da sinistra a destra:
make.conf --> package.mem --> variabile d'ambiente shell
-------------
Se la variabile non e' specificata ne da linea di comando ne nel make.conf, emerge funzionera' come al solito, senza montare il fs.
esempi:
a. disabilitato per default, attivo su richiesta esplicita per singoli pacchetti
- make.conf: PORTAGE_MEMSIZE="" (o nulla direttamente)
- emerge world
oppure
- PORTAGE_MEMSIZE=50 emerge nano
b. attivo per default, inattivo su richiesta esplicita per singoli pacchetti
- make.conf: PORTAGE_MEMSIZE="500" (dimensione a scelta)
- emerge world
oppure
- PORTAGE_MEMSIZE="" emerge nano
c. attivo per default, dimensione per singoli pacchetti diversa da default
- make.conf: PORTAGE_MEMSIZE="500"
- emerge world
oppure
- PORTAGE_MEMSIZE=50 emerge nano
Giustamente qualcuno ha detto che e' poco utile per pacchetti piccoli, specie su macchine non proprio eccellenti.
vero.
A questo proposito puo' essere utile settare PORTAGE_MEMSIZE=0 in /etc/make.conf, e usarlo selettivamente per pacchetti grandi, tipo:
Code: Select all
nano /etc/portage/package.memCode: Select all
app-office/openoffice-ximian 2G
kde-base/kdelibs 800M
sys-devel/gcc 500
NOTA BENE: DOVETE avere il supporto per ramfs/tmpfs nel vostro kernel.
Download: Ebuild disponibile a questo indirizzo.
Per installarlo, dovete inserirlo nel vostro overlay di ebuilds.
--
NOTA BENE: Al momento non e' prevista la gestione di piu processi di emerge concorrenti. La spiegazione e' ovvia: far partire piu emerge contemporaneamente e' gia rischioso di per se, puo' seriamente corrompere portage e il sistema stesso.
il "coso" non ha pretese di essere perfetto, se avete migliorie son ben accette.






