我是 RPM 新手
我想为尚未发布的 centos 6.5 构建 tmux 和 libevent 的 RPM。
问题是 tmux 需要 libevent 2.0+,而 centos 6.5 也没有提供。所以我在这里为这两个包写了 rpm 规范:https://github.com/sprhawk/RPMSPECs/tree/master/SPECS
然而,centos 6.0 发布了 nfs 包所需的 libevent 1.4,而 yum 拒绝更新 libevent。
如何在保留系统提供的 libevent 1.4 的同时安装 libevent 2.0+?
更新#1:
为什么我没有使用 /usr/local?
因为我想使用 %{_libdir} 来自动将 lib 目录指示为 lib64 而不是 lib。
答案1
获取 tmux 的最简单方法是启用 EPEL 软件包存储库。该软件包位于此处:http://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/tmux.html
但最简单的方法是安装 EPEL 发布包,您可以在此处阅读相关内容:https://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F
EPEL 当前有一个稍旧版本的 tmux,但它可以完成我需要做的所有事情,并且看起来非常稳定(我从未见过它出现故障)。
如果您确实需要更新版本的 tmux 和 libevent,构建替代库版本的标准方法是将包命名为 libevent2 之类的名称,并在库文件名中包含版本信息(例如 libevent-2.0.so.5)。configure 在某些情况下提供了此选项;一些库使用 libtool 来协助实现这一点。快速谷歌搜索发现,libevent 现在从 2.0.x 树上的某个位置开始使用 libtool,因此获取替代命名的库应该相当容易。
这里有一些关于使用 RPM 打包多个库版本的文档,其中包含一些不错的例子:http://en.opensuse.org/openSUSE:共享库打包政策
并且,关于多个版本主题的官方 RPM 文档(但它不直接涵盖库):http://rpm.org/wiki/PackagerDocs/MultipleVersions
最后,如果我打算构建 libevent 2.0 包,我会从当前 CentOS 7 存储库中找到的包开始,并将附加版本信息添加到包名称中以使其可同时安装。您可以找到具有多个版本的包的示例,以了解如何完成此操作。例如,gtk2 和 gtk3 通常可用于大多数基于 RPM 的系统,尽管它们太大,因此被放入 lib 或 lib64 中的自己的目录中,这对于 libevent 来说可能没用或没有必要。