在发布自己的应用程序时,在Linux上部署依赖项的最佳做法是什么?
有些SO帖子建议在包中包含所有依赖项(使用LD_LIBRARY_PATH),其他帖子建议只发送二进制文件并使用"依赖项"相反,DEB / RPM包的功能。我试图使用第二种方法,但立即遇到了一个依赖(libicu52)似乎在某些Linux发行版中似乎不可用的问题。例如,在我的OpenSuse测试安装中只有" libicu51"可以在包管理器中找到。
我最初认为包装系统的整个想法是避免系统中的重复SO文件。但它确实有效(见上文),或者我应该使用我的应用程序发送所有依赖项,以确保它在所有发行版上运行?
答案 0 :(得分:1)
对于自定义应用程序,“不关心”特定于分发的包装,版本控制,升级等。我建议手动重新分发依赖项。
您可以使用RPATH
链接器选项,通过设置值$ORIGIN
,您将告诉链接器搜索目录中相对于该二进制文件的库,而无需预先设置{{1}执行前:
LD_LIBRARY_PATH
取自here。
的示例