12 de enero de 2026

Guía Gentoo 2026: Cómo usar Overlays sin romper tu sistema (El Método del Aislamiento)

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:

vim /etc/portage/repos.conf/gentoo-zh-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:

sudo vim /etc/portage/package.mask/gentoo-zh
# 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: 

sudo vim /etc/portage/package.unmask/antigravity 
app-editors/antigravity::gentoo-zh

Usa el código con precaución.

Paso 4: Verificación técnica

Antes de compilar, verificamos el estado con emerge -pv. Deberías ver algo así:

sudo emerge -pv  app-editors/antigravity  
These are the packages that would be merged, in order:
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
 * IMPORTANT: 31 news items need reading for repository 'gentoo'.
 * Use eselect news read to view new items.

Usa el código con precaución.

El símbolo # indica que el paquete está técnicamente enmascarado por el archivo que creamos en el Paso 2, pero Portage lo permite gracias a la excepción del Paso 3. ¡Es el estado perfecto!

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:

  1. Estabilidad total: El 99% de tu sistema sigue el repositorio oficial de Gentoo.
  2. 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 

27 de noviembre de 2025

Cómo expandir LVM cuando el espacio parece "atrapado" en una partición lógica

Aumentar el tamaño de un disco en un entorno virtual (como una VM en la nube o un servidor local) es solo la mitad del trabajo. El verdadero reto viene cuando el sistema operativo debe reconocer ese espacio, especialmente cuando trabajamos con esquemas de particiones antiguos pero muy comunes.

Hoy les comparto cómo resolvimos un caso donde el disco físico creció a 100 GB, pero el LVM seguía limitado a la mitad.

El Diagnóstico

Al ejecutar lsblk, nos encontramos con una estructura de este tipo:

  • sda (100G): El disco físico total.

  • sda1 (976M): La partición de arranque (/boot).

  • sda2 (1K): La Partición Extendida. (Ojo: marca 1K porque es solo el "contenedor" legal en el MBR).

  • sda5 (49G): La Partición Lógica que realmente tiene el LVM.

El problema técnico: El espacio nuevo estaba al final del disco sda, pero para que el LVM en sda5 pudiera usarlo, primero teníamos que "estirar" el contenedor (sda2) y luego la partición real (sda5).


La Solución: El camino del dato

Para solucionar esto sin reiniciar y de forma segura, seguimos estos pasos utilizando herramientas estándar de Linux.

1. Preparar el terreno con growpart

growpart es una utilidad fenomenal (parte del paquete cloud-guest-utils) que permite reescribir la tabla de particiones en caliente.

Primero, expandimos la partición extendida (el contenedor) y luego la lógica:

sudo growpart /dev/sda 2
sudo growpart /dev/sda 5

Nota: Es normal que sda2 parezca no tener tamaño en algunos comandos, pero expandirla es vital para que sda5 tenga hacia dónde crecer.

2. Sincronizar el LVM (Physical Volume)

Ahora que la partición física sda5 ya ocupa los 99G, debemos decirle al LVM que su "terreno de juego" ha crecido:

sudo pvresize /dev/sda5

Después de esto, al ejecutar sudo vgs, verás que el campo VFree (espacio libre) aumenta mágicamente con los nuevos gigabytes.

3. Expandir los Volúmenes Lógicos (LV)

Con el espacio ya disponible en el grupo de volúmenes, solo queda repartirlo. Por ejemplo, para darle más espacio a una base de datos o a una aplicación específica (como GLPI):

# Expandir un volumen específico (ej. var_glpi) en 20GB y ajustar el sistema de archivos
sudo lvextend -L +20G /dev/vg0/var_glpi -r

# O asignar TODO el espacio restante a la raíz
sudo lvextend -l +100%FREE /dev/vg0/root -r

Lección aprendida

El uso de LVM sobre particiones lógicas (dentro de extendidas) añade una capa de complejidad al redimensionar, pero con las herramientas adecuadas como growpart y pvresize, se puede hacer de forma totalmente transparente y sin pérdida de datos.

Si en tu lsblk ves una partición de 1K, no te asustes: es solo el "contenedor" esperando a ser expandido para dejar crecer a sus particiones hijas.

23 de noviembre de 2025

💡 Cómo Calcular el Porcentaje de Incremento o Subida

 El cálculo del porcentaje de incremento (o porcentaje de subida) es una habilidad fundamental, ya sea que analices precios, salarios, o el crecimiento de cualquier métrica. Nos ayuda a entender la magnitud del cambio con respecto al valor original.

La Fórmula Clave

El proceso se reduce a tres pasos sencillos basados en esta fórmula general:





Pasos Detallados con Ejemplos

Paso 1: Hallar la Diferencia (Subida Neta)

Resta el valor inicial del valor final para saber cuánto aumentó el valor en total.

ConceptoOperación
Matemáticas$12.65 - 6.60 = 6.05$
Programaciónsubida = valor_final - valor_inicial

Paso 2: Hallar el Ratio (Proporción del Cambio)

Divide la subida neta (del Paso 1) entre el valor inicial. Esto te dará un número decimal que representa la proporción del cambio.

