Paquetes

Este post empezó siendo una respuesta a un novato en un grupo de Facebook sobre Linux. Esto demuestra que 1).A veces escribir es como rascar: todo es empezar. y 2).No es verdad que la primera respuesta que damos los usuarios de Linux a los novatos sea siempre "búscate la vida".

¿Por qué hay tantas distribuciones si todos los Linux usan casi los mismos programas? ¿No sirven los programas de unas en otras?

Los famosos paquetes de Linux.

Al llegar desde Windows o Mac, el nuevo usuario de Linux se encuentra con que hay una enorme variedad de distribuciones. Y lo curioso es que en cuanto uno busca un poco se da cuenta de que en realidad todas ellas comparten los mismos programas: Firefox, LibreOffice, Gimp, K3B... pero aún así tenemos muchísimas distribuciones o "distros" y cuando visitas la web de un programa encuentras que hay una versión PPA, una versión DEB otra RPM, otra TAR.GZ...



¿Qué es lo que pasa?

No, no me refiero a esta
clase de paquetes.
Básicamente, las diferencias entre una distribución de GNU-Linux basada en Debian o Ubuntu y otra basada en Arch, en Slackware, etc, son, dicho así a lo bruto, diferencias en los paquetes.

Los paquetes son lo que en otros sistemas operativos se conocen como aplicaciones o programas. En Linux se habla de "paquetes" de software.

A diferencia de Windows o Mac, o Android donde tienes programas para descargar desperdigados por Internet, cada uno en la web de su fabricante (por ejemplo, te compras Autocad y lo descargas de la tienda de Autodesk, el driver de las gráficas de Nvidia te lo bajas de su web, una utilidad freeware te la bajas de la web del desarrollador, etc...) en Linux todo lo que necesites ("salvo alguna cosa") está en los repositorios oficiales de tu distribución.

Es decir. Cuando instalas cualquier distro GNU-Linux tu sistema guarda internamente unas direcciones web especiales desde las que se descargará todo. Desde las actualizaciones y parches hasta los programas, utilidades, temas de escritorio, packs de iconos, salvapantallas, etc, etc, etc que quieras añadir a tu sistema. Todo tiene pues un lugar centralizado (el repositorio) donde está TODO lo que necesitas para tu sistema.

¡Ese es el espíritu! Nunca es
tarde para aprender.
En Linux sólo los usuarios más expertos se deberían aventurar a instalar cosas fuera de los repositorios oficiales, puesto que es raro necesitar tal cosa. ¿Que quiero un programa de retoque fotográfico? Pues Gimp estará en los repos. ¿Una utilidad para ver lo que ocupan las carpetas? Filelight, Baobab... estarán en los repositorios. ¿El último driver de nvidia? ¿Un salvapantallas con vacas saltarinas? ¿Un tema de iconos? ¿Un nuevo Kernel? Todo estará ahí, en los repositorios.

Normalmente el sistema de repositorios funciona muy bien en cualquier distribución, y el sistema se encarga de buscar periódicamente el servidor más adecuado, más rápido.

Entonces ¿cuál es la diferencia entre las distintas familias de distros? Pues hay varias diferencias, que se podrían resumir en la forma de preparar los paquetes y la forma de manejarlos.

Podríamos decir, para simplificar, que los repositorios de cada distro son específicos para ella. Si tienes Ubuntu podrías utilizar algunos o todos los repositorios de Linux Mint, porque al ser de la misma familia serán compatibles. También los de Debian, que siguen estando en la misma gran rama de Linux. Pero también es probable que al mezclar repositorios acabes rompiendo tu sistema.

Por eso se inventaron, por ejemplo, los PPA. Los PPA fueron la solución de Ubuntu para hacer más fácil el manejo de repositorios. Imagínate que tienes una tarjeta PCI rara, rara, rara. Una capturadora de vídeo antigua que no se soporta -aunque eso es también raro- en el kernel Linux. Y resulta que un entusiasta del vídeo y del software antiguo ha conseguido escribir el driver específico para esa capturadora. Pues bien, aparte de poner en su web el código fuente para compilar y un paquete .rpm el desarrollador se ha currado un PPA (un repositorio específico) para tu tarjeta y que es compatible con todas las distros Debian, incluida Ubuntu. Basta que le des clic a un enlace y el sistema Ubuntu te preguntará si quieres añadir el repositorio. Y ya tienes el driver.

