我已经在我的 Ubuntu Server 18.10 上安装mono-complete
并mono-devel
安装了几个月,以运行一些依赖它的应用程序。我正在使用单声道 5.18.0.225。在事情破裂之前,我做了一个标准sudo apt update
,在列表中看到了许多要升级的单声道包,然后做了一个sudo apt upgrade
. 大多数安装都正常进行,然后终端不断吐出错误、错误和错误。无论我尝试做什么,几乎无穷无尽的错误都会一遍又一遍地打印出来几秒钟:
sudo apt upgrade
sudo apt --fix-broken install
sudo apt remove mono-complete mono-devel
sudo apt autoremove
似乎无法升级或删除。如果无法升级,我会尝试删除并尝试重新安装,但删除也失败了。
在错误中提到无法找到 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
我不能 100% 确定按此顺序执行的这些命令每次都能解决问题,但这就是发生的事情,我能够成功地重新安装 Mono 以使依赖它的应用程序再次运行。
在错误开始吐出之前,应该删除一些包(达到约 15-25%)并且您不能再次运行它。
一些包应该在错误开始出现之前被删除,并且你不能再次运行它。
一些包应该在错误开始出现之前被删除,并且你不能再次运行它。
其余的 Mono 包这次应该完全删除而不会出错。
必须有某些包是导致先前命令中的错误的原因,当它被删除时,错误停止发生,其余的可以毫无问题地删除。
最后,重新安装 Mono。
好吧,如果你非常绝望地尝试任何似乎是,可悲的是,一个非常常见的解决方案 - 擦除硬盘驱动器并从头开始重新安装操作系统......
我设法修理了我的船。我不确定如何,也不确定为什么,但这是我尝试的最后几件事,由于某种原因产生了积极的结果:
它很快返回命令提示符,没有任何消息。它真的做了什么吗?谁知道。¯\ (ツ) /¯
它很快返回命令提示符,没有任何消息。它真的做了什么吗?谁知道。¯\ (ツ) /¯
它说由于依赖关系而无法删除它
它说由于依赖关系而无法删除它
然后我尝试使用 Synaptic Package Manager 删除 mono-devel。它被标记为未安装(见上文),但提供了 COMPLETE 删除。选择并应用。它产生了大量现在熟悉的 dpkg 错误并且失败了。
我尝试使用它来删除 mono-runtime-common 并且它也产生了大量现在熟悉的 dpkg 错误并且失败了。
然后我跑了,
出于某种原因,这一次有点奏效。它卸载了很多东西,但在很多东西上都出错了。是的,至少它取得了一些进展。
现在只显示了三个我以前因为 Mono 崩溃而无法升级的项目。我现在能够成功升级它们。
然后我按照 https://www.mono-project.com/download/stable/#download-lin
上的 ubuntu 18.04 的 Mono 安装说明进行操作 但是,在第 2 步,我没有安装 mono-devel,而是安装了 mono-complete
它安装没有错误并预编译了一些东西。重新启动后,我的 3 个基于 Mono 的应用程序中有 2 个已备份并运行。第三个我只需要进行就地重新安装,重新启动后它也回来了。
我真诚地希望你能设法从上面的废话中得到一些帮助,在这里祝你节日快乐、新年快乐和其他类似的东西。:)
我的 linux mint box 18.3 Sylvia 也遇到了同样的问题。不得不使用timeshift重装系统。到目前为止,我所做的只是从存储库中删除 mono ppa,并且目前我能够更新/升级软件包。我等待新的单声道修复重新激活存储库。我知道这不是解决问题的方法,但至少,这是一种克服问题的方法,等待真正的极客来解决。
我有一个类似的问题。在我的例子中,mono-devel 依赖于 mono-roslyn,由于某种原因,mono-roslyn 依赖于 mono-devel。因此,独立删除软件包不起作用,但这样做:
当您遇到这些 sgen 错误时,您可以尝试重建“提前”缓存。它将重新编译本地拱本机版本的库。对我来说效果很好。
这对我有用。我是从我的 Bash 历史中整理出来的,所以它可能不完整。
首先,我删除了包列表。
之后,我运行了以下命令:
这会吐出一个有问题的单声道依赖项列表,以这样的消息结尾(您看到的包可能会有所不同):
接下来,我删除了这些
sudo dpkg --purge --force-all (packages...)
然后我运行了以下命令:
该命令会列出大量存在问题的单声道相关依赖项。
我继续
sudo dpkg --purge --force-all (packages...)
使用列出的软件包运行,然后sudo apt-get autoremove
再次运行并且会出现更多有错误的软件包。我一直重复这个直到sudo apt-get autoremove
没有更多的错误。之后,我跑了
sudo apt clean
。在 Ubuntu 21.10 上升级 Mono 后,当我尝试安装和使用 Pinta(一个图像处理应用程序)时,我遇到了类似的情况。
从 Mono 6.8 更新到最近的 6.12 后,我无法
apt update
、或.apt install
apt autoremove
apt --fix-broken install
以下删除命令帮助我删除了所有与单声道相关的软件包:
请小心删除最后两个库 - 到目前为止我没有遇到问题,但我不知道是否会有任何副作用。
对于任何新来这里的人来说,这一切都不起作用,这对我有用。