Gentoo: El corazón de la bestia

 

Wow, veo una gran acogida a mis pequeños aportes y me motiva mucho más a poder seguir compartiendo con esta bella comunidad. Ya sé que he prometido una guía de menos de 20 pasos, pero tendrán que comer ansias un poco todavía… Es que sencillamente no puedo empezar un tutorial de Gentoo sin detenerme a hablar de su corazón y la esencia misma de todo su poder Portage, su gestor de paquetes. Además, como fiel usuario de Gentoo creo yo que es mejor entender antes que repetir, y con esto solo quiero decir que antes de empezar una guía sencilla como copiar un script (repetir), es mejor saber lo que hacemos para poder después escribir el script. Como el conocido refrán:

“Dale a un hombre un pez y le habrás calmado el hambre por un día, enséñale a pescar y lo habrás salvado de por vida”.

Sin más que agregar, comencemos:

¿Qué es portage?

Portage, es el gestor de paquetes de Gentoo Linux. Sus equivalentes en otras distribuciones son apt (Debian y derivados) , yum (Red Hat, SUSE y derivados) , pacman (Arch y derivados)… Está inspirado en Ports de FreeBSD, eso debido a que el fundador de Gentoo utilizó una temporada FreeBSD y de ahí la inspiración y parecido en muchas de las maneras. Estuvo escrito en bash al principio y emerge (el nombre del programa que se encarga de instalaciones en línea de comando) a lo largo de su historia ha tenido una amplia base de bash y más actualmente Python para poder realizar sus funciones.

¿Por qué es importante saber esto?

Bueno, como todo usuario Linux, el gestor de paquetes es tu herramienta principal para poder mantener tu sistema funcional y operativo, te permite instalar, actualizar, eliminar, y muchas otras cosas más. Portage se subdivide en diversos comandos que se especializan en realizar una cosa, y hacerla bien (una conocida forma de trabajar en UNIX).

El corazón de Portage:

A diferencia de otros gestores de paquetes (al menos los que ya he mencionado antes), Portage basa todo su poder en un archivo de configuración. Este archivo se encuentra dentro de la ruta /etc/portage/make.conf . Por el momento es muy difícil explicar el intrincado sistema que existe en Gentoo que permite entregar todo el poder de la distribución a este archivo sin romper nada en otro lado, pero sigamos que eso lo dejaré para otro post ;)

Un vistazo al corazón:

Diseño propio. Christopher Díaz Riveros

Como podrán ver, no es algo fuera de este mundo, en realidad, tengo otros archivos que son mucho más específicos, pero lo que está aquí es más que suficiente para poder tener tu Gentoo operativo y funcional. Comencemos a revisar las líneas que siguen:

CFLAGS/CXXFLAGS:

El primer paso por nuestra aventura en el corazón de Gentoo son los C Flags. Estos flags permiten compilar programas en C (los más básicos que necesita un sistema para funcionar) con distintos tipos de ventajas. Como pueden apreciar en mi configuración, -march=broadweel me permite usar la generación de mi procesador al momento de compilar mis programas. -O2 y -pipe vienen por defecto, y si me detengo a explicar cada una me va a tomar tal vez un libro completo.

Sin embargo, aquí les dejo unos cuantos tipos de -march explicados en la wiki de Gentoo.

https://wiki.gentoo.org/wiki/Safe_CFLAGS

CHOST:

El CHOST se encarga de mostrar la ubicacióny tipo por defecto del compilador, esta variable es utilizada en equipos que cuenten con distintos tipos de compiladores, como los fanáticos de Arduino. Para una configuración básica no es necesario entrar en detalles.

Nota del autor: Gracias por tu aporte njord, y por compartir tus conocimientos con el resto de la comunidad :)

Esta variable del sistema no indica como tal la ubicación del compilador, más bien le indica al compilador la arquitectura del procesador, y opcionalmente la plataforma de hardware, sistema operativo y libreria de C para los cuales se van compilar los paquetes y aunque esta variable se define de manera global dentro de make.conf (como todo lo demás que aparecé ahí) nada impide que se puedan compilar paquetes para otras arquitecturas.

USE:

El corazón de los programas, los USE flags de make.conf son universales. Con esto me refiero a que cualquier programa que cuente con un USE de X, al momento de ser compilado, contará con el X activado. Esta opción es bastante útil para aquellos USE flags que vas a utilizar en muchos (si no son todos) de tus programas. Como pueden ver, gnome systemd hacen que mi sistema compile soporte para estos tipos de programas en cualquier software que lo tenga como posibilidad.

MAKEOPTS:

Esta es una de las mejores ventajas de los procesadores rápidos. MAKEOPTS como su nombre lo implica, son opciones que se agregan a la sentencia make que se corre al compilar cada programa. en este caso el -j9 me permite compilar 9 programas al mismo tiempo, 1 por cada hilo en mi núcleo del i7. Un número más conservador es -j5, pero incluso aquí, el tiempo de compilación se reduce bastante para cada instalación.

CPU_FLAGS_X86:

