Diccionario Linux: ¿qué es un repositorio de paquetes?

Si llegaste hace poco a GNU/Linux y te has encontrado con ese concepto (o con el del propio paquete, del cual ya hablé en una acepción anterior), te cuento hoy en qué consiste un repositorio.

Un repositorio de paquetes es un almacenamiento en la web desde el que puedes descargar paquetes en tu sistema. Por lo general, todas las distribuciones GNU/Linux montan su propio repositorio de paquetes en su página web o en un FTP para que puedas agregar paquetes en tu sistema con el centro de software o equivalente.

Esto es algo que hoy en día otros sistemas operativos también intentan ofrecer. Windows y macOS tienen sus tiendas de aplicaciones, con las que puedes descargar programas con un click desde un entorno central. GNU/Linux ya fue pionero en esto de evitarte andar metiéndote por páginas web extrañas, y ofreciéndote en su lugar una forma rápida de descargar programas en tu sistema desde un lugar común.

Es común que las distribuciones tengan al menos un repositorio oficial. Por ejemplo, en el caso de Ubuntu, el repositorio oficial es https://archive.ubuntu.com. Instalar software desde ahí aporta algunas ventajas.

Una de las más importantes es que los paquetes de un repositorio oficial están probados para asegurarse de que son compatibles con tu distribución. Con esto, te evitas dar pasos para que luego el programa ni siquiera abra. Por eso a veces hay paquetes, sobre todo entornos de escritorio, que tardan un par de días o semanas en llegar a los repositorios centrales de algunas distribuciones. Los están probando para asegurarse de que funcionan bien con la distro, y si no, están haciendo algunos ajustes para que se adapten bien.

Porque esa es otra ventaja. A veces los paquetes que hay en un repositorio han sido modificados ligeramente por gente que contribuye a la propia distribución, para asegurarse de que se integra bien con las normas. Uno de los ejemplos más claros es como muchas distribuciones modifican la versión de Mozilla Firefox que empaquetan en sus repositorios para desactivar a la fuerza la telemetría y otras características que podrían comprometer la privacidad de sus usuarios.

Algunas distribuciones, además de los repositorios oficiales, tienen otros repositorios adicionales, que pueden contener software extra que no forme parte del repositorio central. Estos son algunos ejemplos.

  • Debian tiene repositorios adicionales, como non-free o backports. El primero sirve para instalar paquetes que no son libres, por ejemplo, algunos drivers que tengan componentes privativos. El segundo contiene software que ha sido publicado posterior a la salida de la versión de Debian, para intentar acercar las funciones más recientes de esos programas a la versión en curso de Debian.
  • En Ubuntu, es común el uso de PPAs para agregar repositorios de código adicionales empaquetados por terceras personas. Por ejemplo, si un desarrollador independiente fabrica su propio programa, puede crear un PPA para distribuirlo a través de su propio repositorio, que se integra con el gestor de paquetes para controlar las instalaciones y las actualizaciones.
  • En Arch Linux existe el AUR, un repositorio de paquetes para Arch creado por los usuarios, que permite instalar miles de paquetes de todo tipo que, por otra parte, no han sido tan verificados como los que sí hay dentro del repositorio principal de Arch Linux.

Activar Backports en Debian 12

Debian Backports es un repositorio que contiene algunos paquetes selectos tomados de una versión en desarrollo de Debian, que han sido recompilados para que se puedan instalar en una versión anterior de Debian.

El problema de Debian (si es que se le puede llamar problema), es que cuando va a salir una nueva versión, congelan los repositorios. Esto quiere decir que a partir de ese momento, si alguno de los programas que hay en el repositorio recibe una actualización significativa, no va a actualizarse la versión del programa que hay en el repositorio.

Imagina que a los dos meses de salir una versión de Debian se publica la siguiente versión de GIMP o de Inkscape. Por muchas novedades que veas en internet, vas a tardar un par de años en verlas en Debian, porque el paquete del repositorio continuará siendo una versión más antigua. Cuando haces apt upgrade, todo lo que instalas son correcciones de fallos y mejoras de seguridad.

