我刚刚安装了 CentOS 6 64 位版本,我正在尝试在 64 位机器上安装 32 位应用程序并收到此错误:
/lib/ld-linux.so.2:错误的 ELF 解释器:没有这样的文件或目录
我是 linux 新手。我该如何解决这个问题?
您在 64 位系统上,并且没有安装 32 位库支持。
(如果您在设置中不使用 sudo,请阅读下面的说明)
Fedora/Red Hat 系列中的大多数桌面 Linux 系统:
pkcon install glibc.i686
可能是一些桌面 Debian/Ubuntu 系统?:
pkcon install ia32-libs
Fedora 或更新的 Red Hat、CentOS:
sudo dnf install glibc.i686
旧版 RHEL、CentOS:
sudo yum install glibc.i686
甚至更旧的 RHEL、CentOS:
sudo yum install glibc.i386
Debian 或 Ubuntu:
sudo apt-get install ia32-libs
应该抓住你需要的(第一个,主要的)库。
任何需要安装glibc.i686或glibc.i386可能会遇到其他库依赖项的人。要识别提供任意库的包,您可以使用
glibc.i686
glibc.i386
ldd /usr/bin/YOURAPPHERE
如果你不确定它在/usr/bin你也可以依靠
/usr/bin
ldd $(which YOURAPPNAME)
输出将如下所示:
linux-gate.so.1 => (0xf7760000) libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000) libSM.so.6 => not found
检查缺少的库(例如libSM.so.6在上面的输出中),并为每个你需要找到提供它的包。
libSM.so.6
Fedora/红帽企业/CentOS:
dnf provides /usr/lib/libSM.so.6
或者,在较旧的 RHEL/CentOS 上:
yum provides /usr/lib/libSM.so.6
或者,在 Debian/Ubuntu 上:
首先,安装并下载数据库apt-file
apt-file
sudo apt-get install apt-file && apt-file update
然后搜索
apt-file find libSM.so.6
注意(通常)情况下的前缀路径/usr/lib;很少有一些库/lib由于历史原因仍然存在 - 在典型的 64 位系统上,32 位库存/usr/lib在于/usr/lib64.
/usr/lib
/lib
/usr/lib64
(Debian/Ubuntu 以不同的方式组织多架构库。)
上面应该给你一个包名,例如:
libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library Repo : fedora Matched from: Filename : /usr/lib/libSM.so.6
在此示例中,包libSM的 名称是 32 位版本的包的名称是libSM.i686.
libSM
libSM.i686
然后,您可以安装包以pkcon在 GUI 中使用必要的库,或sudo dnf/yum/apt-get视情况而定。例如pkcon install libSM.i686。如有必要,您可以完全指定版本。例如sudo dnf install ibSM-1.2.0-2.fc15.i686。
pkcon
sudo dnf/yum/apt-get
pkcon install libSM.i686
sudo dnf install ibSM-1.2.0-2.fc15.i686
一些图书馆的名称前会有一个“poch”指示符;这可以省略(好奇的可以阅读下面的注释)。
顺便说一句,您面临的问题要么意味着您的 RPM(或 DPkg/DSelect)数据库已损坏,要么您尝试运行的应用程序未通过包管理器安装。如果您是 Linux 新手,您可能希望尽可能避免使用包管理器以外的其他来源的软件…
类型
su -c
每次你看到sudo,例如,
sudo
su -c dnf install glibc.i686
名称前的“poch”指示符是底层 RPM 库处理版本号的方式的产物;例如
2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files Repo : fedora Matched from: Filename : /usr/lib/libpng.so.3
这里,2:可以省略;只是pkcon install libpng.i686或sudo dnf install libpng-1.2.46-1.fc16.i686。(它模糊地暗示了一些类似的东西:在某些时候,包的版本号libpng向后滚动,并且“poch”必须增加,以确保在更新期间更新的版本会被认为是“较新的”。或者其他什么类似的事情发生了。两次。)
2:
pkcon install libpng.i686
sudo dnf install libpng-1.2.46-1.fc16.i686
libpng
更新 以更全面地阐明和涵盖各种包管理器选项(2016 年 3 月)