我已经在 Ubuntu Server 18.10 上mono-complete
安装了mono-devel
几个月,用来运行一些依赖它的应用程序。我使用的是 Mono 5.18.0.225。在出现问题之前,我执行了标准操作sudo apt update
,看到要升级的列表中有许多 mono 包,然后执行了操作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
答案1
我不能 100% 确定按此顺序执行这些命令每次都能解决问题,但这就是发生的情况,我能够成功重新安装 Mono 以使依赖于它的应用程序再次运行。
sudo apt remove mono-complete mono-devel
在错误开始出现并且您无法再次运行之前,应该删除一些包(大约~15-25%)。
sudo apt autoremove
在错误开始出现并且您无法再次运行它之前,应该删除一些包。
sudo apt remove mono-gac mono-runtime-common
在错误开始出现并且您无法再次运行它之前,应该删除一些包。
sudo apt autoremove
这次,其余的 Mono 包应该可以被完全删除,并且不会出现任何错误。
一定有某些包是导致先前命令中出现错误的原因,当这些包被删除时,错误就不会再发生,其余的包也可以轻松删除。
最后,重新安装 Mono。
答案2
好吧,如果你真的绝望到想尝试任何方法,那么可悲的是,这是一个非常常见的解决方案——擦除硬盘并从头开始重新安装操作系统......
我设法修好了船。我不确定是怎么修的,也不确定为什么,但这是我最后尝试的几件事,不知为何产生了积极的结果:
sudo dpkg --remove --force-remove-reinstreq mono-complete
它很快就返回到命令提示符,没有任何消息。它真的做了什么吗?谁知道呢。¯\(ツ)/¯
sudo dpkg --remove --force-remove-reinstreq mono-devel
它很快就返回到命令提示符,没有任何消息。它真的做了什么吗?谁知道呢。¯\(ツ)/¯
sudo dpkg --remove --force-remove-reinstreq mono-gac
它说由于依赖关系,无法删除它
sudo dpkg --remove --force-remove-reinstreq mono-runtime-common
它说由于依赖关系,无法删除它
然后我尝试使用 Synaptic Package Manager 删除 mono-devel。它被标记为未安装(见上文),但提供了完全删除。选择并应用。它产生了一大堆现在熟悉的 dpkg 错误并失败了。
我尝试使用它来删除 mono-runtime-common,但它也产生了一堆现在熟悉的 dpkg 错误并且失败了。
然后我就跑了,
sudo apt-get purge mono-gac
不知为何,这次它似乎有点奏效了。它卸载了很多东西,但很多东西都出错了。是的,至少它取得了一些进展。
sudo apt-get update
sudo apt-get upgrade
现在只显示了三件我之前无法升级的物品,因为 Mono 已经崩溃了。现在我可以成功升级它们了。
然后我按照 ubuntu 18.04 的 Mono 安装说明进行操作
https://www.mono-project.com/download/stable/#download-lin
但是,在第 2 步中,我没有安装 mono-devel,而是安装了 mono-complete
它安装时没有出现错误,并预编译了一些内容。重启后,我的 3 个基于 Mono 的应用程序中有 2 个恢复正常运行。第三个我只需要就地重新安装,它也在重启后恢复了。
我真诚地希望您能从上述废话中获得一些帮助,并祝您节日快乐,新年快乐,万事如意。:)
答案3
我的 Linux Mint Box 18.3 Sylvia 也遇到了同样的问题。不得不使用 timeshift 重新安装系统。到目前为止,我所做的就是从存储库中删除 mono ppa,目前,我可以更新/升级软件包。我等待新的 mono 修复程序重新激活存储库。我知道这不是解决问题的办法,但至少,这是一种解决问题的方法,等待真正的极客来解决问题。
答案4
我遇到了类似的问题。在我的例子中,mono-devel 依赖于 mono-roslyn,而出于某种原因,mono-roslyn 又依赖于 mono-devel。因此,单独删除软件包不起作用,但这样做可以:
sudo dpkg --remove --force-remove-reinstreq mono-roslyn mono-devel