如何让自编译的包与包管理器(例如 apt-get、yum)很好地配合

如何让自编译的包与包管理器(例如 apt-get、yum)很好地配合

假设我想:

  • 编译并安装我自己的自定义应用程序
  • 这需要下载、编译并安装最新版本 libthrift 的源代码
  • 需要下载、编译并安装最新版本的 libboost

在这里,我在我的系统中安装这些库,它们可能与其他包交互——很多库依赖于 libthrift 和 libboost。

  • 安装这些可能会破坏使用 apt-get/yum 安装的现有软件包

另外,如果我稍后运行 apt-get 或 yum:

  • 我的自定义 libthrift 和 libboost 将被覆盖,破坏依赖于这些库的自定义版本的自定义应用程序。

那么,这里的解决方案是什么呢?我不想安装到 /home (我希望代码回归构建集群中的共享用户可以使用这些包)。我还读到 /opt 并不是真正用于此目的(安装的软件包应该是独立的,但它们不是)。这参考我发现这个案例似乎已经足够详细了。

答案1

一般来说,解决方案是“不要尝试从源安装到打包系统管理的目录中”。

例如,您可以将自定义编译的代码安装到 中,并使用构建系统的适当调用(例如,设置 // 为典型的 )来查找依赖于它的库和包含文件/usr/local/usr/localCPPFLAGSCFLAGSLDFLAGSMakefile

您甚至可以将所有内容安装到特定于应用程序的目录中(例如,/usr/local/myapp、 或/opt/myapp)。

这也是一个很好的用例,例如码头工人,这使得设置与主机隔离的隔离开发/运行时环境变得非常容易。

相关内容