¿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:

Descargar paquetes deb localmente
Artículo relacionado:
¿Cómo descargar paquetes DEB con dependencias localmente?

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.


Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.

  1.   Daniel dijo

    Muy interesante lo del paquete deb. no lo conocía. Saludos.

  2.   Fernando Bautista dijo

    Que mamera ese problema de dependencias rotas, por esa razon celebro la implementacion de paquetes tipo Snap y Flatpak (elijo el primero) a ver si alfin empezamos a estandarizarnos y ganar terreno en el escritorio.

  3.   Mario Anaya dijo

    Lo estoy padeciendo por estos dias, e intentado siguiendo estos procedimientos pero poco he logrado.
    Lejos de decir que lo que se lee este equivocado.
    Va mas por la ignorancia del que escribe en el uso de linux, llevo relativamente poco tiempo en el y me queda como unica salida un formateo y reinstalacion del sistema por toda respuesta.
    Es como si tratara de leer en chino. me es casi impositble

    1.    David Naranjo dijo

      El tener problemas con dependencias puede tener muchos factores y en gran medida sucede tal y como se comenta en el artículo cuando tratamos de instalar algun paquete que puede ser obsoleto o en otro caso es compatible con una versión diferente de Ubuntu o está especialmente construido para una distribución en particular (generalmente para Debian).

      Otro caso puede ser cuando aplicas la instrucción –force y aplicaste un apt update o upgrade posterior y cambio algunas librerías.
      Por otro lado, también cuando entran en conflicto los paquetes con los entornos de escritorio donde instalaste dos o más entornos donde sus dependencias suelen ser las mismas y desinstalaste alguno de ellos sin dar la instrucción de que se mantengan las dependencias.
      Los casos son muchos, pero si gustas compartir tu problema tal vez podamos llegar a una solución.
      Saludos.

  4.   Alejandro Mendoza dijo

    Hola yo tengo problemas con paquetes rotos la primera opción no me resuelve nada, la segunda opción al buscar en el search de paquetes no aparecen ni los paquetes ni las librerías para instalarlos a mano y como estoy usando en ubuntu 18.04 el programa para actualizar ni idea tengo de en donde caen los .deb para las actualizaciones por si veo de hacer el caso 3, ¿alguna solución? por favor gracias!!!

  5.   oscar antonio garcia dijo

    tengo un problrema con zorin, instalando aqlgunos codecs, me sale error, en la terminal me sale la cadena del error:
    /var/lib/dpkg/lock-frontend

    como lo puedo solucionar, ya que soy nuevo en esto