Algunos paquetes pueden optar a ser adaptados para que se pueda instalar una versión más reciente. A modo de ejemplo, si bien en Debian 12 normal, la versión de LibreOffice es la 7.4, la que hay en Backports es, en el momento de escribir esto, la 24.8. Hay una diferencia de dos años entre una versión y otra.

Para activar estos repositorios, si tienes en tu máquina Synaptic, puedes abrirlo, y luego ir al menú Configuración > Repositorios. Pulsa sobre el botón Nuevo (New) para crear un nuevo repositorio, y en la configuración del mismo introduce lo siguiente en los campos:

  • Deja el desplegable como Binario (deb)
  • URI: http://deb.debian.org/debian
  • Distribución: bookworm-backports
  • Sección(es): main
Captura de pantalla de Synaptic
Cómo configurar Backports desde Synaptic

Luego pulsa OK para guardar los cambios, y recarga los repositorios cuando te invite a hacerlo.

Si prefieres hacerlo por la terminal, crea un archivo en /etc/apt/sources.list.d con un nombre que termine en .list con un editor de textos. Por ejemplo, crea un archivo llamado /etc/apt/sources.list.d/bookworm-backports.list. Dentro de ese archivo, pon lo siguiente:

deb http://deb.debian.org/debian bookworm-backports main

Después de guardar los cambios, ejecuta apt update para refrescar los repositorios.

Para instalar un paquete, ten en cuenta que los paquetes de Backports tienen una prioridad menor que los del sistema central. Eso significa que, ante la duda, Debian instalará siempre el paquete que hay en el repositorio principal de Debian antes que el que hay en el repositorio de Backports.

Si quieres instalar un paquete mediante Backports, tendrás que pedirlo explícitamente en el momento de instalarlo. Vamos a poner un ejemplo con Emacs, ya que es un paquete que está en Bookworm-Backports. Si únicamente hicieses apt install emacs, instalarías la versión 28.2, que es la que hay en Bookworm.

Captura de pantalla de Emacs

Para instalar la versión de Bookworm-Backports, que es la 29.4 ahora mismo, cuando uses APT ponle también el parámetro -t bookworm-backports. Por ejemplo, en este caso instalaría Emacs como:

apt install -t bookworm-backports emacs

En teoría, también puedes ponerle al final del nombre del paquete la terminación /bookworm-backports. Sin embargo, he apreciado que a veces esto muestra mensajes de error, porque si ese paquete depende de otros que proceden de Backports, no los va a instalar.

Una vez haya hecho eso, Emacs 29.4 estará instalado en el sistema.

Captura de pantalla de Emacs

Diccionario Linux: paquete

Si estás empezando a usar GNU/Linux, una de las palabras que te vas a encontrar y que se usa en la mayoría de distribuciones GNU/Linux es paquete. ¿Qué quiere decir esto exactamente?

Un paquete no es más que el archivo comprimido (piensa en un .zip o en un .tar) que permite instalar algo en tu ordenador. A menudo ese algo es un programa, pero los paquetes a veces también se usan para instalar manuales de usuario, archivos extra, fondos de pantalla o herramientas de desarrollo.

La ventaja de esto, sobre todo si vienes desde Microsoft Windows u otro sistema operativo donde cada programa se instale a su manera, es que esto da una forma única de instalar nuevo software en el sistema. Y como es única, también facilita que existan programas que hace más fácil instalar el programa.

Esto es algo en lo que GNU/Linux fue de los pioneros, pero que hoy en día otros sistemas han aprendido. Tanto Windows como macOS tienen una «tienda de aplicaciones» que permite instalar programas con un click, igual que en los móviles. Sin embargo, sigue siendo muy habitual que en Microsoft Windows, para instalar un reproductor de vídeo o un navegador web, tengas que descargar un programa ejecutable y seguir un asistente, que además a menudo es diferente entre un programa y otro.

Sin embargo, como en GNU/Linux cada paquete tiene la misma forma, sea lo que sea, existen los gestores de paquetes, que son los programas que se usan para instalar y borrar paquetes con el software de un sistema. Y ese gestor de paquetes es el que se ocupa de la instalación por nosotros, para que no tengamos que aprender a usar cada instalador.

