我一直在尝试升级旧的Linux机器上的一些程序(Debian 7.5 wheezy)。 我想保持默认的系统库不变,并添加一些自定义的版本。 它适用于大多数库,只有OpenSSL给我一个很难(libssl.so + libcrypt.so)。
这是我的OpenSSLconfiguration行:
# ./config --prefix=/usr/local --openssldir=/usr/local/openssl no-gost shared zlib no-ssl2 -fPIC
那么对于其他程序,例如cURL:
# ./configure LDFLAGS="-L/usr/local/ssl/lib -ldl" --with-ssl --enable-shared
但是后来我得到了错误的OpenSSL版本:
# curl --version curl 7.44.0 (x86_64-unknown-linux-gnu) libcurl/7.44.0 OpenSSL/1.0.1e
我知道libssl.so在这个系统的以下文件夹中有副本:
/usr/lib/libssl.so /usr/lib/x86_64-linux-gnu/libssl.so /usr/local/lib/libssl.so /usr/local/ssl/lib/libssl.so
所有这些都是相同的自定义编译版本,除了/usr/lib/x86_64-linux-gnu/libssl.so这似乎是我的默认系统库(v1.0.5e)。
我想知道我怎么可以指示configuration脚本,以避免看到里面/ lib / x86_64-linux-gnu ? 我可以只更改/usr/lib/x86_64-linux-gnu/libssl.so符号链接并将其指向我的构build? 安全吗?
谢谢,
我发现一个解决scheme被标记为“不是最好的方法”,但是为我工作的是编辑LD_LIBRARY_PATH系统variables,例如在<user> /。bashrc:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
我试图做你的build议,导致分段错误! 所以,不安全!
/usr/lib/i686/cmov$ sudo ln -s /usr/lib/libssl.so.1.0.0 libssl.so.0.9.8 /usr/lib/i686/cmov$ ls -la total 1684 drwxr-xr-x 2 root root 4096 Jun 16 14:15 . drwxr-xr-x 3 root root 4096 Oct 22 2012 .. -rw-r--r-- 1 root root 1393308 Feb 11 2013 libcrypto.so.0.9.8 lrwxrwxrwx 1 root root 24 Jun 16 14:15 libssl.so.0.9.8 -> /usr/lib/libssl.so.1.0.0 -rw-r--r-- 1 root root 310296 Feb 11 2013 libssl.so.0.9.8.bk :/usr/lib/i686/cmov$ sudo /etc/init.d/nginx restart Restarting nginx: nginx/usr/sbin/nginx: /usr/lib/i686/cmov/libssl.so.0.9.8: no version information available (required by /usr/sbin/nginx) Segmentation fault