GNU/Linux >> Tutoriales Linux >  >> Linux

Departamento roto, dependencias faltantes, ¿ahora qué?

El problema al que te enfrentas es el siguiente. Intentó ejecutar una actualización periódica en su caja de Linux, muy probablemente un sistema basado en Ubuntu o Debian que usa apt como su administrador de paquetes. Después de actualizar el contenido del repositorio, ejecutó el comando dist-upgrade y pronto recibió un error. Apt se quejaba de dependencias faltantes o rotas, y sugirió que vuelva a ejecutar el comando con --fix-broken o similar. Sin embargo, esto no parece ayudar.

Encontré este problema hace unas semanas en KDE neon. El problema realmente me molestó, porque sin un conocimiento experto, no hay salida. Te quedas con un sistema inutilizable que no se puede actualizar de manera confiable. Esto es tan frágil y estamos en 2020, cuando uno esperaría cierto nivel de robustez del software. LELZ. Elogié al neón en el pasado por su resistencia, pero luego siguió adelante y deshizo su propio trabajo. De todos modos, déjame mostrarte cómo puedes resolver este problema.

Problema con más detalle

Esto es lo que ve en la línea de comando:

dpkg:error al procesar el archivo /var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64.deb (--unpack):
intentando sobrescribir '/ usr/share/locale/ar/LC_MESSAGES/calligraplan.mo', que también está en el paquete calligra-data 1:3.1.0+p18.04+git20191222.0027-0
dpkg-deb:error:pegar subproceso fue eliminado por la señal (tubería rota)
Se encontraron errores durante el procesamiento:
/var/cache/apt/archives/calligraplan_1%3a3.2.2+p18.04+
git20191212.1837-0_amd64 .deb
E:El subproceso /usr/bin/dpkg devolvió un código de error (1)

En mi caso, el paquete torcido fue Calligra. No estoy seguro de por qué estaba allí en primer lugar, pero bueno, tenemos que arreglar esto, ¿verdad? Entonces, el procedimiento estándar es ejecutar apt con la opción --fix-broken. O tal vez, podría intentar con --ignore-missing, otra opción válida. Excepto que llegas a un infierno de dependencia cíclica y no hay salida.

sudo apt --fix-broken install
Leyendo listas de paquetes... Listo
Creando árbol de dependencias
Leyendo información de estado... Listo
Es posible que desee ejecutar 'apt -- fix-broken install' para corregirlos.
Los siguientes paquetes tienen dependencias no satisfechas:
calligra :Depende:calligraplan (>=1:3.1.0+p18.04+git20191222.0027-0) pero 1:3.1.0+p18.04+ git20191119.0027-0 está instalado
calligraplan:Depende:calligra-libs (=1:3.1.0+p18.04+git20191119.0027-0) pero 1:3.1.0+p18.04+git20191222.0027 -0 está instalado
E:Dependencias no satisfechas. Pruebe 'apt --fix-broken install' sin paquetes (o especifique una solución).

En este punto, realmente no puede eliminar Calligra, porque el administrador de paquetes ya se encuentra en un estado inestable. El paso lógico sería ignorar este paquete específico, o cualquier paquete roto, usando la opción --ignore-missing o similar, por desgracia, esto tampoco parece funcionar. Así que el sistema está dañado.

Solución

La única forma de solucionar este problema es editar el archivo de estado del administrador de paquetes y eliminar manualmente cualquier mención de los paquetes afectados y sus dependencias, para que apt pueda reanudar e instalar la parte saludable. Ahora, esto no es algo bueno, porque se quedará con software sin parches; en algunos casos, esto podría ser importante, relacionado con Internet, tal vez incluso con una vulnerabilidad real o dos, o tal vez software con errores que se manifiestan cuando trabajo (por ejemplo, una de las bibliotecas críticas del sistema). Pero le permite continuar trabajando y tal vez recibir un buen lote de actualizaciones en el futuro.

Lo que necesita en este momento es abrir /var/lib/dpkg/status en un editor de texto como raíz. En este punto, encontré otro problema estúpido, y es el hecho de que "supuestamente" no puedes iniciar a Kate como root, debido a posibles vulnerabilidades de seguridad. Tonterías totales y absolutas.

