Rhel

libssl.so.0.9.8:無法打開共享對象文件:沒有這樣的文件或目錄

  • December 3, 2015

在安裝後嘗試在本地執行 Cloud9 IDE 時,我收到此錯誤:

# bin/cloud9.sh
Linux 64 bit
support/node-builds-v4/node-linux64: error while loading shared libraries: libssl.so.0.9.8: cannot open shared object file: No such file or directory

看起來很奇怪,因為庫在/lib,/usr/lib和其他位置通過符號連結。

為了檢查,這裡是主文件:

# ls -l /usr/lib | grep libssl
-r-xr-xr-x. 1 root root   319816 Oct  6  2014 libssl.so.0.9.8

為什麼找不到文件,是否需要將其包含在任何其他$PATH變數中或可能是什麼原因?

更新:

ssl 似乎是一個更廣泛的問題:

# git submodule update --init --recursive
Cloning into 'support/sass'...
fatal: remote error:
 Repository not found.
Clone of 'git://github.com/visionmedia/sass.js.git' into submodule path 'support/sass' failed
Failed to recurse into submodule path 'support/connect'

失敗的模組需要ssl下載,而其他下載的模組不需要:

# cat .gitmodules
[submodule "support/socket.io-client"]
   path = support/socket.io-client
   url = http://github.com/ajaxorg/socket.io-client.git
[submodule "support/uglify-js"]
   path = support/uglify-js
   url = http://github.com/ajaxorg/UglifyJS.git
[submodule "support/connect"]
   path = support/connect
   url = https://github.com/ajaxorg/connect.git

檢查 openssl 版本:

# yum list installed openssl
Loaded plugins: refresh-packagekit, security, ulninfo
Installed Packages
openssl.x86_64                      1.0.1e-42.el6                      

64位安裝openssl庫:

# ls -l /usr/lib64 | grep libssl
-rwxr-xr-x.  1 root root   261248 Nov  4 10:37 libssl3.so
lrwxrwxrwx.  1 root root       16 Dec  1 10:30 libssl.so -> libssl.so.1.0.1e
-rwxr-xr-x.  1 root root   324680 Jun  5  2014 libssl.so.0.9.8e
lrwxrwxrwx.  1 root root       16 Dec  1 10:29 libssl.so.10 -> libssl.so.1.0.1e
-rwxr-xr-x.  1 root root   444184 Jul 23 09:43 libssl.so.1.0.1e
lrwxrwxrwx.  1 root root       16 Dec  3 11:29 libssl.so.6 -> libssl.so.0.9.8e

正如您通過使用libssl.so.0.9.8搜尋 RPM 所看到的,這是一個舊文件,不太可能是您為 openssl 列出的 RPM 的一部分。您可以使用 RPM查看哪些文件是 RPM 的一部分

rpm -ql openssl.x86_64

此外,您可以通過以下方式查看該文件可能屬於哪個 RPM

rpm -qf /usr/lib/libssl.so.0.9.8

以及文件使用的架構

file /usr/lib/libssl.so.0.9.8

最可能的解釋是(一個或多個):

  • 該文件是從其他機器複製的
  • 它是一個 32 位庫
  • ldconfig64 位庫的路徑使用/usr/lib64(not /usr/lib)。

64 位應用程序無法載入 32 位共享庫,並且只會在ldconfig可能的位置找到其庫。

引用自:https://unix.stackexchange.com/questions/247102