En Gentoo, la tentación de añadir repositorios (overlays) para obtener versiones más recientes o paquetes exóticos es grande. Sin embargo, overlays populares como guru, gentoo-zh o bentoo pueden intentar sustituir paquetes críticos del sistema, provocando errores de compilación masivos.
Hoy aprenderemos a configurar nuestro sistema para que solo acepte un paquete específico de un overlay, manteniendo el resto del repositorio bloqueado.
El problema: La "contaminación" de paquetes
Cuando añadimos un overlay, Portage lo trata como una fuente válida para cualquier actualización. Si el overlay tiene una versión de openssl o gcc más alta que el repo oficial, Portage la instalará, rompiendo a menudo la estabilidad.
La solución: Bloqueo global y excepciones puntuales
Usaremos como ejemplo el editor antigravity del overlay gentoo-zh, pero este método sirve para Tilix u OneDrive.
Paso 1: Configurar la prioridad del repositorio
Debemos asegurarnos de que el repositorio oficial siempre tenga la última palabra. Editamos el archivo de configuración del overlay en /etc/portage/repos.conf/nombre-del-repo.conf:
[gentoo-zh]
priority = 50
location = /var/db/repos/gentoo-zh
sync-type = git
sync-uri = github.com
Usa el código con precaución.
Nota: El repositorio oficial tiene prioridad 1000 por defecto. Al poner 50, le decimos a Portage que este repo es secundario.
Paso 2: El Escudo Protector (Bloqueo Total)
Para evitar que Portage instale nada de este repositorio por accidente, vamos a enmascararlo completamente.
Crea el archivo /etc/portage/package.mask/overlays:
# Bloqueamos todos los paquetes de estos repositorios
*/*::gentoo-zh
Usa el código con precaución.
Desde este momento, para Portage es como si esos repositorios estuvieran vacíos.
Paso 3: Crear el "agujero" en el escudo (Excepciones)
Ahora desenmascaramos únicamente los paquetes que necesitamos. Esto se hace en /etc/portage/package.unmask/.
Crea un archivo por cada paquete o uno general:
app-editors/antigravity::gentoo-zh
Paso 4: Verificación técnica
Antes de compilar, verificamos el estado con emerge -pv. Deberías ver algo así:
Calculating dependencies... done!
Dependency resolution took 1.83 s (backtrack: 0/20).
[ebuild R #] app-editors/antigravity-1.13.3::gentoo-zh USE="egl wayland -kerberos" L10N="es es-419 -af -am -ar -bg -bn -ca -cs -da -de -el -en-GB -et -fa -fi -fil -fr -gu -he -hi -hr -hu -id -it -ja -kn -ko -lt -lv -ml -mr -ms -nb -nl -pl -pt-BR -pt-PT -ro -ru -sk -sl -sr -sv -sw -ta -te -th -tr -uk -ur -vi -zh-CN -zh-TW" 150.341 KiB
Total: 1 package (1 reinstall), Size of downloads: 150.341 KiB
* Use eselect news read to view new items.
Bonus: ¿Qué pasa si el paquete pide dependencias del mismo overlay?
Si al intentar instalar Tilix te da errores de dependencias no encontradas, simplemente añade esas dependencias específicas al archivo de package.unmask siguiendo el mismo formato. Nunca quites la máscara global */*.
Conclusión
Este método nos permite disfrutar de lo mejor de ambos mundos:
- Estabilidad total: El 99% de tu sistema sigue el repositorio oficial de Gentoo.
- Flexibilidad: Puedes tener ese editor o herramienta que solo existe en un overlay sin riesgo de que una actualización de "rutina" rompa tu entorno gráfico o tu compilador.
Resumen de comandos útiles para el post:
- Listar repos activos: eselect repository list
- Sincronizar: emaint sync -a
- Ver origen de un paquete: equery list -p paquete