Abandonando-los-repositorios.jpg

Una de las características más conocidas de los sistemas Linux posiblemente sea que los programas se instalen a partir de unos servidores con colecciones inmensas de paquetes utilizando un programa llamado el gestor de paquetes que se encarga no sólo de descargar e instalar el programa deseado sino también todos aquellos programas y bibliotecas que sean necesarios para su funcionamiento –las llamadas “dependencias”–. El gran problema de este sistema ha sido, históricamente, el hecho de que el sistema de repositorios implica que haya un paquete del mismo programa para múltiples distribuciones. Pues bien, primero Android con su formato APK y ahora un par de proyectos buscan cambiar esto con el objetivo de que se puedan instalar aplicaciones en distribuciones Linux sin pasar por un repositorio, sino instalando un paquete que integre todas o casi todas sus dependencias y sea utilizable en cualquier distribución sin recompilar.

Sé que la idea de empaquetar los programas en “imágenes autocontenidas” (self-contained images) evocará a muchos a la situación absolutamente corriente en Windows y OS X. Inmediatamente, la reacción será la de rechazo y se sucederán los contraargumentos típicos contra tal modelo: que los repositorios son más seguros porque están firmados, que esto implicará que cada programa llevará su versión de la misma biblioteca y eso multiplica las posibilidades de que quede alguna versión vulnerable, que los binarios ocuparán más espacio en disco y en memoria –las bibliotecas compartidas ayudan a reducir uso de memoria–, etc. Sin embargo, tenemos que admitir que la situación a la que nos ha llevado el sistema de repositorios puede llegar a ser muy incómoda para los usuarios de distribuciones de escritorio que quieren tener las últimas versiones de ciertos programas que conviene que estén en la última versión debido a la rápida incorporación de mejoras o nuevas funciones, a saber, navegadores, procesadores de texto, clientes de correo, entre otras. Las distribuciones de lanzamiento periódico más “rápidas” tardan como mínimo 6 meses en ofrecer las últimas versiones de programas de esta clase y agregar repositorios de backports o de terceros que incorporan versiones más modernas pueden traer problemas al incorporar versiones nuevas de bibliotecas que acaben desestabilizando el resto del sistema. Por otro lado, un modelo de lanzamiento continuo no es recomendable para ciertos perfiles de usuario o imposible cuando se requiere estabilidad en el sistema base.

Si sumamos, además, que la mayoría de los proyectos de aplicaciones web piden encarecidamente evitar las versiones empaquetadas en los repositorios de las distribuciones –jamás instaléis el paquete wordpress de Debian… es un horror mayúsculo–, porque prefieren utilizar sus propios métodos de actualización más rápidos y sin intermediaros, vemos que el modelo de repositorios tiene sus limitaciones incluso fuera del agradable mundo del escritorio.

Una de las que viene reclamando un sistema nuevo de distribución de software para distribuciones de escritorio es el mismísimo Linus Torvalds, como explicó en su participación en la DebConf14. Su queja procedía de la experiencia de distribuir el único programa que ha escrito que se puede considerar una “aplicación de escritorio”: Subsurface, un programa que registra datos de inmersión submarina. El diagnóstico de Torvalds es absolutamente irrebatible: mientras que para OS X y Windows el proyecto Subsurface puede ofrecer un binario compilado directamente de parte de los desarrolladores, para las distribuciones Linux Subsurface sólo puede ofrecer el código fuente para que sean las distribuciones las que creen los paquetes o, si no, tener que crear un paquete para cada “familia” de formato de paquete (un paquete dpkg, un paquete RPM, un paquete ALPM, etc.), sin poder garantizar que las dependencias se cumplirán en todo momento en cada versión de cada distribución. Y Torvalds no está solo en estas quejas: recientemente el desarrollador de XScreenSaver estalló en cólera porque los usuarios de Debian están atrapados en una versión antigua que tiene fallos y le piden a él que los resuelva, cuando ya están resueltos desde hace años en upstream (y las nuevas versiones no se pueden instalar en Debian estable por incompatibilidades con bibliotecas antiguas).

Las soluciones propuestas son dos, principalmente, si excluimos el caso de los APK de Android. Por un lado tenemos AppImage, un sistema que, simplemente, crea un paquete en un formato altamente comprimido que juega con lo que se llama “formato políglota” para que, al ejecutarse, se autoextraiga como un ELF64 o ELF32 con todas sus bibliotecas vinculadas estáticamente en él, por lo que funcionará en todas las distribuciones Linux sin importar qué esté instalado en él. El formato de AppImage permite incrustar una firma criptográfica OpenPGP, por lo que la confianza en el programa se podrá comprobar: si la comprobación de la firma OpenPGP fallara, el programa no se ejecutará. Uno de los primeros programas que se está distribuyendo en este formato es Subsurface, justamente, pero aún de forma experimental; lo he probado y funciona perfectamente. También hay ya “imágenes” para Blender, Chromium, etc. Por el otro lado, tenemos el esfuerzo de, ¡cómo no!, la gente de Freedesktop.org y GNOME, llamado XDG-App e inspirado en una entrada de Lennart Poettering en su blog, que se parece mucho más al concepto de las aplicaciones de Android que al “empaquetado universal” de AppImage (que se asemeja más a los ejecutables de Windows y OS X). Las aplicaciones XDG-App se desarrollan específicamente para un entorno de ejecución específico que las “encajona” para que no puedan acceder a todo el sistema operativo, ni siquiera a partes para las que el usuario tenga permisos UNIX para acceder o modificar. En principio, el plan inicial parece utilizar esta idea para crear una especie de “ecosistema” de aplicaciones GNOME una vez que Wayland esté soportado para uso normal (cosa que está cada vez más cerca), debido a la inseguridad inherente a X11 incluso cuando está contenido por logind a una sesión de usuario regular.

