La piedra angular: USE y Flags

Fuente: https://blog.desdelinux.net/gentoo-la-verdad-tras-el-mito/

Hasta ahora han conocido el uso básico de Portage y su front-end de línea de comandos emerge.

Gracias a la flexibilidad de Gentoo y de la configuración centralizada del Portage (/etc/portage/make.conf). Somos capaces de construir un paquete para las características exactas de nuestro sistema y de nuestras necesidades. Este es el llamado sistema de “FLAGS” y de “USE”.

¿Qué es un USE?

Los “USEs” son variables de entorno que Portage lee para saber que características debe compilar:

Si por ejemplo ejecutó:
export USE=‘gnome kde bluetooth alsa’

Quiere decir que cuando haga emerge PROGRAMA el soporte para KDE y Gnome así como el de bluetooth y el de audio (alsa) se incluirán si están disponibles.

Hay dos tipos de USES, globales y particulares:

Los uses globales afectan a todo el sistema y a todos los paquetes, para establecerlos permanentemente se deben añadir en el archivo /etc/portage/make.conf en la linea que comienza con USE, por ejemplo los mios:

USE=“jack -ipv6 -accessibility -qt4 -kde gnome -bluetooth bindist mmx sse sse2 dbus vim-syntax systemd -consolekit unicode policykit -networkmanager pulseaudio scanner dmx”

Los particulares afectan a paquetes específicos y se deben escribir en /etc/portage/package.use por linea, al principio el nombre completo del paquete app-editors/emacs, y seguido los uses app-editors/emacs gtk gtk3 png
Gentoo incluye por defecto muchos USEs, después de todo Gentoo se maneja por perfiles, unos perfiles tienen diferentes uses que otros, hay perfil para KDE, perfil para Gnome, Systemd, SELINUX y seguridad aumentada…. eselect profile list los lista todos y eselect profile set # les permite seleccionar uno.

Nótese que en /etc/portage están todas las configuraciones de Portage

Gracias al sistema USE somos capaces de especificar una gran cantidad de características configurables por paquete.
Esto facilita en mucho la administración y mantenimiento del sistema y su flexibilidad a la hora de dedicar un sistema para una tarea en concreto.

Si no llegan a saber que hace cada USE no se preocupen, siempre pueden ejecutar:

equery uses PROGRAMA

esto les dirá que hace cada USE del programa.

Ejemplo de la instalación de Inkscape mismos colores que aparecerían en una terminal:

# emerge -p inkscape

These are the packages that would be merged, in order:

Calculating dependencies… done!
[ebuild N ] dev-libs/boehm-gc-7.2e USE=“cxx -static-libs -threads”
[ebuild N ] media-libs/sk1libs-0.9.1-r3 PYTHON_TARGETS=“python2_7”
[ebuild N ] media-gfx/uniconvertor-1.1.5
[ebuild N ] app-text/aspell-0.60.6.1 USE=“nls” LINGUAS="-af -be -bg -br -ca -cs -cy -da -de -el -en -eo -es -et -fi -fo -fr -ga -gl -he -hr -is -it -la -lt -nl -no -pl -pt -pt_BR -ro -ru -sk -sl -sr -sv -uk -vi"
[ebuild N ] app-dicts/aspell-en-7.1.0
[ebuild N ] media-gfx/inkscape-0.48.5 USE=“gnome lcms nls spell -dia -inkjar -postscript -wmf” PYTHON_TARGETS=“python2_7”

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

Esto no es una simple resolución de dependencias, sino que con un solo paquete (inkscape en este caso) podemos tener varias posibilidades
Pérmitanme explicarles :

A emerge le añadí “-p“, está opción es para pretender que hace una instalación, te muestra los cambios que hará sin hacerlos, otra opción es -a (–ask), es similar, sólo que te pregunta si quieres continuar o no.

Al principo aparece entre corchetes ebuild N, ebuild se refiere a que se va a instalar a partir del código fuente, Portage puede generar binarios de lo que instalen, pero normalmente no lo hace, útil para reinstalar o para tener varias computadoras con Gentoo. En ese caso aparecería como binary

Seguido tenemos N, la segunda sección nos dice el tipo de operación, si se está actualizando (U), si es nuevo (N), si lo estamos recontruyendo ®, o si hay un conflicto que lo bloquea de instalarse (B).

Después sigue el nombre del paquete con su número de versión, luego aparece la variable use donde con rojo están los uses que se van a incluir, y con azul los que no, noten que los de azul comienzan con un signo de menos. También hay USES negativos y lo pueden usar para evitar algun o algunos USES que vienen por defecto.
PYTHON_TARGETS tiene que ver con la implementación de python que se usará, probablemente nunca la tengan que mover, así que no le hagan mucho caso por ahora.

Finalmente menciona que hay 13 elementos que debo leer, son todas las noticias de los últimos 3 años con respecto a cambios importantes, ya los leí, pero no se lo he indicado a portage. Creo que esto es una característica que debería tener el pacman de Arch.
Actualización:

La actualización de Gentoo es diferente de las demás distros, se puede hacer superficialmente como usar:

emerge -u world

hasta la más completa que es:

emerge -uavDN –keep-going world

En caso de duda usen la última forma, luego se irán dando cuenta de las diferencias. Les recomiendo hacerlo diario si pueden hacerlo, y lo más optimo por semana, a lo mucho cada 15 días, no importa su procesador, no se pasen del mes, no quieren estar resolviendo conflictos manualmente.

Pero incluso si duran 5 años sin actualizar Gentoo lo pueden hacer, al menos esté artículo se refiere a como actualizar una instalación normal de un año sin actualizar:
http://gentoovps.net/gentoo-updating-old-system/

Gestores gráficos:

Gentoo tiene gestores de paquetes gráficos, está porthole y himerge. (himerge lleva varios años sin desarrollo).

Creo que ahora conocen lo básico para administrar Gentoo, comprendido bien esto no creo que tengan problemas con los paquetes enmascarados, inestables, las licencias, limpiar los módules de perl, las actualizaciónes de toolchain, actualizaciones de Python, resolver bloqueos de paquetes que es más fácil de lo que parece.