Mono roto después de intentar actualizar, no se puede usar apt

10

He tenido mono-completee mono-develinstalado en mi Ubuntu Server 18.10 durante un par de meses para ejecutar algunas aplicaciones que dependen de él. Estoy usando Mono 5.18.0.225. Antes de romper las cosas, hice un estándar sudo apt update, vi muchos paquetes mono en la lista para actualizar, luego hice un sudo apt upgrade. Fue normal para la mayoría de la instalación y luego el terminal siguió escupiendo errores y errores y errores. Los errores casi infinitos se imprimirían una y otra vez durante varios segundos, independientemente de lo que intenté hacer:

  • sudo apt upgrade
  • sudo apt --fix-broken install
  • sudo apt remove mono-complete mono-devel
  • sudo apt autoremove

Parece que no se puede actualizar o eliminar. Si la actualización es imposible, traté de eliminar e intentar una reinstalación, pero la eliminación también falló.

En el error, menciona que no puede encontrar gdb o lldb. Luego intenté hacer e instalar manualmente gdb porque no puedo usar apt ... intentar hacerlo te pedirá sudo apt --fix-broken installque ejecutes lo que escupe los mismos errores. La instalación de gdb-8.2 fue exitosa. Los errores impresos cambian ligeramente y contienen referencias a gdb (porque ahora está instalado) pero aún no han llegado a ninguna parte.

  • ¿Cómo se rompió el mono en primer lugar?
  • ¿Por qué está tratando de eliminar paquetes que producen errores?
  • ¿Cuál es el mejor curso de acción para solucionar esta situación? Prefiero no tener que reinstalar Ubuntu Server y configurar todo de nuevo.

Para lo que se imprime en el error (antes de la instalación de gdb):

Aborted (core dumped)
E: installing Assembly /usr/share/cli-common/policies.d/libgtk2.0-cil/policy.2.8.gtk-sharp.dll failed
E: Installation of policy.2.8.gtk-sharp with /usr/share/cli-common/runtimes.d/mono failed
* Installing 1 assembly from policy.2.8.pango-sharp into Mono
Stacktrace:

/proc/self/maps:
41308000-41338000 rwxp 00000000 00:00 0
55b153398000-55b1537e1000 r-xp 00000000 08:02 3159129                    /usr/bin/mono-sgen

... cutting some of this out ...