Existen varios formatos de paquete, así que es normal que un programa se ofrezca en varios formatos, para que se pueda instalar en varias distribuciones GNU/Linux.

Por lo tanto, cuando en GNU/Linux quieres instalar un editor de vídeo, o un navegador web, o una hoja de cálculo, lo que haces es simplemente localizar su paquete en internet e instalarlo. Esto a menudo se puede hacer desde la terminal, pero también hay programas gráficos especializados, como el Centro de software, la aplicación Software de GNOME, o Discover de KDE, que te dejan navegar de forma gráfica por la lista e instalarlos pulsando un único botón.

El gestor de paquetes también permite desinstalar programas. Es más potente que en otros sistemas operativos, porque a la que instala un paquete lo analiza para saber qué está copiando sobre el disco exactamente, por lo que cuando vayas a borrar un paquete, conoce exactamente qué archivos forman parte del paquete para saber borrar todo lo que pueda borrarse. En conjunto, el gestor de paquetes forma un potente engranaje que permite clasificar de forma casi perfecta todos los programas que tienes en tu ordenador para que no te falte de nada. Pero eso es una definición para otro artículo.


¿Qué es una biblioteca (o «library») en una distribución GNU/Linux?

Las bibliotecas son una de las partes más esenciales del software, y es una palabra que posiblemente hayas visto en tu gestor de paquetes. ¿En qué consisten realmente?

En raras ocasiones, en GNU/Linux te encontrarás mensajes de error o de advertencia que hacen referencia a palabras como biblioteca o library. También en español se le suele llamar librería, y aunque desde el punto de vista pragmático se refiere al mismo concepto, algunas personas cuestionan este nombre porque la traducción correcta de library es biblioteca. Sin embargo, una pregunta más importante independientemente del nombre es: ¿qué es esto? En este post voy a tratar de definirlo en conceptos simples y sin dar mucha vuelta.

¿Qué es una biblioteca de software?

Una biblioteca de software es una pieza de software que aunque ofrece funcionalidad, igual que la que puedes encontrarte en un programa tradicional, no puede ser clasificado como programa porque como tal no lo puedes lanzar haciendo doble clic sobre su icono o escribiendo un comando de terminal.

El rol de la biblioteca es proporcionar servicios que puedan ser usados por otras piezas de software. Estos servicios a menudo se corresponden con código que es ejecutado por el ordenador a petición de un programa o de otra biblioteca. De este modo, la biblioteca recibe lo que se podría denominar una petición de servicio para que haga una operación, y eso hará que nuestro ordenador procese cierto código máquina proporcionado por la biblioteca para generar un resultado del servicio.

Por poner un ejemplo, en cualquier distribución GNU/Linux podemos identificar varios editores fotográficos, como son GIMP, Inkscape o Krita. Sin embargo, la realidad es que ninguno de estos programas que menciono sabe cómo transformar los ceros y unos que hay dentro de una foto de tipo JPEG en los colores que luego se ven por pantalla. En su lugar, usan los servicios de una biblioteca de manipulación de imágenes JPEG. Esta biblioteca puede ser, por ejemplo, libjpeg.

libjpeg es una biblioteca experta en el manejo de imágenes JPEG. Sabe cómo transformar esos unos y ceros en píxeles, y sabe cómo volver a codificar píxeles para crear una foto nueva. Sin embargo, no puedes interactuar directamente con una biblioteca. No hay un icono para abrir libjpeg, ni tampoco puedes simplemente escribir en la terminal de tu sistema operativo el comando libjpeg para interactuar con este software.

¿Por qué existen las bibliotecas de software?

Puede ser visto desde fuera como poco educado que un programa se aproveche de las funciones de otro para hacer su trabajo. Sin embargo, en realidad esta situación no sólo es ventajosa sino que por evolución hemos llegado a ella. Existen varias razones por las cuales las bibliotecas de software tienen aceptación y se suelen utilizar para distribuir software.

