尝试升级后单声道损坏,无法使用apt


10

我曾mono-completemono-devel安装我的Ubuntu 18.10服务器上两三个月,现在运行一些依赖于它的应用程序。我正在使用Mono 5.18.0.225。在发生问题之前,我做了一个标准sudo apt update,看到列表中有许多Mono软件包要升级,然后做了一个sudo apt upgrade。对于大多数安装来说,它运行正常,然后终端不断吐出错误以及错误和错误。无论我尝试做什么,几乎无休止的错误将反复打印几秒钟:

  • sudo apt升级
  • sudo apt --fix-打破安装
  • 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

Answers:


6

我不能百分百确定这些命令每次都能解决问题,但这就是发生的事情,我能够成功地重新安装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. 重新安装Mono。

1
但是我无法运行,apt remove因为它说dpkg已中断,我必须手动运行sudo dpkg --configure -a,但是此命令只会导致上述错误。
亚伦·弗兰克

对我而言至关重要(在18.04.1-Ubuntu上),sudo dpkg --force-all -P ca-certificates-mono并且由于sudo apt --fix-broken install也没有任何其他“修复”配方无效,因此我以上述方式删除了所有单声道。在这样特别的东西sudo dpkg --force-all -P mono-common mono-devel,并sudo dpkg --force-all -P mono-4.0-gac mono-gac在此之后更新,升级和清洁休息风格固定的任何“--fix破碎安装”和“的autoremove”。最终成绩:$ mono --version Mono JIT编译器版本6.0.0.319(tarball Fri Aug 9 16:23:57 UTC 2019)....
user309383

1

好吧,如果您迫不及待地想尝试任何看起来似乎不太常见的解决方案-擦拭硬盘并从头开始重新安装操作系统...

我设法设法修理了我的船。我不确定如何,也不确定为什么,但是这是我出于某些原因尝试了最后结果的最后几件事:

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。它被标记为未安装(请参阅上文),但提供了COMPLETE删除功能。选择并应用。它产生了很多现在已经熟悉的dpkg错误,但失败了。

我尝试使用它来删除mono-runtime-common,它也产生了很多现在熟悉的dpkg错误,但失败了。

然后我跑了

sudo apt-get purge mono-gac
,由于某种原因,它在某种程度上已经起作用了。它卸载了一堆东西,但在一堆东西上出错了。是的,至少它取得了一些进展。

sudo apt-get update
sudo apt-get upgrade
现在只显示了我以前无法升级的三个项目,因为Mono已爆裂。我现在能够成功升级它们。

然后,我按照https://www.mono-project.com/download/stable/#download-lin上 ubuntu 18.04的Mono安装说明进行操作。
但是,在步骤2中,我没有安装mono-devel,而是安装了mono-complete

它安装无误,并已预编译一些东西。重新启动后,我的3个基于Mono的应用程序中的2个已备份并正在运行。第三次,我只需要执行就地重新安装,重启后它也回来了。

我衷心希望您能设法从上面的废话中获得一些帮助,并祝您假期愉快,新年快乐以及其他类似的事情。:)


apt policy mono-complete mono-devel显示我都已在18.04上安装并且mono已在18.04上运行的结果表明,我怀疑问题中存在软件包管理问题。mono-complete和mono-devel软件包仍然在18.10和19.04的默认存储库中可用。
卡雷尔18'Dec

感谢您的回复,但是我不确定昨晚尝试之后是否可以尝试上述任何建议。我会注意到,当我最初运行sudo apt remove mono-complete mono-devel和时sudo apt autoremove,已经删除了一些软件包,然后开始出现错误。昨晚我跑了sudo apt remove mono-gac mono-runtime-common,发现错误之前,我们删除了更多包裹。然后,令人惊讶的是,当我sudo apt autoremove随后运行时没有错误,其余的软件包都被删除了,我认为mono已成功并完全卸载了。
马修·赖特

但是,下一步是重新安装mono,我希望它能顺利进行,以便我可以再次运行这些应用程序。
马修·赖特

我不确定是导致一个还是多个软件包的原因,但是在错误开始于第二个错误之前删除的所有内容apt remove必须已解决了该问题。知道什么软件包是将来再次修复它的具体原因将很方便。但是,我不知道此问题的重现性有多容易。
马修·赖特

是的,mono的重新安装成功,并且我的应用程序再次正常运行!
马修·赖特

0

我的Linux薄荷盒18.3 Sylvia遇到了相同的问题。必须使用timeshift重新安装系统。到目前为止,我所做的就是从存储库中删除mono ppa,并且暂时可以更新/升级软件包。我等待新的单声道修复程序重新激活存储库。我知道这不是解决问题的方法,但至少,这是一种解决问题的方法,它可以等待真正的怪胎解决。


感谢您的回复!我以前没有听说过或使用过时移,但我来看一下。我想我昨晚能够从系统中成功卸载mono。这是您要使用的工具吗?。它是服务器版本,但仅命令行。我没有立即看到可以通过CLI使用它。
马修·赖特

0

我有一个类似的问题。在我的情况下,单斜度依赖于单-roslyn,由于某种原因,单斜环取决于单-devel。因此,单独删除软件包是行不通的。但是这样做:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.