Centos

載入共享庫時出錯:libdl.so.2(和其他),沒有這樣的文件。圖書館存在

  • October 14, 2014

嘗試從 .bin 文件安裝 Java 應用程序。從命令行打開安裝程序時,我看到以下錯誤:

[boxen]# ./ZendStudio-5_2_0.bin 
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
hostname: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

Launching installer...

grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/tmp/install.dir.7515/Linux/resource/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

問題是這些對像中的每一個都存在於系統中。

# locate libdl.so.2
/usr/lib/libdl.so.2
/usr/lib64/libdl.so.2

# locate libc.so.6
/usr/lib/libc.so.6
/usr/lib/i686/nosegneg/libc.so.6
/usr/lib64/libc.so.6

# locate libnsl.so.1
/usr/lib/libnsl.so.1
/usr/lib64/libnsl.so.1

如果我發出這個,

echo $LD_LIBRARY_PATH

我什麼都得不到。

因此,我將包含目錄添加到路徑中:

[boxen]# LD_LIBRARY_PATH=/usr/lib:/usr/lib64/:/usr/local/lib/:/usr/local/lib64/
[boxen]# echo $LD_LIBRARY_PATH
/usr/lib:/usr/lib64/:/usr/local/lib/:/usr/local/lib64/

並重新執行安裝程序…

[boxen]# ./ZendStudio-5_2_0.bin 
Preparing to install...
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
awk: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/bin/ls: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
dirname: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
basename: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
hostname: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory

Launching installer...

grep: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
/tmp/install.dir.8055/Linux/resource/jre/bin/java: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory

完全相同的一批錯誤。

安裝的Java版本:

java version "1.7.0_65"
OpenJDK Runtime Environment (rhel-2.5.1.2.el7_0-x86_64 u65-b17)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)

安裝的 glib:

# rpm -qa | grep glibc
glibc-2.17-55.el7.i686
glibc-2.17-55.el7.x86_64
glibc-headers-2.17-55.el7.x86_64
glibc-common-2.17-55.el7.x86_64
glibc-devel-2.17-55.el7.x86_64

什麼可能導致安裝程序看不到明顯存在於環境變數中的文件?

我很幸運偶然發現了這個解決方案,但我想把它貼出來,以防其他人在安裝遺留軟體時遇到這個問題。

Assuming the install anywhere script is called Install.bin

# cp Install.bin Install.bak
# cat Install.bak | sed "s/export LD_ASSUME_KERNEL/#xport LD_ASSUME_KERNEL/" > Install.bin
# rm Install.bak

這很好用。

該修復程序最初發佈在Zend 知識庫(現在是 404 版)上,它仍然存檔在linuxquestions.org上。

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