2014-09-03 200 views
2

尊敬的計算器的用戶,我該如何讓rpm知道里面提供了哪些庫?

我試圖在CentOS的6.5至安裝新的OpenSSL如下:

# curl -O https://www.openssl.org/source/openssl-1.0.1i.tar.gz 
# tar xzf openssl-1.0.1i.tar.gz 
# sed -i "[email protected]/usr/[email protected]/usr/[email protected]" 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 

但是在安裝中產生的轉速返回如下錯誤:

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如下:

# 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和libcrypto.so.10確實存在:

# 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 

但它不被識別爲要被提供庫:

# 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 <[email protected].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 

修改LIBCOMPATVERSIONS =到LIBCOMPATVERSIONS = 10在Makefile *中不能解決這個問題。 所以問題是,「我怎樣才能讓rpm知道它有libssl.so.10和libcrypto.so.10?」

任何意見將不勝感激,謝謝。

- mmtsk

回答

相關問題