Oh oh… ahora deben estar pensando… ¿qué son esos números? y ¿de dónde o cómo sé yo qué poner aquí? La respuesta es la pura esencia de Gentoo :) aprovecha a la comunidad ;) quienes ya crearon un programa que te da el resultado. Para mostrar esto solo hace falta instalar el siguiente programa y ejecutarlo:

Diseño propio. Christopher Díaz Riveros

Como pueden ver, me muestra los FLAGS que mi procesador posee y los puedo copiar a mi archivo make.conf mediante redirects o escribiendo con nano, vim, o cualquier otro editor de texto :)  (Ya irán viendo cuán automatizado está todo en Gentoo ;) )

PORTDIR:

Simplemente el directorio donde comienza la raíz de los ebuilds. Estos son los scripts de Bash que permiten a portage instalar programas, pero eso lo dejaremos para otro post ;)

DISTDIR:

Como Gentoo instala todo desde su fuente, este directorio almacenará todo el código fuente que vamos descargando, si desean pueden borrar su contenido cada cierto tiempo, pero hay muchos otros usos interesantes para estos programas, pero eso también para otro post ;)

VIDEO_CARDS:

Bueno, como su nombre lo indica, la marca de tu tarjeta de vide, esto evita que tengas que instalar drivers al momento de instalar cosas como X u Wayland.

LANG:

Un espacio bastante cómodo para poder agregar todos los idiomas que quieres que soporte tu sistema, en mi caso yo quiero tener en español de Perú, pero se pueden agregar más para poder cambiar en caso de ser necesario.

INPUT_DEVICES:

El formato o driver con el que funcionan tus periféricos, dado que uso GNOME, libinput se encarga de mi touchpad. Otra opción bastante conocida pero que está siendo reemplazada es synaptics.

LINGUAS:

L10N:

Los que saben de programación sabrán por qué no hay nada en el anterior, sino, miren cómo funciona which en muchos lenguajes de programación ;) .

Estas variables permiten saber el lenguaje  de los programas instalados, en mi caso tanto en inglés como en español está bien.

RUBY_TARGETS:

Los TARGETS muestran otra funcionalidad bastante peculiar de Gentoo Linux. Es posible tener distintas versiones conviviendo dentro del mismo sistema. Esto quiere decir que yo podría tener Ruby 21, 22 ,23 y 24  al mismo tiempo y sin conflictos, lo mismo que Python, Apache, Tomcat, MariaDB, entre muchos otros. Esta función se denomina SLOT en nuestra comunidad y es tema para un post completo, por lo que lo dejaremos para otra oportunidad ;)

GENTOO_MIRRORS:

Los lugares de donde vas a copiar tu colección de ebuilds, sirve de manera especial para poder tener puntos de acceso al momento de sincronizar. Yo tengo estos dos de backup, puesto que mi lista de ebuilds la descargo directamente de Github, y solo es necesario hacer git pull para descargar (obviamente, Gentoo lo hace por mi de todas maneras cuando escribo emerge –sync)

MUCHO MÁS:

Estas no son todas las opciones de make.conf, existen muchas más, y probablemente algunas permitirán mayores ventajas o configuraciones, pero con esas es más que suficiente para tener un sistema funcional :)

/etc/portage:

Les presento un poco de lo que existe dentro de esta carpeta, solo para que se puedan hacer una idea de lo que falta por conocer y que iremos viendo en estos días y posts :)

Diseño propio. Christopher Díaz Riveros

Un poco más:

Como no puedo dejar de comentar un poco más, me adelantaré un poco y les mostraré una parte especial de esta carpeta, el archivo make.profile. Los perfiles de Gentoo te permiten generar configuraciones especializadas para cada tipo de usuario, así no es necesario que escribas o conozcas todos los USE, o muchas cosas más, simplemente puedes escoger un perfil y empezar sobre ese. Esta es la lista actual de perfiles que tenemos en Gentoo el día de hoy.

Diseño propio. Christopher Díaz Riveros

Como pueden ver, mi perfil está seleccionado con amd64, un desktop, con GNOME y usando systemd. Al seleccionar este perfil me aseguro que todos los USE flags y demás configuraciones sean los mínimos requeridos para tener mi sistema corriendo, y en base a eso yo hago los retoques. (Seguro alguno que otro creía que tendría que pensarlo todo desde cero… eso es mentira aquí ;) )

Como podemos ver, perfiles son muchos, y cada uno con sus beneficios propios.

Para terminar:

Bueno, otro post que se va de mis manos para sus ojos :) espero que las ansias de probar Gentoo ya los tenga bastante impacientes :D así podré sentir una emoción mayor al momento de crear la guía de instalación. Saludos a todos,

Published by

ChrisADR

I'm a young developer who loves open source and free software technologies, I'm the founder of CodeLabora, an open source community which aims to help young developers from Latin America to get involved with open source and free software projects and communities around the world. I like to learn and my favorite subjects are security and Linux. I've recently finished an internship as security analyst and contribute to the security project from my Linux community, Gentoo Linux, as Gentoo Linux Security Advise (GLSA) Coordinator