web-dev-qa-db-fra.com

Mono cassé après une tentative de mise à niveau, impossible d'utiliser apt

mono-complete et mono-devel sont installés sur mon serveur Ubuntu 18.10 depuis quelques mois maintenant pour exécuter certaines applications qui en dépendent. J'utilise Mono 5.18.0.225. Avant de commencer, j’ai créé un Sudo apt update standard, vu de nombreux paquets mono dans la liste à mettre à niveau, puis un Sudo apt upgrade. L'installation s'est déroulée normalement, puis le terminal a continué à recracher des erreurs, des erreurs et des erreurs. Les erreurs presque infinies seraient imprimées à plusieurs reprises pendant plusieurs secondes, peu importe ce que j'essayais de faire:

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

Impossible de sembler mettre à jour ou supprimer. Si la mise à niveau est impossible, j'ai essayé de supprimer et d'essayer une réinstallation, mais la suppression a également échoué.

Dans l'erreur, il est mentionné qu'il est impossible de trouver gdb ou lldb. J'ai alors essayé de créer et installer manuellement gdb car je ne peux pas utiliser apt ... essayer de le faire vous demandera de lancer Sudo apt --fix-broken install qui génère les mêmes erreurs. L'installation de gdb-8.2 a réussi. Les erreurs imprimées changent légèrement et contiennent des références à gdb (parce que maintenant il est installé) mais ne sont toujours pas allées nulle part.

  • Comment le mono s'est-il cassé en premier lieu?
  • Pourquoi essayer de supprimer les paquets qui produisent des erreurs?
  • Quel est le meilleur plan d'action pour remédier à cette situation? Je préférerais ne pas avoir à réinstaller Ubuntu Server et tout configurer à nouveau.

Pour ce qui est imprimé dans l'erreur (avant l'installation 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
8
Matthew Wright

Je ne suis pas certain à 100% que ces commandes, dans cet ordre, résoudront le problème à chaque fois, mais c'est ce qui s'est passé et j'ai réussi à réinstaller Mono pour que les applications qui en dépendent s'exécutent à nouveau.

  1. Sudo apt remove mono-complete mono-devel

    • Certains paquets doivent être supprimés (entre environ 15 et 25%) avant que les erreurs ne commencent à cracher et vous ne pouvez plus l'exécuter.
  2. Sudo apt autoremove

    • Certains paquets doivent être supprimés avant que les erreurs ne commencent à cracher et vous ne pouvez plus l'exécuter.
  3. Sudo apt remove mono-gac mono-runtime-common
    • Certains paquets doivent être supprimés avant que les erreurs ne commencent à cracher et vous ne pouvez plus l'exécuter.
  4. Sudo apt autoremove
    • Le reste des paquets Mono devrait supprimer complètement cette fois sans erreurs de crachement.
    • Certains packages doivent être à l'origine des erreurs dans les commandes précédentes. Lorsqu'ils sont supprimés, les erreurs cessent de se produire et le reste peut être supprimé sans problème.
  5. Réinstallez Mono.
3
Matthew Wright

D'accord, si vous êtes suffisamment désespéré pour essayer quelque chose d'un peu moins timide que ce qui semble être, malheureusement, une résolution trop commune - essuyer le disque dur et réinstaller le système d'exploitation à partir de zéro ...

J'ai réussi à réparer mon vaisseau. Je ne suis pas sûr de savoir comment et je ne sais pas pourquoi, mais ce sont les dernières choses que j'ai essayées qui ont abouti pour une raison quelconque à un résultat positif:

Sudo dpkg --remove --force-remove-reinstreq mono-complete
Il est rapidement retourné à la commande Invite sans message. At-il réellement fait quelque chose? Qui sait. ¯\_ (ツ) _/¯

Sudo dpkg --remove --force-remove-reinstreq mono-devel
Il est rapidement retourné à la commande Invite sans message. At-il réellement fait quelque chose? Qui sait. ¯\_ (ツ) _/¯

Sudo dpkg --remove --force-remove-reinstreq mono-gac
Il a dit qu'il ne pouvait pas l'enlever en raison de dépendances

Sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Il a dit qu'il ne pouvait pas l'enlever en raison de dépendances

Pour les merdes et les fous rires, j'ai ensuite essayé d'utiliser le gestionnaire de paquets Synaptic pour supprimer le mono-devel. Il a été marqué comme non installé (voir ci-dessus), mais a offert l'élimination complète. Sélectionné et appliqué. Il a généré une série de erreurs dpkg maintenant bien connues et a échoué.

J'ai essayé de l'utiliser pour supprimer mono-runtime-common et cela a également engendré une série d'erreurs dpkg maintenant bien connues et a échoué.

J'ai ensuite couru,

Sudo apt-get purge mono-gac
Et pour une raison quelconque CETTE FOIS cela a fonctionné un peu, en quelque sorte. Il a désinstallé un tas de choses, mais s'est trompé sur un tas de choses. Oui, au moins cela a fait QUELQUE sorte de progrès.

Sudo apt-get update
Sudo apt-get upgrade
ne montre plus que trois éléments que je ne pouvais pas mettre à niveau car Mono avait implosé. Je pouvais maintenant les mettre à niveau avec succès.

J'ai ensuite suivi les instructions d'installation Mono pour Ubuntu 18.04 à l'adresse https://www.mono-project.com/download/stable/#download-lin
Cependant, à l'étape 2, au lieu d'installer mono-devel, j'ai installé mono-complet

Il a installé sans erreurs et précompilé certaines choses. Après un redémarrage, 2 de mes 3 applications basées sur Mono étaient de nouveau opérationnelles. Le troisième, je viens de faire une réinstallation sur place et celle-ci aussi est revenue après un redémarrage.

J'espère sincèrement que vous réussirez à trouver de l'aide à partir de ces absurdités et que vous souhaiterez passer de bonnes vacances, une bonne année et bien d'autres choses du même genre. :)

1
gorT

J'ai eu le même problème sur mon linux menthe box 18.3 Sylvia. A dû utiliser timeshift pour réinstaller le système. Tout ce que j'ai fait jusqu'à présent est de supprimer le ppa mono du référentiel et, pour le moment, je suis en mesure de mettre à jour/mettre à jour les paquetages. J'attends que le nouveau correctif mono réactive le référentiel. Je sais que ce n'est pas une solution au problème, mais au moins un moyen de résoudre le problème en attendant que les vrais geeks s'en mêlent.

0
Emilio