Una de las ventajas es que permite reducir el tamaño de un programa. Si cada programa del mercado tuviese que incorporar su propio descodificador de imágenes JPEG, por ejemplo, los paquetes de software ocuparían más espacio de almacenamiento debido a que cada programa tiene que incluir sus propias instrucciones de procesador para que el ordenador pueda hacer esas tareas. Hoy en día no es un problema tan grande como antes, pero cuando los ordenadores tenían discos duros más pequeños sí que era de agradecer. Incluso hoy en día, en algunas placas de computación y otro tipo de microordenadores, suele ser importante medir para qué se usa cada byte de almacenamiento.

Por otra parte, que la comunidad centre sus esfuerzos en una biblioteca común que sólo sepa hacer bien una cosa pero que la haga bien, facilita que las mejoras que se incorporen a las bibliotecas estén disponibles a la vez para todos los programas que usen sus servicios, algo que hace que todos los programas se beneficien a la vez. Imagina que un día se inventa un algoritmo nuevo que es capaz de decodificar imágenes JPEG mucho más rápido. Si hay que enseñarle ese algoritmo a cada programa, tendríamos programas descompensados que serían más lentos. Si se hace esa mejora en la biblioteca, todos los programas que usen sus servicios pueden verse favorecidos a la vez.

También está el tema de la seguridad. A veces los procedimientos de cálculo que ejecutan los programas pueden ser arriesgados, y un programa malicioso puede aprovecharse de ciertos errores de computación en algunos de estos programas para hacer cosas inapropiadas. Es más sano corregir el error una vez y que todos los programas que dependan de ella se vean beneficiados a la vez, a tener que arreglar por separado cada programa, puesto que algunos no se actualizarán tan deprisa y podría suponer un riesgo de seguridad a los usuarios.

¿Por qué a veces las bibliotecas de software dan problemas?

Las bibliotecas de software no siempre funcionan bien. En ocasiones, puede ocurrir que un servicio se presta diferente en la versión 1.0 de una biblioteca, que en la versión 2.0 de la misma biblioteca. Si un programa ha determinado que necesita la versión 1.0, pero otro programa necesita usar la versión 2.0, será complicado satisfacer ambas demandas sin instalar a la vez ambas versiones.

Soluciones como AppImage buscan precisamente solucionar estos problemas haciendo que cada paquete de software traiga consigo mismo una copia separada de la biblioteca, a costa de perder las ventajas para el usuario final. Los programas que se distribuyen como AppImage pesan más, y si se instalan varios puede ocurrir que ocupen más espacio. Sin embargo, resulta útil para solucionar este tipo de problemas por lo que al final del día, dado el tamaño de los medios de almacenamiento típicos de la actualidad, no se considera un problema.

Flatpak y Snap resuelven este problema de forma más limpia, permitiendo que múltiples versiones de una misma biblioteca estén instaladas a la vez en el ordenador pero en lugares separados, y utilizando un sofisticado sistema de resolución para que un programa indique de forma exacta qué versión de una biblioteca necesita que le proporcione servicios.

wxWidgets 3.2 puede traerte dolores de cabeza al actualizar en Arch Linux

Si utilizas Arch Linux, es posible que la última actualización de wxWidgets te traiga algún dolor de cabeza al actualizar tu ordenador, como han advertido recientemente desde el propio sitio de noticias de Arch Linux.

Hace una semana salió wxWidgets 3.2, la primera versión del framework para aplicaciones gráficas en casi 9 años. Cuesta creerlo pero wxWidgets todavía no soportaba algunas funciones que en otros frameworks para hacer aplicaciones gráficas sí son ya habituales, como el soporte para modo oscuro, el modo de alta resolución compatible con pantallas de alto DPI o el soporte para Wayland.

Una de las novedades de wxWidgets es que, en el caso de UNIX, ha empezado a soportar de forma experimental el uso de QT además de GTK+, que es lo que se usaría ahora mismo al ejecutar este tipo de aplicaciones en sistemas operativos como GNU/Linux o un BSD. Sin embargo, esto tiene algunas consecuencias inesperadas.

