Objetivo:
Comprender y comparar los diferentes paradigmas de empaquetado de software en Linux, instalando, gestionando y aislando aplicaciones mediante gestores universales modernos (Snap y Flatpak) frente al modelo tradicional de paquetes nativos de la distribución.
Escenario:
- Herramientas: Terminal Linux,
snap,flatpak,apt, Flathub y Snap Store. - Conceptos analizados: Empaquetado universal, aislamiento de aplicaciones (*sandboxing*), dependencias empaquetadas (*bundles* vs. compartidas), control de permisos y repositorios de nueva generación.
- Proceso clave: Habilitación de repositorios universales, instalación y ejecución de software aislado, gestión de permisos mediante interfaces/oversides y comparación de rendimiento y espacio en disco.
Escenario Real: La versión del repositorio oficial está obsoleta
Un usuario necesita utilizar la última versión de una herramienta de diseño o desarrollo software, pero los repositorios nativos estables de la distribución ofrecen una versión antigua con fallos de seguridad ya corregidos. Actualizar las bibliotecas base del sistema operativo para soportar la nueva versión rompería otros servicios estables. Como administrador, debes implementar soluciones de empaquetado universal (Snap o Flatpak) que incluyan sus propias dependencias aisladas, permitiendo ejecutar software actualizado sin comprometer la estabilidad del sistema base.
Snap (impulsado por Canonical) y Flatpak (enfocado principalmente al escritorio y respaldado por la comunidad GNOME/Red Hat) empaquetan la aplicación junto con todas sus dependencias necesarias dentro de un entorno autocontenido y aislado (*sandbox*).NOTA: Esta práctica se realizará sobre nuestro entorno Linux de prácticas habitual. Asegúrate de disponer de conexión a internet para poder descargar los paquetes desde los repositorios universales correspondientes.
Instrucciones:
Fase 1: Preparación de los gestores universales en el sistema:
- Comprobar si el demonio de Snap está activo en el sistema operativo:
sudo snap version
- Instalar y configurar el soporte para Flatpak y su repositorio de referencia principal (*Flathub*) en caso de no disponer de él:
sudo apt update && sudo apt install flatpak -y flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Fase 2: Instalación y gestión de aplicaciones mediante Snap:
- Instalar una utilidad o herramienta de desarrollo mediante el gestor
snap(por ejemplo, el editor de texto de código abierto vscode en versión clásica o una herramienta ligera):sudo snap install htop --classic
- Listar los paquetes Snap instalados actualmente en el sistema y comprobar su estado de confinamiento:
snap list
- Para consultar los detalles de conexiones y permisos (*plugs* y *slots*) que delimitan el aislamiento de un Snap:
snap connections htop
Fase 3: Instalación y gestión de aplicaciones mediante Flatpak:
- Instalar una aplicación de usuario mediante el ecosistema
flatpakdesde el repositorio de Flathub (por ejemplo, el editor gráfico GIMP o una utilidad de red):flatpak install flathub org.gimp.GIMP -y
- Ejecutar la aplicación instalada mediante Flatpak directamente desde la terminal o el entorno gráfico:
flatpak run org.gimp.GIMP
- Listar todas las aplicaciones Flatpak instaladas en el sistema:
flatpak list
apt que comparten bibliotecas comunes del sistema para ahorrar espacio, tanto Snap como Flatpak duplican ciertas dependencias (*runtimes*) dentro de cada aplicación, lo que incrementa el consumo de almacenamiento en disco a cambio de garantizar total independencia y seguridad.Fase 4: Auditoría de permisos y control de aislamiento (*Sandboxing*):
- Para auditar y modificar los permisos de acceso a recursos del sistema (como cámaras, archivos personales o red) en aplicaciones Flatpak, utilizamos el inspector de permisos:
flatpak permission-show
- Herramientas gráficas auxiliares como Flatseal permiten gestionar de forma visual y detallada qué puede hacer cada paquete Flatpak dentro de nuestro equipo.
Verificación:
- Comprobar la coexistencia de los tres modelos de paquetes ejecutando un informe general de software instalado (comparando las rutas de ejecución de un binario nativo frente a un snap o flatpak).
- Desinstalar de forma limpia una aplicación Snap y otra Flatpak para comprobar la liberación de sus entornos aislados:
sudo snap remove htop flatpak uninstall org.gimp.GIMP -y
Posibles errores y resolución de problemas:
Si al intentar arrancar una aplicación instalada mediante flatpak aparece un error indicando que falta el entorno de ejecución necesario (*runtime missing*), se debe a que la aplicación requiere una versión específica de las bibliotecas base de GNOME o KDE que no se descargaron automáticamente durante la instalación.
Solución: Fuerza la actualización y reparación de dependencias de Flatpak ejecutando en la terminal:
flatpak update --appstream && flatpak repair
Preguntas de reflexión:
- ¿Qué ventajas e inconvenientes principales presenta el uso de paquetes universales (*Snap/Flatpak*) frente al sistema de gestión de paquetes nativos tradicional de una distribución (como
apt)? - ¿Cómo funciona el concepto de aislamiento (*sandbox*) en los formatos universales y por qué aporta mayor seguridad frente a la ejecución de código tradicional?
- ¿Qué diferencias estructurales clave existen entre el modelo de centralización de repositorios de
Snap(controlado por Canonical) y el modelo descentralizado deFlatpak(con Flathub)? - ¿Por qué el consumo de espacio en disco suele ser superior cuando se gestionan aplicaciones mediante contenedores universales en comparación con el software empaquetado de forma nativa?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Qué ventajas e inconvenientes principales presenta el uso de paquetes universales (*Snap/Flatpak*) frente al sistema de gestión de paquetes nativos tradicional de una distribución (como apt)?
Ventajas: Permiten disponer siempre de la última versión actualizada del software independientemente de la antigüedad de la distribución base, y evitan conflictos de dependencias entre aplicaciones.
Inconvenientes: Mayor consumo de almacenamiento en disco debido a la duplicación de bibliotecas, tiempos de arranque inicial ligeramente superiores y un control más complejo sobre los permisos del sistema operativo.
2. ¿Cómo funciona el concepto de aislamiento (*sandbox*) en los formatos universales y por qué aporta mayor seguridad frente a la ejecución de código tradicional?
El aislamiento (*sandbox*) ejecuta la aplicación dentro de un entorno virtualizado y restringido que limita su acceso directo al hardware, a los archivos del sistema de archivos principal y a otras aplicaciones. Esto aporta seguridad porque, si una aplicación se ve comprometida o sufre una brecha de seguridad, el atacante queda confinado dentro de ese entorno cerrado sin poder corromper el resto del sistema operativo.
3. ¿Qué diferencias estructurales clave existen entre el modelo de centralización de repositorios de Snap (controlado por Canonical) y el modelo descentralizado de Flatpak (con Flathub)?
Snap utiliza una arquitectura centralizada donde el servidor backend (*Snap Store*) está gestionado exclusivamente por Canonical, lo que otorga un control unificado pero limita la interoperabilidad con otros proveedores. Flatpak, en cambio, sigue un modelo descentralizado basado en estándares abiertos donde cualquier desarrollador o entidad puede hospedar su propio repositorio de paquetes, siendo Flathub el punto de encuentro comunitario principal.
4. ¿Por qué el consumo de espacio en disco suele ser superior cuando se gestionan aplicaciones mediante contenedores universales en comparación con el software empaquetado de forma nativa?
Porque los paquetes nativos comparten un conjunto centralizado de bibliotecas del sistema operativo (*shared libraries*), de modo que si diez programas usan la misma biblioteca, esta solo se almacena una vez. En cambio, los formatos universales empaquetan dentro de la propia aplicación o comparten a través de *runtimes* aislados las versiones de las bibliotecas que necesitan, lo que genera duplicidades en el almacenamiento.