处理安装依赖项的最佳方法是什么?

时间:2013-03-19 22:50:40

标签: c++ linux dynamic-linking package-managers

我有一个图书馆,我分发给我的客户。我正在探索将第三方依赖项保留为动态链接依赖项的想法。在这种情况下,我的客户部署变得更加复杂,因为他们必须先安装我的依赖项才能使用我的库。我对此有点新意,所以我有一个广泛的问题:

假设我的所有客户都在linux上,那么RPM包是否只是将依赖.so文件安装到系统库目录中的最佳路径?从我正在阅读的有关RPM的内容来看,这并不是它们的用途。我想我正在寻找的是Linux的一种“安装程序”,但也许这样的东西不存在。

是构建包含所有相关二进制文件(以及许可证,如果适用)的软件包的最佳方法,并提供有关如何安装的说明吗?

1 个答案:

答案 0 :(得分:1)

您有多种选择:

  • 静态链接(如果正在使用的许可证允许)
  • 支持一系列发行版并为所有发行版提供包(可行性取决于您的客户是谁)。为您的客户提供最简单的选择,最简单的选择。
  • 提供安装程序,以Windows风格的自包含目录结构(例如/opt/myapp/home/someuser/myapp)安装您的应用程序。将共享库放在那里,然后通过相应设置LD_LIBRARY_PATH的脚本启动。我见过Loki游戏,Adobe Reader,Google Earth和其他人使用的这个选项。

不要:

  • 提供自定义安装程序,将在标准目录结构中复制二进制文件和库。这可能会覆盖客户拥有的其他应用程序所需的特定库版本。由于发行版的软件包管理人员不了解这些文件,因此也会造成严重的混乱。
  • 为每个人提供rpm。在非rpm发行版上,这将要求您的客户手动转换包以适合其包管理系统。