我怎样才能安装 libevent 2.0+ 并保留系统提供的 libevent 1.4?

我怎样才能安装 libevent 2.0+ 并保留系统提供的 libevent 1.4?

我是 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:

  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 来说可能没用或没有必要。

相关内容