Perfiles, package.mask y package.use de Portage

Fuente: https://rootsudo.wordpress.com/2014/10/18/perfiles-package-mask-y-package-use-de-portage-gentoo/

Otro de los archivos importantes en /etc/portage/ es: package.mask

este archivo nos permite “enmascarar” paquetes, que por cualquier motivo no queremos que Portage instale o actualice. Se entenderá perfectamente con un ejemplo.

Yo instalé el navegador Chromium, concretamente la versión chromium-37.0.2062.94. Yo uso Firefox, y no suelo usar Chromium, pero me apeteció instalarlo como segundo navegador. El caso es que es un mamotreto enorme que tardó más de 3 horas en compilarse, por lo que no me apetece que al hacer un emerge world se actualice a una nueva versión. La solución es tan sencilla como enmascararlo en package.mask, así:

# que no se actualice Chromium:

www-client/chromium-37.0.2062.94

observemos el signo “mayor que” (>) que aparece delante del paquete. Lo que significa es matemáticamente obvio. Le ordeno a Portage que no actualice a ninguna versión de chromium por encima de la 37.0.2062.94 que es la que tengo instalada. Fácil y genial, ¿no?.

Así, de la misma forma, yo tengo instalada la versión “estable” de Firefox que se compiló en la instalación (la 24.8.0), pero como me gusta tener siempre la versión más moderna de mi navegador favorito, prefiero instalar las versiones -bin, o sea, las versiones precompiladas de Gentoo para evitar estar compilando demasiado frecuentemente este navegador que se actualiza mucho, por lo cual lo que hice es enmascarar las versión normal de Firefox (la versión no -bin) para que no se actualice, así:

#que no se actualice FIREFOX (el no -bin):

www-client/firefox-24.8.0


package.use

antes de hablar del archivo package.use conviene que expliquemos lo básico de los perfiles en Gentoo. Al instalar un sistema Gentoo será necesario decidirse por un perfil de instalación, esto es importante, pues como Gentoo es una distro que compila fuentes, el sistema se optimiza para que los paquetes se compilen de la manera más adecuada según sus variables USE características. Esto es más sencillo de lo que parece. Si quiero instalar un sistema GNOME, ¿para qué necesito que cientos de paquetes se compilen para funcionar con bibliotecas qt (de KDE, por ejemplo)?, por eso elegiré un perfil de instalación, que por defecto, le diga a Portage que instale los paquetes con las USE para Gnome (gtk gnome) y no con las de KDE (-qt4 -kde) [el signo menos delante quiere decir que no use esas]. Esto precisamente constituye una de la potencias de Gentoo, por eso un sistema Gentoo es mucho más eficaz que cualquier otra distro precompilada, porque compila todos los paquetes del sistema de forma inteligente y según perfiles de arquitectura, bibliotecas, etc.

podemos ver nuestro perfil actual mediante eselect:

eselect profile list

Available profile symlink targets:
[1] default/linux/amd64/13.0
[2] default/linux/amd64/13.0/selinux
[3] default/linux/amd64/13.0/desktop *
[4] default/linux/amd64/13.0/desktop/gnome
[5] default/linux/amd64/13.0/desktop/gnome/systemd
[6] default/linux/amd64/13.0/desktop/kde
[7] default/linux/amd64/13.0/desktop/kde/systemd
[8] default/linux/amd64/13.0/developer
[9] default/linux/amd64/13.0/no-emul-linux-x86
[10] default/linux/amd64/13.0/no-multilib
[11] default/linux/amd64/13.0/x32
[12] hardened/linux/amd64
[13] hardened/linux/amd64/selinux
[14] hardened/linux/amd64/no-multilib
[15] hardened/linux/amd64/no-multilib/selinux
[16] hardened/linux/amd64/x32
[17] hardened/linux/musl/amd64
[18] default/linux/uclibc/amd64
[19] hardened/linux/uclibc/amd64

vemos que en mi caso el perfil que seleccioné al instalar fue el que está marcado con un asterisco:

[3] default/linux/amd64/13.0/desktop *

evidentemente se puede cambiar de perfil una vez ya instalado (eselect profile set nº), aunque hay que ser consciente de que hacer esto supondrá un cambio total de las variables USE de cientos de paquetes, por lo que Portage, lógicamente, pretenderá re-compilar todos los paquetes con la nueva configuración nada más que le sea posible (seguro que lo hará tras un sudo emerge -uaDN --with-bdeps=y world )

Recordemos que al margen de las variables USE determinadas para cada perfil, en la instalación se pueden determinar variables USE personalizadas. Por ejemplo mi línea USE en mi /etc/portage/make.conf es:

USE=”gtk gnome -qt4 -kde dvd alsa cdr bindist mmx sse sse2″

El archivo package.use vale, precisamente, para configurar paquetes concretos, según las variables USE necesarias, si están fuera de las determinadas en mi perfil (y en mi make.conf).

Ejemplo:

al emerger el cliente de correo Geary, Portage me informará de que necesito hacer cambios en las USE para ese paquete, y me informa exactamente de cuales. En este caso dirá que necesito añadir en mi archivo package.use la siguiente línea: >=app-crypt/gcr-3.12.2 vala

por lo cual yo lo añado, así:

#GEARY (cliente de correo)

=app-crypt/gcr-3.12.2 vala

lo que significa que una dependencia de Geary, “gcr” necesita ser compilada con la variable USE “vala“. Y además vemos que le decimos a Portage que lo haga para esta versión y para las siguientes, de ahí lo de “mayor que” (>) e “igual que” (=)

Tras incorporar esta línea en nuestro package.use Portage será muy amable con nosotros, y nos permitirá emerger Geary (con sus dependencias). Además cuando lo actualice, ya no nos molestará con esto pues ya hemos autorizado previamente a Portage.