我正在尝试在 CENT OS 5.4 上安装 LINBIT 的最新版本文件同步工具 csync2。最近对该软件所做的一些更改要求在系统上安装 gnutls>=2.6(用于 SSL 支持)。
不幸的是,CENT OS 5 上可用的 gnutls rpm 版本不高于 1.4.3。但是,我从“art”存储库中找到了一些 compat-gnutls*.rpm、compat-gnutls-devel*.rpm,并将它们安装在我的 CENT OS 5 系统上。我通过运行以下命令验证了此库(names、gnutls)是否已正确安装,所有命令均返回了预期结果。
pkg-config --cflags --print-errors gnutls
pkg-config --libs --print-errors gnutls
gcc `pkg-config gnutls --cflags` -o test.o test.c
gcc -lgnutls -o test.o test.c
pkg-config --cflags "gnutls >= 2.6.0"
pkg-config --modversion gnutls | awk -F. '{ printf "0x%02X%02X%02X\n",$1,$2,$3 }'
现在,我尝试构建 csssync2 的 rpm,但出现以下错误:
[root@myvm1 opt]# rpmbuild -bb /usr/src/redhat/SPECS/csync2.spec
error: Failed build dependencies:
gnutls-devel is needed by csync2-2.0-0.1.rc1.x86_64
You have new mail in /var/spool/mail/root
[root@myvm1 opt]#
我尝试安装也依赖于 gnutls 的 wireshark;但它也因相同的依赖关系(即 gnutls)而失败。
[root@myvm1 replica]# rpm -ivh wireshark-1.0.15-1.el5_6.4.x86_64.rpm
error: Failed dependencies:
libgnutls.so.13()(64bit) is needed by wireshark-1.0.15-1.el5_6.4.x86_64
libgnutls.so.13(GNUTLS_1_3)(64bit) is needed by wireshark-1.0.15-1.el5_6.4.x86_64
libsmi.so.2()(64bit) is needed by wireshark-1.0.15-1.el5_6.4.x86_64
我不确定为什么 rpm 或 rpmbuild 没有检测到已安装的 gnutls 库,即使它已经安装在系统上。
以下是命令“locate libgnutls.so”返回的内容,表明存在 libgnutls。
[root@pdev22vm1 replica]# locate libgnutls.so
/usr/gnutls2/lib/libgnutls.so
/usr/gnutls2/lib/libgnutls.so.26
/usr/gnutls2/lib/libgnutls.so.26.14.12
/usr/lib/libgnutls.so
/usr/lib64/libgnutls.so
并且命令“locate libgnutls-openssl.so”返回:
[root@pdev22vm1 副本]# 定位 libgnutls-openssl.so /usr/gnutls2/lib/libgnutls-openssl.so /usr/gnutls2/lib/libgnutls-openssl.so.26 /usr/gnutls2/lib/libgnutls-openssl.so.26.14.12 /usr/lib/libgnutls-openssl.so /usr/lib64/libgnutls-openssl.so
我甚至尝试通过删除对“gnutls-devel”的依赖来构建 csync2 rpm;构建的 rpm 无法与 SSL 一起工作并出现错误“此二进制文件不是基于 SSL 构建的”。
有人能帮助我理解为什么 rpm 或 rpmbuild 无法识别已安装的 gnutls 库以及如何解决这种情况吗?
感谢并问候,Samba
答案1
我认为您需要编辑您的 SRPMS 来修改 spec 文件以列出 compat-gnutls-devel 上的构建要求,即您为最新版本找到的构建要求。
如果您不知道如何修改 SRPMS 并且无法通过 Google 找到合适的文档,我会尽力进一步帮助您。