我使用的应用程序需要 OpenSSL 0.9.8,它已经安装在我的 CentOS 上(具体来说是 0.9.8e)和 1.0.1e,不幸的是默认情况下使用。我尝试更改libssl.so.10符号链接以指向旧版本,如下所示:
[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl
/usr/bin/openssl: /usr/lib64/libssl.so.10: no version information available (required by /usr/bin/openssl)
linux-vdso.so.1 => (0x00007fff2edff000)
libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f664457c000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007f664421d000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ export LD_LIBRARY_PATH=~/libs:$LD_LIBRARY_PATH
[mckulpa@nuance-vm ~]$ echo $LD_LIBRARY_PATH
/home/mckulpa/libs:/usr/local/Nuance/Recognizer_Service/amd64/lib:/usr/local/Nuance/OAM/x86/lib:/usr/local/Nuance/Common/x86/lib:/usr/local/Nuance/Common/amd64/lib
[mckulpa@nuance-vm ~]$ ldd /usr/bin/openssl
/usr/bin/openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by /usr/bin/openssl)
linux-vdso.so.1 => (0x00007fff91dbc000)
libssl.so.10 => /home/mckulpa/libs/libssl.so.10 (0x00007ffe1af50000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003927600000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003926200000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003925a00000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003926e00000)
libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003927200000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000391a600000)
libz.so.1 => /lib64/libz.so.1 (0x000000391aa00000)
libc.so.6 => /lib64/libc.so.6 (0x0000003919e00000)
libcrypto.so.6 => /usr/lib64/libcrypto.so.6 (0x00007ffe1abd9000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003925e00000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003926a00000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x000000391be00000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000391a200000)
/lib64/ld-linux-x86-64.so.2 (0x0000003919600000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x000000391b600000)
[mckulpa@nuance-vm ~]$ ls -l libs
total 316
-rwxr-xr-x. 1 mckulpa mckulpa 321224 05-28 14:59 libssl.so.0.9.8e
lrwxrwxrwx. 1 mckulpa mckulpa 16 05-28 15:18 libssl.so.10 -> libssl.so.0.9.8e
Run Code Online (Sandbox Code Playgroud)
但我得到的只是一个警告,仍然打印出 1.0.1e 版本:
[mckulpa@nuance-vm ~]$ openssl version
openssl: /home/mckulpa/libs/libssl.so.10: no version information available (required by openssl)
OpenSSL 1.0.1e-fips 11 Feb 2013
Run Code Online (Sandbox Code Playgroud)
任何想法如何正确地做到这一点?
从其他机器复制单个库几乎肯定会失败,可能会以奇怪且难以诊断的方式进行。不要那样做,如果必须这样做,不要将其描述为“已安装”;该过程绝对不构成安装。
openssl098eCentOS 6 基本存储库中似乎确实有一个RPM,这意味着它很可能也在 RHEL6 中。它将被打包以与主系统 OpenSSL 和平共处,并且它似乎包含绝对必须具有旧版本的东西的必要库。它没有用户空间openssl工具,但如果您的应用程序需要它,我会感到非常惊讶。
尝试做一个yum install openssl098e.
| 归档时间: |
|
| 查看次数: |
11767 次 |
| 最近记录: |