¿Cómo corregir los errores de dependencias en Ubuntu y derivados?
Uno de los problemas más comunes que suelen ocurrir en Ubuntu o alguno de sus derivados cuando el usuario instala paquetes deb que descarga de algun sito web, es el famoso problema con las dependencias incumplidas, esto se genera por que dicho paquete requiere de alguna versión especifica de alguna aplicación o liberaría y esta no se encuentra en el sistema o que el administrador de paquetes no puede encontrar los paquetes dependientes correctos necesarios para ejecutar el programa en Ubuntu.
Aunque este tipo de problemas surgen cada vez menos, debido a que ya muchos usuarios suelen preferir el uso de aplicaciones Flatpak, AppImage o Snap además de que estas ya cuentan con un catálogo decente con las más populares app y más desarrolladores se siguen sumando a suministrar sus apps en este tipo de formatos.
Identificando el problema
El primer paso para dar solucion a este molesto error, es identificar el problema ya que de manera general este suele saltar cuando intentamos instalar un paquete u aplicación desde un paquete deb o incluso un repositorio.
Este error se nos indica desde la terminal la cual nos dice que ciertas dependencias no se pueden cumplir o en el caso de instalación por medio del centro de software de Ubuntu simplemente no instala la aplicación.
Aqui es importante verificar si no estamos tratando de instalar un paquete obsoleto pues posiblemente exista un paquete más actual o verificar el repositorio de que fecha datan los paquetes y hasta que versión está disponible.
Si el paquete conflictivo ya se encuentra instalado, al tratar de ejecutar el comando:
sudo apt update
o
sudo apt upgrade
Este nos informara del conflicto y nos pedirá ejecutar un comando para solucionar el problema.
Aplicando la primera solucion
La forma más directa de corregir errores de dependencia en Ubuntu es con el administrador de paquetes predeterminado, para comenzar la corrección basta con abrir una terminal y ejecutar el comando:
sudo apt install -f
Al ejecutar el comando anterior, el administrador de paquetes de Ubuntu intentará solucionar los problemas de dependencia que enfrenta e imprimirá los cambios que realizará.
Aqui es importante tomar nota de los cambios que imprime ya que si no resuelve en conflicto con las dependencias procederá a desinstalar el paquete o paquetes conflictivos y nos dirá que dependencias son las que tienen conflicto con el paquete.
De igual forma puedes optar por esta otra solucion:
Segunda solucion, instalando dependencias necesarias
Tomando en cuenta el paso anterior donde anotamos los paquetes o librerías que son necesarias para solucionar los errores de dependencia, aquí vamos a instalar uno a uno los paquetes desde la terminal o nos podemos ayudar con Synaptic
Por ejemplo, en la terminal se nos muestra algo así:
"Error: Dependency is not satisfiable: libgtk-3-0 (>=3.16.2)"
Debemos notar que nos indica que la liberaría “libgtk 3.0” es mayor o igual que la version “3.16.2” por lo que debemos en este caso bajar la versión de dicha librería. Aquí es importante tomar en cuenta que, para las librerías, muchas aplicaciones dependen de una o cierta versión por lo que de manera personal no te aconsejo meter mano aquí.
Para encontrar una versión en concreto nos podemos apoyar de la página de paquetes de ubuntu (packages.ubuntu.com) para verificar sobre que versión de Ubuntu se encuentra y en que repositorio ya que es muy común no contar con algunos habilitados.
Aqui podrás ir descargando e instalando los paquetes correspondientes que necesitas.
Como recomendación si al instalar cierta versión de una librería que es la que se te solicita te indica que más paquetes dependen de ella, es mejor que desistas ya que podrías arruinar tu entorno grafico o terminar por arruinar tu sistema.Tercera y ultima opción. Desempaquetar deb cambiar dependencias y volver a empaquetar.
Esta última opción es en teoría la mejor opción, ya que generalmente los desarrolladores suelen indicar que la aplicación trabaje bajo cierta versión de una liberaría, pero no toman en cuenta que dicha librería se puede actualizar en cuestión de días o en el momento en el que liberan su aplicación.
Por lo que, si restringen a la aplicación a trabajar bajo cierta versión, esta es la que causa conflictos.
Entonces lo que vamos a hacer es desempaquetar el paquete deb y vamos a cambiar las dependencias a la versión sobre la que tenemos en el sistema (es por ello que era importante anotar que dependencias entraban en conflicto y la versión en específico).
Para ello vamos a teclear el comando:
dpkg-deb -R “ruta-de-paquete-deb” “nombre-de-carpeta-que-tendra-los -archivos”
Por ejemplo:
dpkg-deb -R gimp.deb Gimp
Vamos a acceder a la carpeta y dirigimos a la siguiente ruta “/DEBIAN”
cd Gimp/DEBIAN
Y vamos a editar el archivo “control” con nuestro editor favorito
sudo gedit control
Aquí vamos a buscar las líneas que indican las dependencias con las que tenemos conflictos y vamos a editarlas.
Por ejemplo encontraremos algo así:
Package: XXXX Version: XXXX Depends: libgtk3-0 (>= 3.16.xx"
Vamos a cambiar a la versión sobre la que tenemos. Guardamos los cambios y reempaquetamos para volver a instalar con:
dpkg-deb -b Gimp Gimp-new.deb
Y se genera el nuevo paquete deb para instalar.