Linux · 6 min read · Jan 03, 2026
IHLFS: Control total sobre lo que estás instalando
IHLFS: Verifica lo que estás instalando (y más)
Introducción
Como usuario de LFS (ver: Linux From Scratch) estoy interesado en qué paquetes están instalados en mi sistema.
Una breve introducción sobre LFS: LFS no es una distribución como Suse o RedHat, la comunidad de LFS tiene como objetivo proporcionar una guía para configurar tu propio sistema Linux. En el sitio web se describe de manera muy detallada cómo puedes construir tu propio sistema Linux desde cero. Cada paquete se instala compilando e instalando el código fuente.
En la comunidad de LFS ha habido investigaciones sobre cómo hacer un seguimiento de los paquetes instalados. En este momento no existe tal herramienta.
Jhalfs, la herramienta más reciente para automatizar el proceso de construcción de un sistema LFS, tiene la capacidad de usar Paco, (ver: paco.sf.net)..
Paco se basa en el mecanismo LD_PRELOAD, la misma técnica que se utiliza, por ejemplo, en Gentoo. Esta técnica parece prometedora, pero tiene algunas desventajas serias.
He estado buscando otra forma de hacer un seguimiento de lo que un comando como
make installhace en mi sistema. He encontrado esta solución, gracias a la excelente idea de Pierre Hebert. Él describe en un howto en la sección “Hints” del sitio web de LFS o un espejo (ver: Leer Hints en línea, “TRIP, un empaquetador TRIvial para LFS (y otros sistemas linux)”) cómo puedes lograr un control total sobre lo que hace un comando de instalación arbitrario. Con ello puedes rastrear cada archivo añadido, cada modificación y archivo o directorio eliminado. No solo funciona con el comando “make install” mencionado anteriormente, sino que también puede rastrear todo lo que hace un comando como RMP.
La herramienta IHLFS que he desarrollado es muy básica y se basa en la misma técnica que TRIP. Te permite tener una vista previa de cómo se verá tu sistema después de haber instalado archivos o un paquete completo o lo que quieras añadir a tu sistema. Cuando no estés satisfecho con la forma en que se ven las cosas - por ejemplo, si quieres que algunas partes se instalen en diferentes lugares - siempre puedes volver atrás.
El nombre IHLFS significa:
Install Helper Linux From Scratch
Esto se logra creando una copia exacta de tu sistema (una especie de sistema virtual). En esta copia eres completamente libre en lo que haces, sin ningún efecto para el sistema original. En cualquier momento el usuario tiene la opción de “mover” o “vaciar” las modificaciones del sistema virtual al real.
Otro uso para esta técnica es crear un entorno para un usuario, que piensa que está en un sistema real, y actúa de esta manera. Pero mientras tanto puede hacer lo que quiera, sin hacer nada dañino para el sistema real.
Técnica básica
Esto puede sonar como magia, pero en realidad es posible solo combinando algunas técnicas de todas las disponibles para Linux.
Al usar el sistema de archivos Unionfs, un chroot y algunos directorios bien elegidos montados nuevamente, puedes configurar este sistema virtual.
Unionfs
La parte más importante es el uso de unionfs. Unionfs te da la posibilidad de crear un sistema de archivos, que es la unión de al menos otros dos. Consulta www.unionfs.org para más información. Ahora, al dejar que el nuevo sistema de archivos sea la unión de nuestro sistema de archivos original (la raíz) en modo solo lectura, y de un sistema de archivos temporal (la caché) en modo lectura-escritura, tendrás un sistema de archivos que se ve exactamente como tu sistema de archivos original, pero en el que puedes modificar, eliminar y/o añadir archivos sin hacer nada a tu sistema original. Esto no es posible, porque la raíz está montada como solo lectura. Cada modificación es almacenada por el unionfs en la caché.
La única diferencia entre el sistema original y el recién creado es la ruta: en el nuevo sistema siempre comienza con la ruta del punto de montaje de la unión. Por eso el siguiente paso es necesario.
Chroot
Al hacer chroot a este punto de montaje, entras en un entorno que es absolutamente una copia de tu sistema. Puedes hacer lo que quieras, incluso eliminar directorios y archivos cruciales. ¡Pruébalo! Mira hasta dónde puedes llegar antes de que tu sistema se quede atascado.
(Re)Montaje
Una cosa extra que tendrás que hacer es (re)montar varios directorios cruciales como /dev, /proc y /sys. Esto se debe a que el sistema de archivos de unión no preserva los puntos de montaje existentes.
También se recomienda volver a montar algunos directorios especiales como /tmp. Este directorio es utilizado por el script de configuración y el comando make para almacenar resultados temporales intermedios. No quieres que el programa ihlfs registre estos como cambios serios. Eso también cuenta para el directorio donde se construye el código fuente.
Requisitos
Por supuesto, necesitarás una versión reciente de Linux. Busca en el sitio web los núcleos que son compatibles y la versión de Unionfs que necesitas. Un núcleo diferente significa una versión diferente de unionfs.
Tu núcleo debe soportar la carga de módulos.
Además, una partición con suficiente espacio para montar la caché. En este momento, esta es una partición separada.
He comparado el rendimiento de una construcción en mi sistema normal y en el sistema virtual, no he visto diferencias significativas.
Finalmente, IHLFS utiliza comandos que deberían estar en cualquier sistema Linux (como tar, chroot, modprobe, mount, bash, find, grep y bzip2).
Instalación
Descarga el paquete desde mi sitio web:
wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2Descomprime el archivo en un directorio adecuado:
tar -xjf ihlfs-1.0.tar.bz2
cd ihlfs-1.0La instalación de ihlfs se realiza a través del
./install.shscripto. Simplemente crea algunos directorios y copia algunos archivos.
¿Cómo funciona?
Antes de que puedas comenzar, asegúrate de que el sistema de archivos donde irá la caché esté montado. Y verifica la configuración en el archivo de configuración /etc/ihlfs/ihlfs.conf. Cuando todo esté bien, inicia el programa con:
ih-lfsRecibirás algunos mensajes, y cuando todo esté bien, mostrará un aviso:
/:>Ahora puedes ingresar cualquier comando que desees. Ten en cuenta que la unión no admite la preservación de puntos de montaje. Esto puede causar efectos como que los directorios fuente que están montados donde normalmente construyes tu software no estén disponibles.
Cuando quieras ver los cambios hasta ahora, escribe:
listEsto muestra un resumen de los cambios.
Cuando quieras mover todos los cambios de la caché a la raíz, ingresa:
flushEste comando también crea una copia de seguridad de los archivos y directorios que serán sobrescritos, modificados o eliminados y una copia de seguridad de todo lo que será instalado.
Eliminar todos los cambios se hace a través de:
cleanFinalmente, detener la sesión se hace con:
quit o exitEjemplos
Aquí algunos ejemplos simples. Agrega un archivo:
~:>touch /tmp/test4ihlfs
~:>listdará en el visor mcview:
Resumen.
--------
¡No se encontraron archivos y/o directorios añadidos, eliminados, modificados o sobrescritos!Esto es de esperar, el directorio /tmp está eludiendo la unión.
Ahora crea un archivo en otro lugar:
~:>touch /var/tmp/test4ihlfs
~:>listResumen.
--------
Archivos añadidos.
------------
/var/tmp/test4ihlfsContacto
Si encuentras errores o tienes una idea de cómo se podrían hacer las cosas de una mejor manera, ¡háznoslo saber! Mi dirección de correo electrónico es stef en bononline punto nl. Pero antes de que continúes, me gustaría decir que sé que la forma en que he programado las cosas puede no ser siempre la más efectiva. He hecho esto deliberadamente. Cuando se trata de estilo de programación, prefiero la facilidad de lectura sobre la efectividad.
TODO
Este paquete aún no está terminado. Cualquiera que sepa algo sobre gestores de paquetes puede señalarles:
poner la elección del editor en el archivo de configuración
ahora ihlfs tiene solo un modo: interactivo. Crea un entorno para el usuario. Un modo de línea de comandos como:
ih-lfs --command "make install"también debería ser posible.
agregar banderas para identificar el nombre del paquete y la versión que se está instalando.
agregar algunos ejemplos con varios comandos
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.