2014-08-28 47 views
0

運送自己的應用程序時,在Linux上部署依賴關係的最佳實踐是什麼?最佳實踐:在Linux上部署依賴關係

某些SO帖子建議將所有依賴關係包括在包中(利用LD_LIBRARY_PATH),其他帖子建議僅發佈二進制文件,並使用DEB/RPM包的「依賴」功能。我嘗試使用第二種方法,但立即遇到了一個依賴項(libicu52)在某些Linux發行版中似乎不可用的問題。例如,在我的OpenSuse測試安裝中,只有「libicu51」在軟件包管理器中可用。

我最初認爲包裝系統的整體思想是避免系統中重複的SO文件。但是它確實有效(請參閱上文),還是應該將所有依賴關係與我的應用程序一起發佈,以確保它可以在所有發行版上運行?

回答

1

對於定製應用程序,哪些「不關心」特定於分發的打包,版本控制,升級等等。我會建議手動重新分配依賴關係。

您可以使用RPATH連接選項,通過它的設定值$ORIGIN你會告訴鏈接程序搜索目錄庫,相對於二進制文件,而不需要預先設定LD_LIBRARY_PATH執行前:

gcc -Wl,-rpath,'$ORIGIN/../lib' 

取自here的示例。