Linux al día: la forma correcta de actualizar tus repositorios

Linux al día: la forma correcta de actualizar tus repositorios

Rubén Velasco

A la hora de instalar aplicaciones y programas en Linux hay varias formas de hacerlo. Los usuarios más avanzados pueden optar por descargar el código fuente desde la web del desarrollador y compilarlo directamente en su ordenador. Algo muy lento y poco práctico en realidad. Los usuarios más inexpertos suelen optar por la vía fácil: buscar y descargar el binario (por ejemplo, el .deb) e instalarlo, desde el gestor de paquetes, haciendo doble clic. Como en Windows. Y, en tercer lugar, tenemos a los usuarios intermedios que buscan comodidad y facilidad y hacen uso de los repositorios de Linux para descargar, instalar y actualizar sus programas.

¿Qué son los repositorios de Linux? Distintos tipos

Los repositorios son una de las mejores características que tiene Linux. Un repositorio es una lista de programas, generalmente siempre actualizada, que nos permite buscar y descargar fácilmente todo tipo de programas y herramientas en nuestra distribución.

Gracias a los repositorios vamos a poder tener un lugar seguro y fiable desde el que descargar software y las últimas actualizaciones de todos nuestros programas. Estos programas se instalarán sin ningún tipo de problema de dependencias, y además podremos actualizar todo nuestro repertorio de programas con un sencillo comando.

Las desarrolladoras de las distros suelen incluir sus propios repositorios con programas útiles. Además, muchas desarrolladoras mantienen sus propios repositorios independientes para distribuir sus programas. Incluso cualquier usuario puede crear y mantener su propio repositorio, muy útil, por ejemplo, para distribuir listas de software.

Cuando instalamos Ubuntu, la distro instala una serie de repositorios pertenecientes a distintos canales:

  • Main: el repositorio instalado por defecto. Consiste en software libre FOSS que puede ser distribuido libremente y sin restricciones.
  • Universe: incluye software gratis y de código abierto, pero no puede garantizar las actualizaciones regulares de seguridad.
  • Multiverse: incluye software que es de la FOSS. Debe ser el usuario quien analice las licencias y decida si puede, o no, usar estos programas de forma legal.
  • Restricted: dentro de este canal podemos encontrar software de código cerrado. Es utilizado, por ejemplo, para distribuir los drivers de NVIDIA, entre otros muchos.
  • Partner: incluye software propietario que ha sido empaquetado por Canonical.

Y además de estos repositorios, también podemos añadir repositorios de terceros a nuestra distro Linux para instalar otro tipo de software de forma segura.

Los pasos que vamos a ver a continuación se han realizado sobre Ubuntu, pero deberían ser iguales para cualquier distro basada en Debian.

Cómo añadir nuevos repositorios a la lista de software

El proceso para añadir nuevos repositorios en Ubuntu se puede realizar tanto desde la interfaz gráfica como a través de comandos de terminal.

Utilizando la interfaz gráfica

Para los usuarios que están dando los primeros pasos en Linux y la interfaz de línea de comandos le suena a chino, pueden utilizar la interfaz gráfica para realizar los mismos procesos, pero con una interfaz mucho más amigable (especialmente si vienen de Windows o macOS) para comprobar tanto el número de repositorios que tenemos instalados en el equipo como para añadir nuevos repositorios. Lo primero que debemos hacer es pulsar en Mostrar aplicaciones, botón situado en la equina inferior de la pantalla. Dentro de este apartado, debemos buscar Software y actualizaciones.

A continuación, pulsamos en la pestaña Otro software. Si tenemos algún repositorio instalado en el equipo, se mostrará en esta pestaña. Desde esta pestaña, podemos tanto añadir nuevos repositorios como eliminarlos. Para añadir nuevos repositorios, debemos pulsar en el botón Añadir. En el cuadro de texto situado justo a la derecha de Línea APT, debemos escribir la dirección del repositorio que queremos añadir a la distribución que estamos utilizando (en este caso se trata de Ubuntu).  Para confirmar que somos los legítimos dueños del equipo, debemos introducir la contraseña de acceso.

