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

10

J'ai eu mono-completeet mono-develinstallé sur mon serveur Ubuntu 18.10 pendant quelques mois maintenant pour exécuter certaines applications qui en dépendent. J'utilise Mono 5.18.0.225. Avant de casser les choses, j'ai fait un standard sudo apt update, vu de nombreux packages mono dans la liste à mettre à niveau, puis j'ai fait un sudo apt upgrade. Cela s'est déroulé normalement pour la plupart de l'installation, puis le terminal a continué à cracher des erreurs et des erreurs et des erreurs. Les erreurs presque infinies seraient imprimées encore et encore pendant plusieurs secondes, indépendamment de ce que j'essayais de faire:

  • mise à niveau sudo apt
  • sudo apt --fix-broken installation
  • sudo apt remove mono-complete mono-devel
  • sudo apt autoremove

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

Dans l'erreur, il mentionne ne pas pouvoir trouver gdb ou lldb. J'ai ensuite tenté de créer et d'installer manuellement gdb car je ne peux pas utiliser apt ... essayer de le faire vous demandera d'exécuter sudo apt --fix-broken installce qui crache 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 (car maintenant il est installé) mais ne sont toujours pas arrivés nulle part.

  • Comment le mono s'est-il cassé en premier lieu?
  • Pourquoi la suppression de packages génère-t-elle des erreurs?
  • Quelle est la meilleure solution pour résoudre cette situation? Je préfère ne pas avoir à réinstaller Ubuntu Server et à tout remettre en place.

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
Matthew Wright
la source

Réponses:

6

Je ne suis pas sûr à 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 fonctionnent à nouveau.

  1. sudo apt remove mono-complete mono-devel

    • Certains packages doivent être supprimés (atteint environ ~ 15-25%) avant que les erreurs ne commencent à se répéter et vous ne pouvez pas recommencer.
  2. sudo apt autoremove

    • Certains packages doivent être supprimés avant que les erreurs ne commencent à se répéter et vous ne pouvez pas relancer cette opération.
  3. sudo apt remove mono-gac mono-runtime-common
    • Certains packages doivent être supprimés avant que les erreurs ne commencent à se répéter et vous ne pouvez pas relancer cette opération.
  4. sudo apt autoremove
    • Le reste des packages Mono devrait être complètement supprimé cette fois sans que des erreurs soient crachées.
    • Il doit y avoir certains packages qui sont à l'origine des erreurs dans les commandes précédentes et lorsqu'ils sont supprimés, les erreurs cessent de se produire et le reste peut être supprimé sans problème.
  5. Réinstallez Mono.
Matthew Wright
la source
1
Mais je ne peux pas exécuter apt removecar il indique que dpkg a été interrompu et je dois exécuter manuellement sudo dpkg --configure -a, mais cette commande provoque simplement les erreurs ci-dessus.
Aaron Franke
cruciale pour moi (le 18.04.1-Ubuntu) était sudo dpkg --force-all -P ca-certificates-monoet puisque sudo apt --fix-broken installaucune autre recette «fixe» n'a fonctionné, j'ai tout supprimé mono de la manière ci-dessus. En particulier, des choses comme sudo dpkg --force-all -P mono-common mono-develet sudo dpkg --force-all -P mono-4.0-gac mono-gacaprès cette mise à jour, la mise à niveau et toute correction dans le style '--fix-broken install' et 'autoremove' ont nettoyé le reste. Score final: $ mono --version Mono compilateur JIT version 6.0.0.319 (tarball ven 9 août 16:23:57 UTC 2019) ....
user309383
1

D'accord, si vous êtes assez désespéré pour essayer quelque chose de juste ce qui semble être, malheureusement, une résolution trop courante - 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 sais pas comment et je ne sais pas pourquoi, mais ce sont les dernières choses que j'ai essayées qui, pour une raison quelconque, ont produit un résultat positif:

sudo dpkg --remove --force-remove-reinstreq mono-complete
Il est rapidement revenu à l'invite de commande sans aucun message. At-il réellement fait quelque chose? Qui sait. ¯ \ _ (ツ) _ / ¯

sudo dpkg --remove --force-remove-reinstreq mono-devel
Il est rapidement revenu à l'invite de commande sans aucun 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 le supprimer en raison de dépendances

sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
Il a dit qu'il ne pouvait pas le supprimer en raison de dépendances

