我怎样才能让自编译的包与包管理器(例如 apt-get、yum)一起玩得很好

use*_*956 0 compiling yum apt autoconf deb

假设我想:

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

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

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

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

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

那么,这里的解决方案是什么?我不想安装到 /home (我希望这些包可供代码回归构建集群中的共享用户使用)。我还读到 /opt 并不是真正用于此目的(安装的软件包应该是自包含的,但它们不是)。我发现的参考资料似乎足够详细地涵盖了这种情况。

lar*_*sks 5

通常,解决方案是“不要尝试从源代码安装到您的打包系统管理的目录中”。

您可以安装您的自定义编译的代码转换成/usr/local,例如,具有任何依赖它看/usr/local图书馆和包括使用构建系统的适当调用文件(例如,设置CPPFLAGS/ CFLAGS/LDFLAGS为典型Makefile)。

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

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