尝试升级后 Mono 损坏,无法使用 apt

Mat*_*ght 10 package-management mono apt 18.10

我已经在我的 Ubuntu Server 18.10 上安装mono-completemono-devel安装了几个月来运行一些依赖它的应用程序。我正在使用 Mono 5.18.0.225。在事情破裂之前,我做了一个标准sudo apt update,在列表中看到许多要升级的单声道包,然后做了一个sudo apt upgrade. 大多数安装过程都很正常,然后终端不断地吐出错误、错误和错误。无论我尝试做什么,几乎无休止的错误都会一遍又一遍地打印几秒钟:

  • sudo apt 升级
  • sudo apt --fix-broken 安装
  • sudo apt remove mono-complete mono-devel
  • sudo apt 自动删除

似乎无法升级或删除。如果无法升级,我曾尝试删除并尝试重新安装,但删除也失败了。

在错误中提到无法找到 gdb 或 lldb。然后我尝试手动制作和安装 gdb,因为我不能使用 apt ......尝试这样做会要求您运行sudo apt --fix-broken install它会吐出相同的错误。安装 gdb-8.2 成功。打印出的错误略有变化,并包含对 gdb 的引用(因为现在它已安装),但仍然没有到任何地方。

  • 单声道最初是如何打破的?
  • 为什么试图删除产生错误的包?
  • 解决这种情况的最佳行动方案是什么?我宁愿不必重新安装 Ubuntu Server 并将所有内容都备份。

对于错误中打印的内容(在安装 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
Run Code Online (Sandbox Code Playgroud)

Mat*_*ght 7

我不能 100% 确定按此顺序排列的这些命令每次都会解决问题,但这就是发生的情况,我能够成功重新安装 Mono 以使依赖于它的应用程序再次运行。

  1. sudo apt remove mono-complete mono-devel

    • 在错误开始出现并且您无法再次运行之前,应该删除一些包(达到约 15-25%)。
  2. sudo apt autoremove

    • 在错误开始出现之前应该删除一些包,并且您不能再次运行它。
  3. sudo apt remove mono-gac mono-runtime-common
    • 在错误开始出现之前应该删除一些包,并且您不能再次运行它。
  4. sudo apt autoremove
    • 其余的 Mono 包这次应该完全删除,不会出现错误。
    • 必须有某些包是导致先前命令中的错误的原因,当它被删除时,错误停止发生,其余的可以毫无问题地删除。
  5. 重新安装单声道。