ConceptoOperación
Matemáticas$\frac{6.05}{6.60} \approx 0.9167$
Programaciónratio = subida / valor_inicial

Paso 3: Convertir a Porcentaje

Multiplica el ratio (del Paso 2) por $100$ para obtener el resultado final en formato de porcentaje.

ConceptoOperación
Matemáticas$0.9167 \times 100 = 91.67\%$
Programaciónporcentaje = ratio * 100

💻 Ejemplo Práctico con Variables de Programación

Imaginemos que quieres calcular el incremento en las visitas a tu web, que pasaron de 150 a 480.

📝 Código (Pseudocódigo o Python)

# Valores de entrada
valor_inicial = 150  # Visitas el mes pasado
valor_final = 480    # Visitas este mes

# PASO 1: Calcular la diferencia (la subida neta)
subida = valor_final - valor_inicial
# subida = 480 - 150 = 330

# PASO 2: Calcular el ratio (la proporción)
ratio = subida / valor_inicial
# ratio = 330 / 150 = 2.2

# PASO 3: Convertir a porcentaje
porcentaje_incremento = ratio * 100

# Resultado final
# porcentaje_incremento = 2.2 * 100 = 220.0
print(f"El incremento en las visitas fue del {porcentaje_incremento}%")

El incremento fue del 220%.

✨ Conclusión

La clave está en recordar que el denominador (la parte de abajo de la división) siempre debe ser el valor inicial u original.

  • $\text{Siempre se divide por el valor que estaba **antes** del cambio.}$



4 de noviembre de 2025

Cómo Autenticar la CLI de Gemini en Servidores Remotos (Adiós al Error 400)

Si intentas usar la CLI de Gemini (@google/gemini-cli) en un servidor remoto (como Debian 12, Ubuntu, o cualquier VPS) mediante SSH, pronto descubrirás que el proceso de autenticación de Google falla porque no puede abrir un navegador ni redirigir a localhost.

En nuestro caso, el problema fue doble: la variable GEMINI_API_KEY era ignorada y la URL de autenticación de Google estaba incompleta (Error 400: invalid_request).

A continuación, te mostramos el único camino garantizado para que Gemini CLI funcione en un entorno headless (sin interfaz gráfica).

🛠️ Prerrequisito: Obtener y Exportar la API Key

Antes de cualquier cosa, asegúrate de tener tu clave API lista. Este método es el más confiable para entornos de servidor.

  1. Obtén tu Clave API desde Google AI Studio.

  2. Exporta la clave como una variable de entorno en tu terminal SSH (aunque la CLI la ignore temporalmente, es un buen hábito):

    export GEMINI_API_KEY="TU_CLAVE_GENERADA_AQUI"

Paso 1: Forzar el Uso de la API Key en la Configuración

La CLI de Gemini prioriza el flujo de autenticación de cuenta personal (oauth-personal). Para forzar que use la clave API, debemos editar el archivo de configuración.

  1. Crea el directorio de configuración si no existe:

    mkdir -p ~/.gemini
  2. Crea o edita el archivo settings.json en el directorio de tu usuario:

    nano ~/.gemini/settings.json
  3. Asegúrate de que el archivo contenga ÚNICAMENTE tu clave API y no configuraciones de oauth-personal que podrían causar conflicto:

    {
      "apiKey": "AIzaSyB1xX9eXkAK3WlV1aOE3KXdtdt5D0unuNs"
    }
    

    (Reemplaza el valor con tu clave real. Este paso corrige la tendencia de la CLI a ignorar la variable de entorno y a intentar el flujo OAuth roto).


Paso 2: Ejecutar y Acceder al Menú de Autenticación

Al iniciar la CLI, esta ya no debería fallar con el error 400 ni con la petición de un código que no funciona. En su lugar, la CLI detectará que tiene una clave API disponible y nos presentará el menú de opciones.

  1. Ejecuta el comando principal:

    gemini
  2. La CLI te mostrará el siguiente menú interactivo, reconociendo tu instalación:

    │ 1. Login with Google
    │ ● 2. Use Gemini API Key
    │ 3. Vertex AI
    

Paso 3: Seleccionar la Autenticación por API Key

Este es el paso crítico donde le indicamos explícitamente a la herramienta qué método usar, superando los fallos automáticos.

  1. Usa las flechas de dirección para mover el selector () a la Opción 2: Use Gemini API Key.

  2. Presiona Enter para confirmar tu selección.

La CLI de Gemini autenticará la sesión inmediatamente usando la clave que ya definiste en el archivo ~/.gemini/settings.json.

Si todo es correcto, la CLI iniciará el prompt interactivo de chat, ¡y podrás usar Gemini directamente desde tu terminal Debian remota!

Welcome to Gemini CLI. Type /help for assistance. 

(chat)> 

Guía Gentoo 2026: Cómo usar Overlays sin romper tu sistema (El Método del Aislamiento)

En Gentoo, la tentación de añadir repositorios (overlays) para obtener versiones más recientes o paquetes exóticos es grande. Sin embargo, o...