最佳实践:在Linux上部署依赖项

时间:2014-08-28 08:19:06

标签: linux dependencies shared-libraries

在发布自己的应用程序时,在Linux上部署依赖项的最佳做法是什么?

有些SO帖子建议在包中包含所有依赖项(使用LD_LIBRARY_PATH),其他帖子建议只发送二进制文件并使用"依赖项"相反,DEB / RPM包的功能。我试图使用第二种方法,但立即遇到了一个依赖(libicu52)似乎在某些Linux发行版中似乎不可用的问题。例如,在我的OpenSuse测试安装中只有" libicu51"可以在包管理器中找到。

我最初认为包装系统的整个想法是避免系统中的重复SO文件。但它确实有效(见上文),或者我应该使用我的应用程序发送所有依赖项,以确保它在所有发行版上运行?

1 个答案:

答案 0 :(得分:1)

对于自定义应用程序,“不关心”特定于分发的包装,版本控制,升级等。我建议手动重新分发依赖项。

您可以使用RPATH链接器选项,通过设置值$ORIGIN,您将告诉链接器搜索目录中相对于该二进制文件的库,而无需预先设置{{1}执行前:

LD_LIBRARY_PATH

取自here

的示例