為什麼 Mono 應用程序只從自己的目錄開始?
如果我想執行應用程序
monodevelop
,我需要 chdir 到/usr/lib/monodevelop/Bin
然後執行./MonoDevelop.exe
。這對於所有其他 Mono 應用程序(例如 、 等)都是相同banshee
的tomboy
。如果我嘗試通過簡單地執行從另一個位置執行 Mono 應用程序
monodevelop
,甚至從它們自己的目錄執行,我會得到如下的TypeInitializationExceptions: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 $$在 :0
在 Gtk.Application..cctor ()$$ 0x00000 $$在 :0 —
內部異常堆棧跟踪結束 — 在
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$$ $$參數)$$ 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}')
我還嘗試了“打開”的 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...)
看起來您已經
monodevelop
從原始碼建構和安裝了 - 您是否對依賴項做了同樣的操作gtksharp
?由於banshee
和tomboy
已損壞,聽起來您在損壞的程序之間共享依賴項,這是一個明顯的候選者。CLI 單聲道應用程序是否有效?我們強烈建議您盡可能從軟體包中安裝所有內容。如果不是你,你應該使用並行單聲道環境。不要在 /usr 或 /usr/local 上安裝任何東西,除非你完全理解 do 的含義。
如果其他單聲道應用程序只能從已安裝的
monodevelop
樹中執行,並且重新安裝軟體包沒有幫助,那麼您可能會有一堆額外的東西漂浮在源安裝添加的周圍,這會干擾mono
找到它的庫,可能是硬編碼的路徑安裝monodevelop
。我的 Debian-fu 並不強大,但應該有一種方法可以辨識不知道的文件,這可能是一個開始的地方
/usr
。dpkg