为什么Mono应用程序只从自己的目录启动?

为什么Mono应用程序只从自己的目录启动?

如果我想运行该应用程序monodevelop,我需要 chdir/usr/lib/monodevelop/Bin然后执行./MonoDevelop.exe。这对于所有其他 Mono 应用程序(例如bansheetomboy等)都是相同的。

如果我尝试通过简单地运行从另一个位置运行 Mono 应用程序monodevelop,甚至从它们自己的目录运行,我会得到类型初始化异常像这样:

behrooz@behrooz:/usr/lib/monodevelop/bin$ monodevelop
致命错误 [2012-05-04 11:24:39Z]:MonoDevelop 无法启动。运行 MonoDevelop 所需的某些
程序集(例如 gtk-sharp、
gnome-sharp 或 gtkhtml-sharp)可能未正确安装在
GAC 中。 System.TypeInitializationException:
Gtk.Application 的类型初始值设定项引发异常--->
System.EntryPointNotFoundException: glibsharp_g_thread_supported at
(wrapper Managed-to-native) GLib.Thread:glibsharp_g_thread_supported
() at GLib.Thread.get_Supported () [ 0x00000] in :0
at Gtk.Application..cctor () [0x00000] in :0 ---
内部异常堆栈跟踪结束 --- at
MonoDevelop.Ide.IdeStartup.Run (MonoDevelop.Ide.MonoDevelopOptions
选项) [0x0007e ] 在
/home/behrooz/Desktop/Monodevelop/monodevelop-2.8.6.5/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:95
位于 MonoDevelop.Ide.IdeStartup.Main (System.String[] args) [0x0004f] 在
/home/behrooz/Desktop/Monodevelop/monodevelop-2.8.6.5/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:503

这是为什么?

我尝试重新安装所有 Mono、Wine、GTK、Glib、X、Gnome 软件包。

apt-get --purge --reinstall install $(dpkg --get-selections | grep mono | grep install | grep  -v deinstall | awk'{print $1}')  

我还尝试了“open”上的strace,但我自己什么也没得到。

系统配置:

  • Debian 6.0-更新 64 位
  • 内核 3.2.0-2、3.2.0-1、3.1 和 3 编辑:不是内核的事情
  • Gnome 3.4 编辑:但是 gnome 的事情
  • 单声道2.10.5
    TLS:           __thread  
    SIGSEGV:       altstack  
    Notifications: epoll  
    Architecture:  amd64  
        Disabled:      none  
        Misc:          softdebug   
        LLVM:          supported, not enabled.  
        GC:            Included Boehm (with typed GC and Parallel Mark)   
    

更新:升级到新的 MonoDevelop 3.0.2 和最新的 Mono,我可以monodevelop在终端中使用命令运行 MonoDevelop,无需 chdir。但 gnome-shell 无法运行它。

终于找到了:
作为root:

 cd /usr/local/
 find | grep mono|xargs rm -rf
 # Use with caution/some applications may get messed up (stellarium has MONOchrome images...)

答案1

看起来您已经monodevelop从源代码构建并安装了 - 您是否对类似的依赖项执行了相同的操作gtksharp?由于bansheetomboy已损坏,听起来您在损坏的程序之间共享了依赖项,这是一个明显的候选者。 CLI 单声道应用程序可以工作吗?

来自MonoDevelop 构建文档:

如果可能的话,我们强烈建议您安装软件包中的所有内容。如果不是您,您应该使用并行单声道环境。除非您完全理解执行 do 的含义,否则请勿将任何内容安装到 /usr 或 /usr/local。

如果其他单声道应用程序只能从已安装的monodevelop树中运行,并且重新安装软件包没有帮助,那么您可能会在源安装添加的周围漂浮一些额外的东西,这会干扰mono查找其库,可能会硬编码路径安装monodevelop

我的 Debian-fu 并不强大,但应该有一种方法可以识别不知道的文件/usrdpkg这可能是一个起点。

相关内容