Pour les merdes et les rires, j'ai ensuite essayé d'utiliser Synaptic Package Manager pour supprimer mono-devel. Il a été marqué comme non installé (voir ci-dessus) mais a proposé une suppression COMPLETE. J'ai sélectionné cela et appliqué. Il a produit une cargaison d'erreurs dpkg maintenant familières et a échoué.

J'ai essayé de l'utiliser pour supprimer mono-runtime-common et cela a également produit un tas d'erreurs dpkg désormais familières et a échoué.

J'ai ensuite couru,

sudo apt-get purge mono-gac
et pour une raison quelconque, cette fois, cela a fonctionné. Il a désinstallé un tas de trucs, mais s'est trompé sur un tas de fesses. Oui, au moins cela a fait QUELQUE sorte de progrès.

mise à jour
sudo apt-get La mise à jour sudo apt-get
ne montrait maintenant que trois éléments que je ne pouvais pas mettre à niveau auparavant parce que Mono avait implosé. J'étais maintenant en mesure de les mettre à niveau avec succès.

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

Il s'est installé sans erreurs et a 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 venais de faire une réinstallation sur place et il est également revenu après un redémarrage.

J'espère sincèrement que vous parviendrez à glaner de l'aide pour les bêtises ci-dessus et voici des vacances autrement heureuses, une excellente nouvelle année et d'autres choses du genre. :)

gorT
la source
Les résultats apt policy mono-complete mono-develmontrent que j'ai à la fois installé sur 18.04 et que mono fonctionne sur 18.04, donc je soupçonne qu'il y a un problème de gestion de paquet dans la question. Les packages mono-complets et mono-développement sont toujours disponibles dans les référentiels par défaut pour 18.10 et 19.04.
karel
Merci pour la réponse, mais je ne suis pas sûr de pouvoir essayer l'une de ces suggestions après ce que j'ai essayé la nuit dernière. Je noterai que lors de ma première exécution sudo apt remove mono-complete mono-develet sudo apt autoremove, certains packages avaient été supprimés avant que des erreurs ne commencent à apparaître. Hier soir, j'ai couru sudo apt remove mono-gac mono-runtime-commonet plus de paquets que nous avons supprimés avant que des erreurs ne se produisent. Ensuite, de manière surprenante, lorsque j'ai couru sudo apt autoremoveaprès, il n'y a eu aucune erreur, le reste des packages a été supprimé et je pense que mono a été complètement et correctement désinstallé.
Matthew Wright
Cependant, la réinstallation de mono est la prochaine étape et j'espère que cela se passera bien afin que je puisse faire fonctionner à nouveau ces applications.
Matthew Wright
Je ne suis pas sûr que ce soit un ou plusieurs packages qui en soient la cause, mais tout ce qui a été supprimé avant que les erreurs commençant à se répandre sur le second apt removeait dû résoudre le problème. Il serait utile de savoir quel (s) package (s) ont été la cause spécifique pour le réparer à nouveau à l'avenir. Cependant, je ne sais pas avec quelle facilité ce problème est reproductible.
Matthew Wright
Oui, la réinstallation de mono a réussi et mes applications fonctionnent à nouveau normalement!
Matthew Wright
0

J'ai eu le même problème sur ma boîte Linux Mint 18.3 Sylvia. J'ai dû utiliser Timeshift pour réinstaller le système. Tout ce que j'ai fait jusqu'à présent est de supprimer le mono ppa du référentiel et, pour le moment, je suis en mesure de mettre à jour / mettre à niveau les packages. J'attends le nouveau correctif mono pour réactiver le référentiel. Je sais que ce n'est pas une solution au problème mais, au moins, c'est un moyen de surmonter le problème en attendant que les vrais geeks le résolvent.

Emilio
la source
Merci pour la réponse! Je n'avais jamais entendu parler de Timeshift ni utilisé auparavant, mais je vais y jeter un œil. Je pense que j'ai réussi à désinstaller mono de mon système hier soir. Est-ce l'outil dont vous parlez? . Il s'agit de la version serveur, donc en ligne de commande uniquement. Je ne vois pas immédiatement que vous pouvez l'utiliser via CLI.
Matthew Wright
0

J'avais un problème similaire. Dans mon cas, le mono-développement dépendait du mono-roslyn et pour une raison quelconque, le mono-roslyn dépend du mono-développement. Donc, supprimer des paquets indépendamment n'a pas fonctionné. Mais cela:

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

msangel
la source