Arch Linux ha anunciado recientemente que, debido a que wxWidgets ahora proporciona una forma de generar aplicaciones usando QT en vez de GTK+, el viejo nombre de los paquetes, wxgtk, ya no suena muy convincente ni seguro a largo plazo. Es por ello que han renombrado los paquetes de wxgtk a wxwidgets. Sin embargo, los problemas no acaban ahí. Con esta nueva versión de wxWidgets se elimina el soporte para el viejo frontend basado en GTK2. Podría parecer muy osado que un framework siga manteniendo GTK+ 2, pero cabe repetir que esta es la primera versión en ¡nueve años! Por entonces apenas había salido GNOME 3.8 y se estaba trabajando en GNOME 3.10, de modo que GTK+ 3 era un invento más reciente (y también menos querido) que ahora.

Eso significa que si tienes alguna aplicación que todavía esté usando este backend, va a haber problemas cuando ocurra el proceso de actualización. Tal como indican en el propio anuncio, si al actualizar obtienes problemas como que se te diga que wxgtk2 depende de wxgtk-common, deberás solucionar esto manualmente eliminando wxgtk2 de tu sistema usando pacman -Rs wxgtk2, o algo equivalente para eliminar ese paquete de tu sistema, antes de seguir actualizando.

dnfdragora es el verdadero gestor de software gráfico para Fedora

dnfdragora es una interfaz gráfica alternativa para instalar paquetes en Fedora sin pasar por la línea de comandos.

DNF es el gestor de paquetes estandar de Fedora. Por lo general, cuando quieres instalar un paquete en tu instalación de Fedora recién instalado, tienes dos opciones: utilizas DNF desde la línea de comandos, o te vas a GNOME Software. Sin embargo, si has pasado el suficiente tiempo en GNOME Software, te habrás dado cuenta de que no muestra todo el software que puede instalarse en el sistema. En particular, parece que GNOME Software solamente tiene interés en mostrarte software gráfico, pero te va a esconder comandos que sean de línea de comandos.

Si en algún momento necesitas visualmente una forma de poder listar los paquetes que tienes instalados en el ordenador, posiblemente te preguntes si existe alguna alternativa en Fedora que sea equivalente al Synaptic que los usuarios de distribuciones basadas en Debian tienen a mano si se instala desde el centro de software, cuando es que no venga preinstalado por defecto. DNF es un programa bueno, pero a veces escanear la información resulta un poco complicado.

En el caso de DNF, existe una herramienta visual llamada dnfdragora que puede hacer las veces precisamente de esa herramienta visual. dnfdragora la encuentras (irónicamente) en la aplicación GNOME Software, y una vez instalada es una aplicación que puedes usar para listar todos los paquetes disponibles a través de DNF, sean gráficos o no.

Interfaz de usuario principal de dnfdragora
La interfaz de usuario de dnfdragora es simple y dentro de lo esperable para este tipo de programas.

Si algo en contra tiene dnfdragora, es su poca estabilidad. Navegar por el programa es como recorrer un campo de minas, en tanto que de vez en cuando te encontrarás con que el programa muestra un mensaje de error sin venir a cuento al cambiarse de categoría o navegar por las aplicaciones, que cierra todo el programa.

Sin embargo, si tienes la suficiente suerte, puedes utilizar dnfdragora para buscar paquetes que cumplan un determinado propósito. En este sentido, cuando no tenemos muy claro lo que tenemos que instalar, dnfdragora puede resultar una forma más fácil de localizar estos paquetes ya que visualmente podemos ver todos los resultados de una búsqueda en una tabla que podemos consultar de forma fácil y visual.

Resultados de búsqueda
Resultados de una búsqueda con dnfdragora.

dnfdragora también nos permite, a través de su sistema de menús, modificar los repositorios activos, lo cual es práctico si tenemos repositorios extra y queremos temporalmente apagar o encender algunos, aunque se echa en falta una opción para agregar repositorios. Una de las ventajas de dnfdragora es que hace fácil encontrar paquetes que estén en varios repos a la vez, por ejemplo en fedora, updates y un repo de terceras fuentes que hayamos agregado.

Cuando hayamos marcado lo que queremos instalar, o desmarcado lo que queremos desinstalar, podemos usar el botón Apply para ver los cambios que se van a producir en el sistema, y finalmente aceptar si estamos de acuerdo para ejecutar los cambios, como si estuviésemos usando el comando desde la terminal.

Captura de pantalla del resultado de la transacción
dnfdragora nos pedirá confirmar la transacción antes de instalar o desinstalar paquetes