10 votos

Mono roto después de intentar actualizar, incapaz de utilizar apt

He tenido mono-complete y mono-devel instalado en mi Ubuntu Server 18.10 desde hace un par de meses para ejecutar algunas aplicaciones que dependen de él. Estoy usando Mono 5.18.0.225. Antes de que las cosas se rompen, hice un estándar sudo apt update vi muchos paquetes mono en la lista para actualizar, entonces hice un sudo apt upgrade . Funcionó normalmente durante la mayor parte de la instalación y luego el terminal siguió escupiendo errores y errores y errores. Los errores casi interminables se imprimían una y otra vez durante varios segundos, independientemente de lo que intentara 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, había tratado de eliminar y tratar de reinstalar, pero la eliminación también falló.

En el error menciona no poder encontrar gdb o lldb. Entonces intenté haga e instale manualmente gdb porque no puedo usar apt... al intentarlo te pedirá que ejecutes sudo apt --fix-broken install que escupe los mismos errores. La instalación de gdb-8.2 se realiza correctamente. Los errores impresos cambian ligeramente y contienen referencias a gdb (porque ahora está instalado) pero todavía no he llegado a ninguna parte.

  • ¿Cómo se rompió el mono en primer lugar?
  • ¿Por qué se producen errores al intentar eliminar paquetes?
  • ¿Cuál es la mejor forma de solucionar esta situación? Preferiría no tener que reinstalar Ubuntu Server y configurar todo de nuevo.

Por lo que se está imprimiendo en el error (antes de instalar 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

7voto

Matthew Wright Puntos 136

No estoy 100% seguro de que estos comandos en este orden va a resolver el problema cada vez, pero esto es lo que pasó y yo era capaz de volver a instalar con éxito Mono para obtener las aplicaciones que dependen de que se ejecute de nuevo.

sudo apt remove mono-complete mono-devel

Algunos paquetes deben ser eliminados (llega a alrededor de ~ 15-25%) antes de que los errores comienzan a escupir y no se puede ejecutar esto de nuevo.

sudo apt autoremove

Algunos paquetes deben ser removidos antes de que los errores comiencen a escupir y no puedas ejecutarlo de nuevo.

sudo apt remove mono-gac mono-runtime-common

Algunos paquetes deben ser removidos antes de que los errores comiencen a escupir y no puedas ejecutarlo de nuevo.

sudo apt autoremove

El resto de los paquetes Mono deberían eliminarse completamente esta vez sin errores.

Debe haber cierto(s) paquete(s) que son la causa de los errores en los comandos anteriores y cuando se elimina, los errores dejan de ocurrir y el resto se puede eliminar sin problemas.

Por último, reinstale Mono.

1 votos

Pero no puedo correr apt remove porque dice que dpkg fue interrumpido y debo ejecutar manualmente sudo dpkg --configure -a pero este comando sólo provoca los errores anteriores.

0 votos

Crucial para mí (en 18.04.1-Ubuntu) fue sudo dpkg --force-all -P ca-certificates-mono y puesto que sudo apt --fix-broken install ni ninguna otra receta 'fix' no funcionó quité todo mono de la manera anterior. En particular cosas como sudo dpkg --force-all -P mono-common mono-devel y sudo dpkg --force-all -P mono-4.0-gac mono-gac después de que la actualización, actualización, y cualquier fijación en el estilo '--fix-broken install' y 'autoremove' limpiado el resto. Resultado final: $ mono --version Mono JIT compiler version 6.0.0.319 (tarball Fri Aug 9 16:23:57 UTC 2019) ....

1voto

gorT Puntos 11

De acuerdo, si estás tan desesperado como para intentar lo que parece ser, por desgracia, una solució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 esto es lo último que he probado que por alguna razón produjo un resultado positivo:

sudo dpkg --remove --force-remove-reinstreq mono-complete  

Rápidamente volvió al símbolo del sistema sin ningún mensaje. ¿Hizo realmente algo? Quien sabe. ¯\ (ツ)

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

Rápidamente volvió al símbolo del sistema sin ningún mensaje. ¿Hizo realmente algo? Quien sabe. ¯\ (ツ)

sudo dpkg --remove --force-remove-reinstreq mono-gac  

Dice que no puede eliminarlo debido a dependencias.

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common  

Dice que no puede eliminarlo debido a dependencias.

A continuación, he intentado utilizar el Gestor de paquetes Synaptic para eliminar mono-devel. Estaba marcado como no instalado (ver arriba) pero ofrecía la eliminación COMPLETA. Lo seleccioné y lo apliqué. Se produjo un barco lleno de errores dpkg ahora familiares y falló.

Traté de usarlo para eliminar mono-runtime-common y, también, produjo un montón de errores dpkg ahora familiares y falló.

Luego corrí,

sudo apt-get purge mono-gac  

y por alguna razón esta vez como que funcionó. Desinstaló un montón de cosas, pero se equivocó en un montón de cosas. Yay, al menos hizo ALGÚN tipo de progreso.

sudo apt-get update  
sudo apt-get upgrade  

ahora sólo mostraba tres elementos que antes no podía actualizar porque Mono había implosionado. Ahora he podido 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. La tercera sólo tuve que hacer una reinstalación en el lugar y también volvió después de un reinicio.

Espero sinceramente que puedas sacar algo de provecho de estas tonterías y, por lo demás, te deseo unas felices fiestas, un próspero año nuevo y otras cosas por el estilo :)

0 votos

Los resultados de apt policy mono-complete mono-devel muestran que tengo ambos instalados en 18.04 y mono funciona en 18.04, por lo que sospecho que hay un problema de gestión de paquetes en la pregunta. los paquetes mono-complete y mono-devel siguen disponibles en los repositorios por defecto para 18.10 y 19.04.

0 votos

Gracias por la respuesta pero no estoy seguro de poder probar alguna de estas sugerencias después de lo que probé anoche. Voy a tener en cuenta que cuando originalmente corrió sudo apt remove mono-complete mono-devel y sudo apt autoremove Algunos paquetes habían sido eliminados antes de que empezaran a salir errores. Anoche ejecuté sudo apt remove mono-gac mono-runtime-common y se eliminan más paquetes antes de escupir los errores. Entonces, sorprendentemente, cuando corrí sudo apt autoremove después no hubo errores, el resto de los paquetes fueron eliminados, y creo que mono fue desinstalado exitosa y completamente.

0 votos

Sin embargo, reinstalar mono es el siguiente paso y espero que vaya bien para poder volver a tener esas aplicaciones funcionando.

0voto

Emilio Puntos 1

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, soy capaz de actualizar / actualizar los paquetes. Espero el nuevo fix de mono para volver a activar el repositorio. Sé que no es una solución para el problema pero, al menos, es una forma de superar el problema a la espera de que los verdaderos geeks lo solucionen.

0 votos

Gracias por la respuesta. No había oído hablar de timeshift ni lo había utilizado antes, pero le echaré un vistazo. Creo que fui capaz de desinstalar con éxito mono de mi sistema anoche. ¿Es ésta la herramienta a la que se refiere? . Es la versión del servidor, por lo que sólo se puede utilizar a través de la línea de comandos. No veo inmediatamente que se puede utilizar a través de CLI.

0voto

Jeremy Puntos 447

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. Así que eliminar los paquetes de forma independiente no funcionaba, pero esto sí:

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

0voto

Reinert Puntos 1

Cuando obtenga esos errores sgen puede intentar reconstruir la caché "ahead of time". Se volverá a compilar la versión nativa del arco local de librairies. A mi me funcionó muy bien.

# as root
mono --aot /usr/lib/mono/4.5/mscorlib.dll
for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X