7fb557c3b000-7fb557c88000 r--p 00000000 08:02 3160431                    /usr/lib/mono/gac/Mono.Security/4.0.0.0__0738eb9f132ed756/Mono.Security.dll
Memory around native instruction pointer (0x7fb5556e2c8f):
0x7fb5556e2c7f  20 48 09 d6 41 0f b6 53 05 48 c1 e2 28 48 09 f2   H..A..S.H..(H..
0x7fb5556e2c8f  66 41 0f 38 32 4b 06 66 0f 6f 05 b2 82 49 00 66  fA.82K.f.o...I.f
0x7fb5556e2c9f  0f 38 00 c8 66 48 0f 7e c8 66 48 0f 3a 16 ce 01  .8..fH.~.fH.:...
0x7fb5556e2caf  48 09 c6 48 09 d6 41 0f b6 c2 41 0f b6 53 09 48  H..H..A...A..S.H

Native stacktrace:

    /usr/bin/mono(+0x129f8d) [0x55b1534c1f8d]
    /usr/bin/mono(+0x12a295) [0x55b1534c2295]
    /usr/bin/mono(+0xbfd2f) [0x55b153457d2f]
    /usr/bin/mono(+0x414e8) [0x55b1533d94e8]
    /lib/x86_64-linux-gnu/libpthread.so.0(+0x12dd0) [0x7fb558343dd0]
    /usr/lib/mono/aot-cache/amd64/mscorlib.dll.so(+0x123c8f) [0x7fb5556e2c8f]

Waiting for dumping threads to resume


Debug info from gdb:

mono_gdb_render_native_backtraces not supported on this platform, unable to find gdb or lldb

=================================================================
Got a SIGILL while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================

Aborted (core dumped)
E: installing Assembly /usr/share/cli-common/policies.d/libgtk2.0-cil/policy.2.8.pango-sharp.dll failed
E: Installation of policy.2.8.pango-sharp with /usr/share/cli-common/runtimes.d/mono failed
^[[1mdpkg:^[[0m error processing package mono-gac (--configure):
installed mono-gac package post-installation script subprocess returned error exit status 29
Matthew Wright
fuente

Respuestas:

6

No estoy 100% seguro de que estos comandos en este orden resolverán el problema cada vez, pero esto es lo que sucedió y pude reinstalar con éxito Mono para que las aplicaciones que dependen de él vuelvan a ejecutarse.

  1. sudo apt remove mono-complete mono-devel

    • Algunos paquetes deben eliminarse (llega a aproximadamente ~ 15-25%) antes de que los errores comiencen a escupirse y no puede ejecutar esto nuevamente.
  2. sudo apt autoremove

    • Algunos paquetes deben eliminarse antes de que los errores comiencen a escupirse y no puede ejecutar esto nuevamente.
  3. sudo apt remove mono-gac mono-runtime-common
    • Algunos paquetes deben eliminarse antes de que los errores comiencen a escupirse y no puede ejecutar esto nuevamente.
  4. sudo apt autoremove
    • El resto de los paquetes Mono deberían eliminarse completamente esta vez sin que se generen errores.
    • Debe haber ciertos paquetes que son la causa de los errores en los comandos anteriores y cuando se eliminan, los errores dejan de suceder y el resto se puede eliminar sin problemas.
  5. Vuelva a instalar Mono.
Matthew Wright
fuente
1
Pero no puedo ejecutar apt removeporque dice que dpkg fue interrumpido y debo ejecutarlo manualmente sudo dpkg --configure -a, pero este comando solo causa los errores anteriores.
Aaron Franke
crucial para mí (en 18.04.1-Ubuntu) fue sudo dpkg --force-all -P ca-certificates-monoy como sudo apt --fix-broken installninguna de las otras recetas ' arregladas ' no funcionaron, eliminé todo mono de la manera anterior. En particular, cosas como sudo dpkg --force-all -P mono-common mono-devely sudo dpkg --force-all -P mono-4.0-gac mono-gacdespués de esa actualización, actualización y cualquier corrección en el estilo '--instalación arreglada-rota' y 'autoremove' limpiaron el resto. Puntuación final: $ mono --version Compilador Mono JIT versión 6.0.0.319 (tarball vie 9 de agosto 16:23:57 UTC 2019) ....
user309383
1

De acuerdo, si estás lo suficientemente desesperado como para intentar cualquier cosa que no sea lo que parece ser, lamentablemente, una resolución demasiado común: borrar el disco duro y reinstalar el sistema operativo desde cero ...

De alguna manera me las arreglé para arreglar mi nave. No estoy seguro de cómo y no estoy seguro de por qué, pero estas son las últimas cosas que intenté que, por alguna razón, produjeron un resultado positivo:

sudo dpkg --remove --force-remove-reinstreq mono-complete
Rápidamente regresó al símbolo del sistema sin mensajes. ¿Realmente hizo algo? Quién sabe. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
Volvió rápidamente al símbolo del sistema sin mensajes. ¿Realmente hizo algo? Quién sabe. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-gac
Dijo que no podía eliminarlo debido a dependencias

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Dijo que no podía eliminarlo debido a dependencias

Para mierdas y risas, intenté usar Synaptic Package Manager para eliminar monodesarrollo. Fue marcado como no instalado (ver arriba) pero ofreció la eliminación COMPLETA. Seleccioné eso y lo apliqué. Produjo un montón de errores dpkg ahora familiares y falló.

Intenté usarlo para eliminar mono-runtime-common y, también, produjo una gran cantidad de errores dpkg ahora familiares y fallé.

Entonces corrí

sudo apt-get purge mono-gac
y por alguna razón ESTA vez funcionó un poco ', más o menos'. Desinstaló un montón de cosas, pero se equivocó en un montón de cosas. Yay, al menos hizo ALGUNOS progresos.

sudo apt-get update
sudo apt-get upgrade
ahora solo mostraba tres elementos que anteriormente no podía actualizar porque Mono había implosionado. Ahora pude actualizarlos con éxito.

Luego seguí las instrucciones de instalación de Mono para ubuntu 18.04 en https://www.mono-project.com/download/stable/#download-lin
Sin embargo, en el Paso 2, en lugar de instalar mono-devel, instalé mono-complete

Se instaló sin errores y precompiló algunas cosas. Después de reiniciar, 2 de mis 3 aplicaciones basadas en Mono volvieron a funcionar. El tercero solo tuve que hacer una reinstalación en el lugar y también regresó después de un reinicio.

Espero sinceramente que pueda obtener algo de ayuda de las tonterías anteriores y he aquí unas felices fiestas, un gran año nuevo y otras cosas similares. :)

GorT
fuente
Los resultados apt policy mono-complete mono-develmuestran que tanto instalé en 18.04 como que mono funciona en 18.04, por lo que sospecho que hay un problema de administración de paquetes en la pregunta. Los paquetes mono-complete y mono-devel todavía están disponibles en los repositorios predeterminados para 18.10 y 19.04.
karel
Gracias por la respuesta, pero no estoy seguro si puedo probar alguna de estas sugerencias después de lo que probé anoche. Voy a señalar que cuando me encontré con un principio sudo apt remove mono-complete mono-devely sudo apt autoremove, algunos paquetes se habían retirado antes de errores comenzaron a escupir. Anoche corrí sudo apt remove mono-gac mono-runtime-commony se eliminaron más paquetes antes de que se produjeran errores. Luego, sorprendentemente, cuando corrí sudo apt autoremovedespués no hubo errores, el resto de los paquetes se eliminaron y creo que mono se desinstaló con éxito y por completo.
Matthew Wright
Sin embargo, reinstalar mono es el siguiente paso y espero que funcione sin problemas para que pueda volver a ejecutar esas aplicaciones.
Matthew Wright
No estoy seguro de si la causa es uno o varios paquetes, pero lo que se eliminó antes de que los errores comenzaran a escupirse en el segundo apt removedebe haber solucionado el problema. Sería útil saber qué paquete (s) fueron la causa específica para solucionarlo nuevamente en el futuro. Sin embargo, no sé con qué facilidad este problema es reproducible.
Matthew Wright
Sí, la reinstalación de mono fue exitosa y mis aplicaciones se están ejecutando normalmente de nuevo.
Matthew Wright
0

Tuve el mismo problema en mi linux mint box 18.3 Sylvia. Tuve que usar Timeshift para reinstalar el sistema. Todo lo que he hecho hasta ahora es eliminar el mono ppa del repositorio y, por el momento, puedo actualizar / actualizar los paquetes. Espero a que la nueva corrección mono reactive el repositorio. Sé que no es una solución para el problema, pero, al menos, es una forma de superar el problema esperando que los verdaderos geeks lo resuelvan.

Emilio
fuente
¡Gracias por la respuesta! No había oído hablar o usado Timeshift antes, pero echaré un vistazo. Creo que anoche pude desinstalar con éxito mono de mi sistema. ¿Es esta la herramienta a la que nos referimos? . Sin embargo, es la versión del servidor, así que solo la línea de comandos. No veo de inmediato que pueda usarlo a través de CLI.
Matthew Wright
0

Tuve un problema similar. En mi caso, mono-devel dependía de mono-roslyn y, por alguna razón, mono-roslyn depende de mono-devel. Por lo tanto, eliminar paquetes de forma independiente no funcionó. Pero esto sí:

sudo dpkg --remove --force-remove-reinstreq mono-roslyn mono-devel

msangel
fuente