Instalar repositorios Linux

A continuación, se volverá a mostrar la pantalla Otro software, donde, si hemos introducido correctamente la dirección, se mostrará el repositorio correspondiente.

Instalar repositorios Linux

Si queremos eliminar el repositorio, tan solo debemos seleccionarlo y pulsar el botón Quitar, un proceso que debemos confirmar introduciendo la contraseña de acceso a la cuenta.

Desde Terminal

Para ver la lista de repositorios que tenemos en nuestra distro Ubuntu, lo que debemos hacer es abrir un Terminal (Control + Alt + T) y ejecutar en este el siguiente comando:

sudo gedit /etc/apt/sources.list

En caso de que no funcione, o no tengamos gedit instalado en nuestra distro, podemos hacerlo con el siguiente, acudiendo al editor «nano».

sudo nano /etc/apt/sources.list

Lista de repositorios en Linux

Como veremos, se nos abrirá una lista con todos los repositorios que tenemos en nuestra distro. Los repositorios (por ejemplo, deb http://es.archive.ubuntu.com/ubuntu/ bionic-updates main restricted) que empiecen sin # son aquellos que se están utilizando. Por otro lado, los que aparecen al principio con un # son aquellos que tenemos instalados, pero están deshabilitados.

Si queremos añadir un repo nuevo, tan solo debemos añadirlo, de la siguiente forma, al final del archivo de texto:

deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

Guardamos los cambios y listo. Eso sí, antes de actualizar los repositorios e instalar ningún programa debemos instalar las claves de seguridad de dicho repositorio. Estas se suelen ofrecer junto al PPA, y a continuación vamos a ver un ejemplo con el repo oficial de Google Chrome.

Ejemplo para añadir una fuente de software en Ubuntu

Para añadir desde terminal un repositorio, o PPA, de Linux, debemos hacerlo de la siguiente manera. Lo primero será buscar en Internet el repositorio que queremos añadir. En el caso de Google Chrome (este ejemplo), podemos encontrarlo en la web de Google.

En el terminal, ejecutaremos el siguiente comando para añadir las claves de los repositorios oficiales de Google a nuestro Linux. De lo contrario, el software de los repositorios no se podrá validar y nos devolverá error:

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -

Una vez ejecutado el anterior comando, ya podemos añadir el repositorio a la lista de repositorios de Ubuntu. Y eso lo haremos con el siguiente comando:

sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'

Obviamente, si hemos añadido el repositorio desde GEDIT como hemos explicado en el paso anterior, este último comando no será necesario.

Ahora, antes de nada, tendremos que actualizar la lista de repositorios de Linux para registrar en nuestro sistema todos los programas y poder descargarlos e instalarlos con apt install.

Cómo añadir repositorios a otras distros

El ejemplo anterior sirve para Debian, Ubuntu y cualquier otra distro derivada de ellas. Sin embargo, hay distros que no se basan en ninguna de las dos, sino que son independientes, como puede ser el caso de Fedora. Esta distro no utiliza por defecto APT, por lo que no podemos usar el mismo sistema para añadir repositorios de software a este Linux. Este sistema en concreto utiliza otra herramienta llamada YUM. Por tanto, para añadir una fuente de software a Fedora, lo que debemos hacer es, con permisos de root, definir el repositorio dentro del directorio «/etc/yum.repos.d/» creando un nuevo archivo terminado en .repo. Una vez hecho, lo añadiremos ejecutando el siguiente comando:

dnf config-manager --add-repo /etc/yum.repos.d/nombre_repositorio.repo

También podemos activar un repositorio ejecutando el siguiente comando, donde debemos utilizar el ID del repositorio en cuestión:

dnf config-manager --set-enabled ID_repositorio

O desactivarlo, para dejar de usando, cambiando el parámetro «–set-enabled» por «–set-disabled» en el comando anterior.

En caso de utilizar una distro como Arch LinuxManjaro, lo que debemos hacer es añadir el repositorio de software de terceros a la configuración de Pacman. Para ello, editamos el siguiente archivo para añadir la información del repositorio en cuestión:

/etc/pacman.conf

Una vez añadido el repo, o los repos, que nos interesen para poder buscar, bajar y actualizar software, lo que debemos hacer es actualizar la base de datos de software con el siguiente comando:

sudo pacman -Syyu

Y listo. Ya podemos empezar a instalar software directamente desde estas nuevas fuentes.

Cómo actualizar la lista de repositorios de Linux

Si ya hemos añadido los repositorios que queremos a la lista con los pasos anteriores, o simplemente queremos actualizar nuestro software sin añadir nuevos repositorios, el proceso es mucho más rápido.

Lo único que nos queda por hacer es abrir un Terminal (Control + Alt + T) en nuestro Linux y ejecutar los dos siguientes comandos:

  • sudo apt update (para actualizar las listas de software de los repositorios).
  • sudo apt upgrade (para descargar los paquetes que haya disponibles).

Actualizar repositorios Linux

Cuando finalice el proceso, todos los programas de nuestro Linux, que se hayan instalado a través de los repositorios, se habrán actualizado a su última versión.

Ya podemos instalar los programas que queramos desde los repositorios de nuestro Linux utilizando apt install (por ejemplo: sudo apt install google-chrome).

Cómo eliminar un repositorio de Linux

Puede que con el paso del tiempo ya no necesitemos algún repositorio de Linux en nuestra distro. Ya sea porque ha pasado a formar parte de los repositorios oficiales de la misma, o simplemente porque ya no usamos el programa.

También puede ocurrir que el repositorio haya dejado de funcionar y, por su culpa, estemos teniendo errores al actualizar las listas de software o actualizar nuestra distro Linux.

Para borrar el repositorio, lo que debemos hacer es abrir la lista de repositorios de software con el siguiente comando:

sudo gedit /etc/apt/sources.list

Se nos abrirá el editor de texto gedit con la lista de todos los repositorios que hemos añadido. Simplemente debemos localizar el repositorio que queremos eliminar y eliminarlo de la lista. También podemos comentarlo con almohadillas, como los comentarios, para que quede desactivado.

Ya está eliminado el repositorio. Ahora actualizando la lista con sudo apt update y los cambios quedarán reflejados ya en nuestra distro.

Eliminar PPA

En caso de que hayamos añadido el repositorio a través de una PPA, eliminarlo es una tarea bastante sencilla. Lo único que tendremos que hacer es ejecutar en la terminal el siguiente comando, añadiendo al final la URL de la PPA que queremos eliminar:

sudo add-apt-repository -r ppa:repo/repo

Si el repositorio llevaba asociada una clave, podemos eliminarla usando el comando «sudo apt-key del» seguido de la clave numérica entre comillas o de sus 8 últimos caracteres (sin comillas).

Actualizamos la lista de software con «sudo apt update» y listo. Ya tendremos la lista de software sin los programas de la fuente que acabamos de borrar.

Diferencias entre borrar una PPA o borrar un programa

No debemos confundir nunca una PPA, o repositorio, con un programa. Los repositorios de software son servidores que indican al gestor de paquetes (por ejemplo, APT) dónde buscar los programas. Sin embargo, el repositorio no tiene mucho que ver con el programa como tal que instalamos en nuestro ordenador.

Si borramos la PPA de un programa, este va a seguir instalado en el ordenador. Es más, vamos a ponernos en peligro ya que, al hacerlo, el programa ya no podrá buscar y bajar actualizaciones mediante el gestor de paquetes que utilicemos. Por ejemplo, si eliminamos el repositorio de Chrome, dejaremos de actualizar el navegador, con los riesgos y problemas que eso supone.

Tener repositorios en Linux no implica ningún problema para el ordenador. Lo único que, al actualizarlos, tardará más de la cuenta. Es una buena práctica de mantenimiento, eso sí, pero asegurándonos siempre de no dejarnos ningún programa colgado. Lo ideal sería, primero, borrar el programa que ya no necesitamos más, y limpiar todos los restos que haya podido dejar. Y, una vez borrado, entonces borrar el repositorio.

Problemas al actualizar los repositorios de Linux

Aunque lo normal es que todo vaya bien, y en unos segundos tengamos las listas de software actualizadas, pueden ocurrir varios motivos por los que los repos no se actualizan correctamente. Cuando esto ocurra no debemos perder la calma, ya que con un par de simples comandos vamos a poder solucionar la mayoría de los problemas.

Error Sub-process /usr/bin/dpkg

Este mensaje de error suele aparecer cuando se ha quedado una instalación pendiente. El binario dpkg ha quedado bloqueado y, por lo tanto, no se pueden ejecutar otros comandos que dependan de él. En ese caso, lo que debemos hacer es intentar completar estas actualizaciones ejecutando en el terminal:

sudo dpkg –configure -a

Si después de esto aún no se ha solucionado el problema, entonces tendremos que eliminar unos archivos que pueden ser los que están dando problemas. Desde un terminal, entonces debemos ejecutar:

sudo rm /var/lib/dpkg/info/*.postrm && sudo rm /var/lib/dpkg/info/*.list

Entonces, eliminaremos la caché y comenzaremos con la actualización de los repos con:

sudo apt-get clean all && sudo apt-get update && sudo apt-get upgrade

Algo salió mal, ejecuta sudo apt-get -f install

Este mensaje de error también es uno de los más comunes que podemos encontrarlos. Como vemos, es muy descriptivo, y nos explica en su propio nombre cómo solucionarlo. Por ello, lo primero que tendremos que hacer es ejecutar dicho comando para solucionar el problema con el gestor de actualizaciones o con el centro de software que esté bloqueando los repositorios.

sudo apt-get -f install

Una vez ejecutado, entonces ya podremos actualizar los repositorios de Linux y las listas de software ejecutando en el terminal:

sudo apt-get update && sudo apt-get upgrade

Error «unable to find universe/binary-1386/Packages»

Este error suele aparecer porque, en algún momento, hemos ejecutado el comando «dpkg –add-architecture 1386» en nuestra distro. Este comando contiene un error tipográfico en el 1386, donde debería ser i386. Y, por tanto, hace que los repositorios dejen de funcionar.

Podemos comprobar si esta es la causa del problema ejecutando el siguiente comando en nuestra distro:

dpkg --print-foreign-architectures

Si este nos devuelve el valor «1386», entonces es que este es el problema. Y podemos solucionarlo tan fácilmente como ejecutando el comando:

dpkg --remove-architecture 1386

Ahora ya podemos actualizar los repos con apt update y volver a instalar programas sin problemas.

Error al descargar el repositorio de información

Este mensaje de error es, por sí mismo, muy descriptivo. Y lo que nos indica es que, por un motivo u otro, no ha sido posible descargar el repositorio de software en nuestro sistema. Las causas pueden ser muy variadas. Por ejemplo, puede darse que el repositorio esté caído, o se haya eliminado. También puede ocurrir que tengamos un problema con las DNS de nuestro ordenador, o que nuestra conexión no esté funcionando correctamente. O puede ser que el propio sistema está bloqueando, por el motivo que sea, el repositorio.

Para solucionarlo, lo primero que haremos será comprobar que, efectivamente, existe el repositorio en cuestión (es decir, que no lo hemos escrito mal al introducirlo en el sistema), y que nuestro ordenador está conectado a Internet. Además, ejecutaremos los siguientes comandos que nos ayudarán a limpiar la caché del sistema y volver a descargar la información:

sudo apt clean && sudo apt update && sudo apt upgrade

Error GPG: las siguientes firmas no se pudieron verificar

Este error puede aparecer, sobre todo, cuando añadimos repositorios a mano en el sistema para instalar software que no viene en los repositorios por defecto. Y es que, para garantizar que estos son fiables y originales, es necesario validarlos con una clave GPG, la cual nos debe proporcionar el propio responsable del repositorio. Si esta clave falta, o es incorrecta, al intentar actualizarlo veremos este mensaje de error.

En el propio mensaje podremos ver la clave GPG que falta en nuestro sistema, por lo que, para ponerlo en marcha, simplemente tendremos que bajarla e incluirla en nuestro sistema. Y esto podemos hacerlo muy fácilmente ejecutando lo siguiente.

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CLAVE

Error BADSIG

Este error es similar al anterior, y es que nos está indicando que hay un problema con la firma digital del repositorio. Todos los repositorios están firmados por GPG, y por algún motivo, nuestro sistema está reconocimiento que el repo al que nos estamos intentando conectar no es correcto. Puede que la firma haya cambiado, o que se haya corrompido la copia de la firma que tenemos en el PC. Sea como sea, la mejor forma de solucionarlo es regenerando los paquetes APT de cero, con sus correspondientes firmas, para poder conectarnos a ellos con normalidad. Esto podemos hacerlo ejecutando, uno a uno, los siguientes comandos en una consola o TTY:

  • cd /var/lib/apt
  • sudo mv lists oldlist
  • sudo mkdir -p lists/partial
  • sudo apt-get clean
  • sudo apt-get update

Error de actualización parcial: Partial upgrade

Este error suele aparecer cuando se ha quedado una actualización atascada por diversos motivos. Por ejemplo, puede ser causa de que una actualización anterior no se haya completado, porque haya problemas con otros programas instalados, por el uso de paquetes no oficiales que hayamos instalado a la fuerza o, por qué no, por usar versiones inestables, o de prueba, del sistema operativo.

Por suerte, solucionarlo es tan sencillo como ejecutar el siguiente comando en un terminal:

sudo apt-get install -f

Y, una vez ejecutado, volver a lanzar la actualización con normalidad.

Hay vida más allá de APT

Generalmente, siempre solemos utilizar APT en todos los ejemplos. Esto se debe a que este administrador de paquetes de Linux es uno de los más utilizados, y es el que viene de serie en las principales distros del mercado, como Ubuntu. Sin embargo, hay usuarios a los que les gusta usar otros gestores de paquetes con más funciones y con mejores características. Y es que, aunque muchos no lo sepan, hay vida más allá del típico APT utilizado en todos los ejemplos.

Dpkg, por ejemplo, es uno de los mejores gestores de paquetes que podemos encontrar dentro de la familia de Debian. Este está especialmente diseñado para instalar y eliminar software, y nos permite trabajar cómodamente con paquetes DEB, los equivalentes a los «MSI» de Windows.

Tampoco podemos olvidarnos de Snappy , o SNAP. Este es un sistema de gestión de paquetes universales creado por Canonical especialmente para Ubuntu pero que puede adoptarlo cualquier distro interesada en él. Entre otras muchas características, podemos destacar que los programas bajados en este formato no tienen dependencias aisladas. Es decir, junto al programa se instalan las dependencias necesarias, y solo pueden ser usadas por ese programa. Es parecido al funcionamiento de los DLL de los programas en Windows. Sacrificamos el minimalismo a cambio de redundancia de dependencias, pero erradicamos todos los problemas relacionados con estas dependencias y, además, se facilita la instalación, actualización y borrado de los programas.

Otro gestor de paquetes muy conocido es Aptitude. Este es muy similar a APT, y durante mucho tiempo ha sido el gestor de paquetes por excelencia de Debian. Sin embargo, hoy en día donde más se utiliza es en los sistemas operativos basados en Red Hat. ¿Es mejor que APT? ¿Peor? Simplemente, diferente. Ya que hablamos de Red Hat, este Linux, en lugar de paquetes DEB, suele trabajar con paquetes RPM. Y para ello cuenta con un excelente gestor de paquetes conocido como YUM.

Por último, queremos hablar también de Pacman. Este es el gestor de paquetes utilizado por defecto en las distros basadas en Arch Linux. Un gestor que, aunque no es el más utilizado (ya que el mercado de Arch es inferior al de, por ejemplo, Ubuntu) cuenta con funciones de lo más interesantes, como la posibilidad de solucionar problemas de dependencias automáticamente, o actualizar, desinstalar o desactualizar software instalado.

2 Comentarios