sudo kate /var/lib/dpkg/status
No es posible ejecutar Kate con sudo debido a vulnerabilidades de seguridad irreparables.

Pero puedes sudo su -, y luego ejecutar a Kate como root, no hay problema. Este es uno de esos casos de "encontremos un problema para una solución", porque no tiene ninguna relación real con el trabajo real y no hace ninguna diferencia en absoluto, excepto para molestar a los usuarios. Como si no pudieras simplemente abrir una ventana de terminal y borrar cosas con sudo si quieres.

Abre el archivo. Esta es solo una larga lista de paquetes que se van a instalar. Cada paquete viene con una descripción, una versión y cualquier dependencia. Para mí, la solución fue buscar cualquier mención de la palabra calligra y luego eliminar esos bloques del paquete del archivo de estado. En general, este archivo ilustra bastante bien el lío, con todas las diferentes secciones de dependencias, recomendaciones, descansos y demás.

Paquete:libzxingcore1
Estado:instalar correctamente instalado
Prioridad:opcional
...
Versión:1.0.7-1+18.04+bionic+build2
Depende de:libc6 (>=2.14), libgcc1 (>=1:3.4), libstdc++6 (>=5.2)
...

Paquete:mokutil
Estado:instalación correcta instalado
Prioridad:opcional
...
Versión:0.3.0+1538710437.fb6250f-0ubuntu2~18.04.1
Depende:libc6 (>=2.14), libefivar1 (> =34), libssl1.1 (>=1.1.0)
...

Paquete:libkf5itemviews-dev
Estado:instalar correctamente instalado
Prioridad:opcional
...
Versión:5.65.0+p18.04+git20191222.0152-0
Reemplaza:libkf5itemviews-doc (<<5.61.90-0)
Depende:libkf5itemviews5 (=5.65.0+p18.04+git20191222.0152-0), qtbase5-dev (>=5.8.0~)
Recomienda:libkf5itemviews-doc (=5.65.0+p18.04+git20191222. 0152-0)
Descansos:kio-dev (<<5.28), libkf5iconthemes-dev (<<5.51), libkf5kcmutils-dev (<<5.51), libkf5kio-dev (<<5.51), libkf5xmlgui-dev (<<5.51)
...

Pero nuestro objetivo es simple:eliminar las entradas en conflicto y permitir que nuestro sistema funcione. De hecho, una vez que completé esto, pude volver a ejecutar el administrador de paquetes apt y completar las actualizaciones. Trabajo hecho.

Conclusión

Estoy sorprendido y consternado de que estemos en un estado en el que un componente mal empaquetado puede arruinar por completo el estado del sistema en Linux. Y la cosa es que hay muchas maneras de prevenir esto, si Linux fuera desarrollado como un producto y no como una serie de funciones fragmentadas por desarrolladores que no ven el panorama general del uso real. Por ejemplo, verifique que todos los paquetes estén sanos ANTES de ejecutar la instalación. Elimina automáticamente los paquetes defectuosos si se identifican. Preguntar al usuario. Incluya en la lista negra el componente defectuoso. Cualquier cosa, algo.

Pero esto fue un problema en 2000, y sigue siendo un problema en 2020, y es por eso que principalmente uso Windows en mi configuración de producción, porque sufrimiento no es mi segundo nombre. Si te encuentras aptando en la línea de comando y las cosas van mal, entonces quizás quieras ver el archivo de estado. Le ayudará a solucionar las dependencias rotas o faltantes, y le permitirá actualizar su caja. En una nota triste pero feliz, hemos terminado aquí.


Linux
  1. Administrador de paquetes APT en Linux explicado

  2. ¿Qué pasó con /etc/apt/apt.conf?

  3. apt:comando no encontrado

  4. ¿Qué son build-essential y build-dep?

  5. ¿Cuál es el propósito de cd ` (comilla grave)?

Gestión de paquetes de Ubuntu con apt

¿Qué hay de nuevo en Ubuntu 21.04? ¡Descárguelo ahora!

MX Linux MX-19.2 KDE - Falta en acción

Error de error del complemento VPN de Linux:¿y ahora qué?

Plasma desktop kstart:no se puede conectar al servidor X - ¿Y ahora qué?

El comando apt:una guía práctica de uso