GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Corrección del error "No se pueden corregir los problemas, ha retenido paquetes rotos" en Ubuntu y otras distribuciones de Linux

Si bien hay varias formas de instalar aplicaciones en Ubuntu, prefiero usar el comando apt en la terminal para instalar el software.

Si hace lo mismo, puede encontrar un error de dependencia como este:

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 green-recorder : Depends: python-urllib3 but it is not installable
E: Unable to correct problems, you have held broken packages.

Por lo general, en It's FOSS, encontrará soluciones simples y fáciles de seguir para problemas complicados. Desafortunadamente, este no es tan sencillo.

En este artículo de solución de problemas, le diré por qué ocurre este error y le daré algunos consejos sobre cómo solucionar este problema.

¿Por qué ves el error "has retenido paquetes rotos"?

Estaba intentando instalar un paquete de aplicación, muy probablemente desde un PPA o un repositorio de terceros.

Las aplicaciones a menudo necesitan versiones específicas de bibliotecas y componentes de software (llamadas dependencias). Es posible que estas dependencias no sean parte del paquete de la aplicación en sí, pero se espera que ya estén instaladas en su sistema o que se instalen durante la instalación de la aplicación.

Su sistema Linux intenta instalar estas dependencias por su cuenta. Pero si la versión del paquete de dependencia no está disponible en su sistema, se confunde ya que no tiene forma de resolver este problema de dependencia.

Por eso te informa que el software que estabas intentando instalar depende de XYZ pero este XYZ no se puede instalar.

Otro caso de uso es cuando su paquete puede ser retenido cuando intenta instalar dos versiones del mismo software. Digamos que está instalando una versión específica de Wine cuando ya tiene otra instalada.

Cómo solucionar el error "No se pueden corregir los problemas, ha guardado paquetes rotos"

Puedes probar algunas cosas para que las cosas funcionen. Necesita tener algunas ideas sobre cómo instalar/eliminar paquetes en la línea de comandos de Linux para resolver las cosas aquí.

Asegúrese de que la caché de paquetes de su sistema esté actualizada

Primero, asegúrese de que la memoria caché del paquete local esté actualizada. Su sistema verifica este caché para los paquetes disponibles. Es posible (pero no seguro) que el sistema vea el paquete de dependencia después de la actualización del caché.

sudo apt update

Intente instalar el paquete problemático nuevamente y vea si soluciona el problema.

Instalar la dependencia

Si intenta instalar el paquete problemático nuevamente y aún se queja del mismo error de dependencia, es posible que esa dependencia no esté disponible para la versión de distribución.

Puede usar el comando de búsqueda apt para ver si puede encontrar esta biblioteca desde algún otro paquete o nombre:

sudo apt search package_name

Si el paquete está disponible, ¿es la misma versión que solicitó el paquete que intentaba instalar?

Intente instalar el paquete de dependencia y vea qué sucede:

sudo apt install dependency_package

Puede encontrar una cadena de dependencia. Intenta instalar la dependencia A pero se queja de B. Luego intenta instalar B y se queja de C.

También puede ocurrir que cuando intentes instalar el paquete C, ya esté instalado. Verifique la versión del paquete C. ¿Es la misma versión que requiere el paquete B? En caso afirmativo, eliminar C e instalarlo de nuevo podría ayudar.

¿Puede obtener el paquete de dependencia faltante de alguna otra fuente?

Si el paquete de dependencia faltante no se puede encontrar en su sistema (no hay resultados en la búsqueda apt), puede intentar obtener el paquete de dependencia de otro lugar. Sé que no es muy conveniente hacerlo, pero aquí no tienes muchas opciones.

Por ejemplo, en el caso de instalar el obturador, se quejó de libgoo-canvas-perl y esta biblioteca ya no está disponible en el sistema Ubuntu.

sudo apt install shutter
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 shutter : Depends: libgoo-canvas-perl but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Sin embargo, dado que estaba disponible en las versiones anteriores de Ubuntu, busqué este paquete en el archivo de paquetes de Ubuntu y lo encontré en la lista de Ubuntu 14.04 aquí. Descargué el archivo .DEB y lo instalé.

Ahora que este paquete de dependencia está instalado, intentar instalar la aplicación original (obturador en este caso) ya no debería quejarse de al menos este paquete.

Si no puede encontrar el paquete de dependencia en ninguna parte, instale el paquete problemático desde otra fuente

Entonces, en el ejemplo anterior, intenté instalar la aplicación Green Recorder usando su PPA. Esta aplicación necesita python-urllib3 biblioteca pero desafortunadamente, esta biblioteca no está disponible en mi sistema Ubuntu 20.04.

[email protected]:~$ apt search python-urllib3
Sorting... Done
Full Text Search... Done

Claramente, esta es una aplicación mal empaquetada. El desarrollador lo puso a disposición para Ubuntu 20.04 sin darse cuenta de que Ubuntu 20.04 ya no es compatible con Python 2 y todas las bibliotecas de Python ahora comienzan con el prefijo python3. Entonces, python-urllib3 debería ser python3-urllib3.

Si se encuentra en tal situación, tal vez consulte la página de inicio del proyecto o busque en Internet una fuente alternativa para instalarlo. ¿Quizás hay una versión Snap/Flatpak o algún usuario creó un PPA para ella? Por lo menos, también puede optar por la opción de código fuente.

Si ve el error de paquete roto retenido durante la actualización, intente esto

La mayor parte de la discusión hasta ahora asumió que ve este error al instalar una nueva aplicación. Es posible que ese no sea siempre el caso.

Si ve este error cuando intenta actualizar su sistema con el comando sudo apt update, tendrá que adoptar un enfoque ligeramente diferente.

Primero, verifique qué paquete se está reteniendo con este comando:

dpkg --get-selections | grep hold

Si ve algunos paquetes retenidos, elimínelos y continúe actualizando su sistema o instalando el software.

También puede usar el administrador de paquetes Synaptic para reparar los paquetes rotos.

¿Lograste solucionar el problema?

Como mencioné anteriormente, no existe una solución sencilla para este problema. Tendrás que investigar por tu cuenta y ver si se puede arreglar o no.

Comparta en los comentarios si su problema se soluciona. Si no, puedo intentar ayudarte.



Ubuntu
  1. Cómo instalar Rust y Cargo en Ubuntu y otras distribuciones de Linux

  2. Cómo instalar el navegador Vivaldi en Ubuntu y otras distribuciones de Linux

  3. Corrección del error "Los paquetes de destino se configuraron varias veces" en las distribuciones de Linux basadas en Ubuntu y Debian

  4. Cómo ver Hulu en Ubuntu y otras distribuciones de Linux

  5. ¿Instalando Odbcins1debian2, dependencia rota en Ubuntu 20.04 Lts?

Cómo usar imágenes WebP en Ubuntu y otras distribuciones de Linux

Uso de Yarn en Ubuntu y otras distribuciones de Linux

Cómo instalar PuTTY en Ubuntu y otras distribuciones de Linux

Cómo actualizar Grub en Ubuntu y otras distribuciones de Linux

Corrección del error "No se puede analizar el archivo del paquete /var/lib/apt/lists" en Ubuntu y otras distribuciones de Linux

Corrección del error "Los siguientes paquetes se han retenido" al actualizar las distribuciones de Linux basadas en Ubuntu y Debian