首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使rpm告诉它里面提供了哪些库?

如何使rpm告诉它里面提供了哪些库?
EN

Stack Overflow用户
提问于 2014-09-03 07:18:46
回答 1查看 1.9K关注 0票数 2

亲爱的堆栈溢出用户,

我试图在CentOS 6.5中安装更新的openssl,如下所示:

代码语言:javascript
复制
# curl -O https://www.openssl.org/source/openssl-1.0.1i.tar.gz
# tar xzf openssl-1.0.1i.tar.gz
# sed -i "s@/usr/lib@/usr/lib64@g" openssl-1.0.1i/openssl.spec
# tar czf openssl-1.0.1i.tar.gz openssl-1.0.1i
# rpmbuild -tb openssl-1.0.1i.tar.gz

但是,安装生成的rpm将返回以下错误:

代码语言:javascript
复制
bash-4.1# rpm -Uvh /rpmbuild/RPMS/x86_64/openssl-1.0.1i-1.x86_64.rpm

error: Failed dependencies:
    libcrypto.so.10()(64bit) is needed by (installed) python-libs-2.6.6-52.el6.x86_64
    libcrypto.so.10()(64bit) is needed by (installed) libssh2-1.4.2-1.el6.x86_64
    libcrypto.so.10()(64bit) is needed by (installed) fipscheck-1.2.0-7.el6.x86_64
    libcrypto.so.10()(64bit) is needed by (installed) openssh-5.3p1-94.el6.x86_64
    libcrypto.so.10()(64bit) is needed by (installed) openssh-clients-5.3p1-94.el6.x86_64
    libcrypto.so.10()(64bit) is needed by (installed) git-1.7.1-3.el6_4.1.x86_64
    libcrypto.so.10(OPENSSL_1.0.1)(64bit) is needed by (installed) openssh-5.3p1-94.el6.x86_64
    libcrypto.so.10(OPENSSL_1.0.1)(64bit) is needed by (installed) openssh-clients-5.3p1-94.el6.x86_64
    libcrypto.so.10(libcrypto.so.10)(64bit) is needed by (installed) python-libs-2.6.6-52.el6.x86_64
    libcrypto.so.10(libcrypto.so.10)(64bit) is needed by (installed) openssh-5.3p1-94.el6.x86_64
    libcrypto.so.10(libcrypto.so.10)(64bit) is needed by (installed) openssh-clients-5.3p1-94.el6.x86_64
    libssl.so.10()(64bit) is needed by (installed) python-libs-2.6.6-52.el6.x86_64
    libssl.so.10()(64bit) is needed by (installed) libssh2-1.4.2-1.el6.x86_64
    libssl.so.10()(64bit) is needed by (installed) git-1.7.1-3.el6_4.1.x86_64
    libssl.so.10(libssl.so.10)(64bit) is needed by (installed) python-libs-2.6.6-52.el6.x86_64

因此,我对openssl.spec进行了如下修改:

代码语言:javascript
复制
# diff -u .openssl/openssl.spec openssl-1.0.1i/openssl.spec 
--- .openssl/openssl.spec   2014-09-03 06:49:33.621688061 +0000
+++ openssl-1.0.1i/openssl.spec 2014-09-03 06:59:10.949636692 +0000
@@ -103,6 +103,9 @@

 %install
 rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/usr/lib64
+ln -sf /usr/lib64/libssl.so.1.0.0 $RPM_BUILD_ROOT/usr/lib64/libssl.so.10
+ln -sf /usr/lib64/libcrypto.so.1.0.0 $RPM_BUILD_ROOT/usr/lib64/libcrypto.so.10
 make MANDIR=/usr/man MANSUFFIX=ssl INSTALL_PREFIX="$RPM_BUILD_ROOT" install

 # Make backwards-compatibility symlink to ssleay

在创建的包libssl.so.10和libcryp.so.10中确实存在:

代码语言:javascript
复制
# rpm -iqlp /rpmbuild/RPMS/x86_64/openssl-1.0.1i-1.x86_64.rpm | grep \.10
/usr/lib64/libcrypto.so.10
/usr/lib64/libssl.so.10

但它不被认为是应提供的图书馆:

代码语言:javascript
复制
# rpm -qip --provides /rpmbuild/RPMS/x86_64/openssl-1.0.1i-1.x86_64.rpm        
Name        : openssl                      Relocations: (not relocatable)
Version     : 1.0.1i                            Vendor: (none)
Release     : 1                             Build Date: Wed Sep  3 07:06:45 2014
Install Date: (not installed)               Build Host: 4cc54f371b7a
Group       : System Environment/Libraries   Source RPM: openssl-1.0.1i-1.src.rpm
Size        : 3705468                          License: OpenSSL
Signature   : (none)
Packager    : Damien Miller <djm@mindrot.org>
URL         : http://www.openssl.org/
Summary     : Secure Sockets Layer and cryptography libraries and tools
Description :
The OpenSSL Project is a collaborative effort to develop a robust,
commercial-grade, fully featured, and Open Source toolkit implementing the
Secure Sockets Layer (SSL v2/v3) and Transport Layer Security (TLS v1)
protocols as well as a full-strength general purpose cryptography library.
The project is managed by a worldwide community of volunteers that use the
Internet to communicate, plan, and develop the OpenSSL tookit and its related
documentation.

OpenSSL is based on the excellent SSLeay library developed from Eric A.
Young and Tim J. Hudson.  The OpenSSL toolkit is licensed under an
Apache-style licence, which basically means that you are free to get and
use it for commercial and non-commercial purposes.

This package contains the base OpenSSL cryptography and SSL/TLS
libraries and tools.
SSL  
config(openssl) = 1.0.1i-1
libcrypto.so.1.0.0()(64bit)  
libssl.so.1.0.0()(64bit)  
openssl = 1.0.1i-1
openssl(x86-64) = 1.0.1i-1

在Makefile*中将LIBCOMPATVERSIONS=修改为LIBCOMPATVERSIONS=10并不能解决这个问题。所以问题是,“我如何使rpm告诉它有libssl.so.10和libcryp.so.10?”

如有任何意见,将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-05 13:11:55

您可以使用“提供:”标记:

http://ftp.rpm.org/max-rpm/s1-rpm-depend-manual-dependencies.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25638461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档