Emerge – Utilizzo Funzione –autounmask-write

Per molti utenti Gentoo l’argomento sembrerà banale o superfluo, ma penso che per i nuovi utenti sia meglio spendere due parole.

Su Gentoo Linux, come ben sapete, i programmi o si compilano a mano o si installano tramite emerge. L’esempio più banale di sintassi che si possa fare è il seguente:

emerge nome_programma
Però non tutti i programmi si possono installare con questa semplice procedura poichè alcuni pacchetti sono “mascherati” (masked packages).

Cos’è il mascheramento dei pacchetti?

I pacchetti cosiddetti “masked”, sono pacchetti che non saranno installati sul vostro sistema a meno di intraprendere specifiche azioni. Di solito vengono mascherati pacchetti instabili, che hanno problemi e di cui gli sviluppatori non sono sicuri dell’affidabilità. Un pacchetto può essere mascherato inserendolo in /usr/portage/profiles/packages.mask. Storicamente, questo era il solo modo di mascherare pacchetti. Se volete installare un pacchetto mascherato in packages.mask, dovrete commentare la riga relativa al pacchetto.
Nota: packages.mask sarà sovrascritto ogni volta che eseguirete emerge sync, quindi le modifiche andranno perse ad ogni sync.
Potete anche mascherare pacchetti con problemi aggiungendoli a packages.mask.
La novità per il mascheramento dei pacchetti riguarda l’introduzione di parole chiave (KEYWORDS) nei file ebuild. Per ogni architettura (x86, ppc, sparc, sparc64, alpha), un ebuild può essere marcato ‘-arch’, che significa “non funziona”, ‘~arch’, che significa “instabile”, o ‘arch’, che significa “stabile”. Potete decidere il vostro livello di tolleranza per pacchetti instabili definendo la variabile ACCEPT_KEYWORDS in /etc/make.conf. Per esempio, ACCEPT_KEYWORDS=”~x86″ accetterà pacchetti instabili per l’architettura x86. Di default il vostro profile è settato per accettare solo pacchetti stabili. ACCEPT_KEYWORDS può essere dichiarato anche da linea di comando. Potete anche passare il percorso completo di un ebuild che volete installare, in questo modo bypasserete il controllo del mascheramento ed è un altro modo per installare pacchetti mascherati.

Per fare un esempio pratico, installando il gioco The battle for Wesnoth troviamo quanto segue:

localhost carlo # emerge wesnoth

* IMPORTANT: 5 news items need reading for repository ‘gentoo’.
* Use eselect news to read news items.

Calculating dependencies… done!
[ebuild N ] dev-lang/lua-5.1.4-r4 USE=”deprecated readline -emacs -static”
[ebuild N ] media-libs/sdl-net-1.2.8 USE=”-static-libs”
[ebuild N ] media-libs/sdl-ttf-2.0.11 USE=”X -static-libs”
[ebuild N ] media-libs/sdl-mixer-1.2.11-r1 USE=”midi vorbis wav -flac -mad -mikmod -mp3 -playtools -static-libs -timidity”
[ebuild R ] media-libs/sdl-image-1.2.12 USE=”jpeg* png*”
[ebuild N ] games-strategy/wesnoth-1.10 USE=”dbus nls -dedicated -doc -server”

The following USE changes are necessary to proceed:
#required by games-strategy/wesnoth-1.10, required by wesnoth (argument)
>=media-libs/sdl-image-1.2.12 jpeg png
#required by games-strategy/wesnoth-1.10, required by wesnoth (argument)
=media-libs/sdl-mixer-1.2.11-r1 vorbis

Use –autounmask-write to write changes to config files (honoring CONFIG_PROTECT).

* IMPORTANT: 5 news items need reading for repository ‘gentoo’.
* Use eselect news to read news items.

localhost carlo #
Notiamo:

The following USE changes are necessary to proceed:
#required by games-strategy/wesnoth-1.10, required by wesnoth (argument)
>=media-libs/sdl-image-1.2.12 jpeg png
#required by games-strategy/wesnoth-1.10, required by wesnoth (argument)
=media-libs/sdl-mixer-1.2.11-r1 vorbis

Use –autounmask-write to write changes to config files (honoring CONFIG_PROTECT).
Bene, per “smascherare” (unmask) il pacchetto ed installarlo ci basterà dare il comando:

emerge nome_programma –autounmask-wirte && etc-update
Il quale ci restituirà quanto segue:

localhost carlo # emerge nome_programma –autounmask-wirte && etc-update
Scanning Configuration files…
The following is the list of files which need updating, each
configuration file is followed by a list of possible replacement files.
1) /etc/portage/package.use (1)
Please select a file to edit by entering the corresponding number.
(don’t use -3, -5, -7 or -9 if you’re unsure what to do)
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use ‘mv -i’)
(-7 to discard all updates)
(-9 to discard all updates AND not use ‘rm -i’):
in base alle nostre esigenze selezioniamo l’opzione desiderata (ad esempio -3) e premiamo “invio”.
A questo punto ci basterà usare nuovamente il comando

emerge nome_programma
per avviare correttamente l’installazione.