假设我想:
- 编译并安装我自己的自定义应用程序
- 这需要下载、编译并安装最新版本 libthrift 的源代码
- 需要下载、编译并安装最新版本的 libboost
在这里,我在我的系统中安装这些库,它们可能与其他包交互——很多库依赖于 libthrift 和 libboost。
- 安装这些可能会破坏使用 apt-get/yum 安装的现有软件包
另外,如果我稍后运行 apt-get 或 yum:
- 我的自定义 libthrift 和 libboost 将被覆盖,破坏依赖于这些库的自定义版本的自定义应用程序。
那么,这里的解决方案是什么呢?我不想安装到 /home (我希望代码回归构建集群中的共享用户可以使用这些包)。我还读到 /opt 并不是真正用于此目的(安装的软件包应该是独立的,但它们不是)。这参考我发现这个案例似乎已经足够详细了。
答案1
一般来说,解决方案是“不要尝试从源安装到打包系统管理的目录中”。
例如,您可以将自定义编译的代码安装到 中,并使用构建系统的适当调用(例如,设置 // 为典型的 )来查找依赖于它的库和包含文件/usr/local
。/usr/local
CPPFLAGS
CFLAGS
LDFLAGS
Makefile
您甚至可以将所有内容安装到特定于应用程序的目录中(例如,/usr/local/myapp
、 或/opt/myapp
)。
这也是一个很好的用例,例如码头工人,这使得设置与主机隔离的隔离开发/运行时环境变得非常容易。