Linux

為什麼 Mono 應用程序只從自己的目錄開始?

  • August 24, 2020

如果我想執行應用程序monodevelop,我需要 chdir 到/usr/lib/monodevelop/Bin然後執行./MonoDevelop.exe。這對於所有其他 Mono 應用程序(例如 、 等)都是相同bansheetomboy

如果我嘗試通過簡單地執行從另一個位置執行 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?由於bansheetomboy已損壞,聽起來您在損壞的程序之間共享依賴項,這是一個明顯的候選者。CLI 單聲道應用程序是否有效?

MonoDevelop 建構文件

我們強烈建議您盡可能從軟體包中安裝所有內容。如果不是你,你應該使用並行單聲道環境。不要在 /usr 或 /usr/local 上安裝任何東西,除非你完全理解 do 的含義。

如果其他單聲道應用程序只能從已安裝的monodevelop樹中執行,並且重新安裝軟體包沒有幫助,那麼您可能會有一堆額外的東西漂浮在源安裝添加的周圍,這會干擾mono找到它的庫,可能是硬編碼的路徑安裝monodevelop

我的 Debian-fu 並不強大,但應該有一種方法可以辨識不知道的文件,這可能是一個開始的地方/usrdpkg

引用自:https://unix.stackexchange.com/questions/37883