¿Suena bien, no? Lo cierto es que facilita mucho las cosas a los novatos. En otra gran familia, las distros basadas en ARCH se inventaron AUR, que es un enorme repositorio libre desde el que puedes instalar a base de scripts ya preparados. En Arch, Manjaro o Chakra (en Chakra se llama de otra forma pero es el mismo sistema) utilizan ese método para lo que se queda fuera de los repositorios oficiales.

En resumen, los repositorios oficiales de cada distro son específicos para ella, pero son compatibles entre sí los que pertenecen a la misma familia, y más compatibles cuanto más parecidas sean las distribuciones (cuanto más parentesco haya). Esto significa que si tengo una distro basada en Debian puedo utilizar un repositorio de LMDE (también Debian) sin casi problemas. Pero si quiero usar uno de ElementaryOS (basado en Ubuntu, basado a su vez en Debian) debo extremar las precauciones. Si tengo Manjaro puedo usar los repos de Arch tranquilamente. Pero si uso Chakra, que también deriva de Arch pero está más diferenciada, un repo de Arch me romperá el sistema con más probabilidad. Lo que no podré hacer de ninguna manera es incluir un repositorio de Arch en Ubuntu, porque son familias totalmente diferentes, y sus paquetes no son compatibles.

Otra manera de instalar, no obstante, es descargarse un paquete e instalarlo. En Debian, Ubuntu, Mint, Elementary... los paquetes tienen extensión .deb En RedHat o Fedora, .rpm, y en Arch, Manjaro o Chakra, .tar.xz
Normalmente no se puede utilizar directamente un paquete de una distro que usa un tipo de paquetes en otra que usa otro tipo de paquetes porque tienen diferente estructura interna. Pero existen herramientas de software que "traducen" desde un tipo de paquete a otro para los casos más desesperados.

Los perfeccionistas de la limpieza del sistema y el ajuste pueden  simplemente bajarse el código fuente del programa y "compilarlo" a través o bien de un instalador automatizado (script) o de una serie de comandos comunes a todos los sistemas operativos Linux. Algunas distros siempre utilizan este método, no disponiendo de paquetes como los de Debian o RedHat. La compilación hace que cada programa esté mucho más adaptado a tu ordenador en concreto, pero el proceso es más largo y no exento de dificultades.

En Ubuntu, por último, que en este tipo de cosas suele estar en la vanguardia, también además de estos, otro sistema para instalar aplicaciones consistente ni más ni menos que en una "tienda" de aplicaciones como la de iOS o Android. Basta seleccionar un icono y pulsar en "instalar". Esto simplifica muchísimo las cosas para los novatos, y la idea ha sido copiada ampliamente por otras distribuciones.

El Software Manager de Mint. Calcadito
del de Ubuntu, por cierto.
Y el núcleo, pues en fin, el núcleo Linux (kernel) va sacando constantemente nuevas versiones que cada vez incluyen más correcciones, más drivers y mayor compatibilidad. Algunas veces se  retira el soporte a hardware antiguo, por lo que no siempre es verdad que un núcleo más nuevo vaya a funcionarte mejor. Digamos que hay que ir probando y documentándose un poco antes de elegir una distro u otra porque el núcleo que incluyan de base puede hacer que tu ordenador funcione mejor o peor. Como norma general si tienes una tarjeta gráfica antigua de ATI un núcleo muy moderno puede darte problemas. A las nvidia también les afecta, pero los drivers genéricos libres suelen funcionar más o menos bien. REGLA DE ORO: prueba con una LIVE-CD.

Cuando llevas un tiempo con tu distro instalada normalmente acaba actualizándose el núcleo. Yo uso Chakra y ya estoy en la versión 3.15.
Si te va mal la versión nueva, durante el arranque casi cualquier distro ofrece la posibilidad de seguir usando el núcleo antiguo, y luego podrías desinstalar el nuevo y volver a la versión antigua. Porque hasta el núcleo para GNU-Linux es "un paquete más".