Antes de que alguien crea que esto implica perder las grandes ventajas que tiene el sistema de repositorios –de las cuales rescato dos fundamentales: la resolución de dependencias y que garantizan la estabilidad y coherencia del sistema operativo– o que estamos poco menos que a punto de perder ese toque “técnico” que deberían tener, según algunos, los sistemas Linux, quiero recalcar que nadie en su sano juicio ha propuesto eliminar los repositorios, sino trabajar en unos métodos de distribución complementarios y fiables para ese tipo de programas para los que conviene que no existan intermediarios entre el proyecto y el usuario. El sistema operativo en sí –su infraestructura– seguiría distribuyéndose, tanto como si se adoptase AppImage como si, en cambio, se adoptase XDG-App, mediante repositorios. De hecho, AppImage no crea una instalación persistente del binario –los datos que el programa cree bajo /home sí se mantienen–, por lo que sería técnicamente imposible distribuir de tal manera una biblioteca compartida o nada que otros programas requieran como dependencias. En el caso de XDG-App es aún más evidente que su objetivo es acoger aplicaciones del estilo de Android y no para distribuir partes esenciales del sistema.

Quienes quedarán absolutamente fuera de juego, en mi opinión, si esto prospera, son las distribuciones de boutique de lanzamiento continuo del estilo Manjaro o KaOS y similares, pensadas para el usuario final novato, aunque en la realidad sólo son estables si hay conocimientos de cómo mantener una base cambiante de forma constante. Dichas distribuciones se vuelven atractivas fêmmes fatales para los usuarios novatos cuando éstos se dan cuenta de que, por ejemplo, en un Ubuntu o en un Linux Mint no tienen la última versión de Firefox o Chromium o LibreOffice y otras aplicaciones en las que sí es interesante, a veces, tener esa última versión. Sin embargo, ya sabéis que para mí esas distribuciones son el equivalente linuxero a vender acciones preferentes a alguien sin conocimientos financieros. Si se volviera posible tener esos paquetes actualizados sin tener que usar una distribución de lanzamiento continuo, la combinación perfecta será un Ubuntu o Mint con esas aplicaciones en “imágenes autocontenidas”: estabilidad en el sistema y novedad limitada en lo más atractivo. Distribuciones como Arch Linux o Gentoo, en las cuales tenemos lo último de lo último –salvo casos extraños de encargados de paquetes que desaparecen sin rastro– en cambio, atienden a un público diferente que sabe bien qué riesgos hay en un modelo de lanzamiento continuo.

Si hacemos un poco de memoria y pensamos en la arquitectura de cualquier distribución Linux de hace cinco o seis años –y qué decir de hace diez–, la arquitectura actual y aquélla se parecen lo que un huevo a una castaña, dicho coloquialmente. Pensad un segundo y veréis que antiguamente teníamos X11 funcionando como root donde ahora los que usamos GNOME tenemos X11 “enjaulado” en un proceso ejecutado por el usuario normal, antes el arranque utilizaba una maraña de niveles de ejecución y una maraña de scripts donde ahora tenemos una especie de meta-demonio un poco imperialista llamado systemd, HAL fue reemplazado por udev y hemos pasado por otros cambios que no hace falta mencionar. No todos los cambios son buenos y algunos se acaban perdiendo en la noche de los tiempos –¿a que nadie se acuerda de la fiebre de GNOME por usar Mono para ese extraño “D-Bus” llamado Bonobo y que GNOME 3 tuvo que erradicar?–, pero pretender que el sistema se quede estancado en una arquitectura “clásica” puede significar perder oportunidades de que más usuarios disfruten de la libertad en su informática y que puedan ser potenciales colaboradores en el futuro. Bienvenidos sean, pues, estos experimentos para cambiar y facilitar la instalación de programas típicos de escritorio y si la implementación funciona y trae mejoras, adelante.

Nota: Después de acabar la redacción de la entrada pero antes de su publicación he visto la noticia de que Ubuntu implementará en 16.04 LTS un sistema similar a XDG-App llamado Snapcraft, y sus paquetes llamados “Snap”. Se ve que la tendencia abierta por AppImage y XDG-App se confirma y, como esta noticia no contradice nada de lo que he escrito, he preferido simplemente añadir esta nota. Gracias a José Tannhausser de “La Mirada del Replicante” por la publicación de la noticia.

 

Imagen: Brown paper packages tied up with strings, por Kate Ter Haar, publicado bajo CC-BY 2.0.

Fuente: etccrond

¿Quién está en línea?

Hay 34883 invitados y ningún miembro en línea