web-dev-qa-db-ja.com

CentOS 64ビット悪いELFインタプリタ

私はちょうどCentOS 6 64ビット版をインストールしました、私は64ビットマシンに32ビットアプリケーションをインストールしようとしていて、このエラーを得ました:

/lib/ld-linux.so.2:不正なELFインタプリタ:そのようなファイルやディレクトリはありません

私はLinuxが初めてです。これをどのように解決しますか?

172
c11ada

64ビットシステムを使用しており、32ビットライブラリサポートがインストールされていません。

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をインストールする必要がある人は、おそらく他のライブラリの依存関係にも遭遇するでしょう。任意のライブラリを提供するパッケージを識別するには、次を使用できます。

 ldd /usr/bin/YOURAPPHERE

/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など)を確認し、ライブラリごとに、それを提供するパッケージを見つける必要があります。

ディストリビューションファミリごとにパッケージを検索するコマンド

Fedora/Red Hat Enterprise/CentOS:

 dnf provides /usr/lib/libSM.so.6

または、古いRHEL/CentOSの場合:

 yum provides /usr/lib/libSM.so.6

または、Debian/Ubuntuの場合:

まず、apt-fileのデータベースをインストールしてダウンロードします

 Sudo apt-get install apt-file && apt-file update

次に検索

 apt-file find libSM.so.6

(通常の)場合のプレフィックスパス/usr/libに注意してください。まれに、歴史的な理由で一部のライブラリが/libの下に存在することはほとんどありません...典型的な64ビットシステムでは、32ビットライブラリは/usr/libに、64ビットライブラリは/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です。

次に、GUIでpkconを使用するか、必要に応じてSudo dnf/yum/apt-getを使用して、パッケージをインストールして必要なライブラリを取得できます。例:pkcon install libSM.i686。必要に応じて、バージョンを完全に指定できます。例:Sudo dnf install ibSM-1.2.0-2.fc15.i686

一部のライブラリには、名前の前に「エポック」指定子があります。これは省略できます(好奇心the盛な人は以下のメモを読むことができます)。

ノート

警告

偶然にも、直面している問題は、RPM(またはDPkg/DSelect)データベースが破損しているか、実行しようとしているアプリケーションがパッケージマネージャーを介してインストールされていないことを意味します。 Linuxを初めて使用する場合は、可能な限り、パッケージマネージャー以外のソースのソフトウェアを使用しないでください。

セットアップで「Sudo」を使用しない場合

タイプ

su -c

Sudoが表示されるたびに、たとえば、

su -c dnf install glibc.i686

ライブラリ名のエポック指定子について

名前の前の「Epoch」指定子は、基礎となる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パッケージのバージョン番号が逆方向にロールバックし、更新中に新しいバージョンが「新しい」と見なされるように「エポック」を増やす必要がありました。同様のことが起こりました。


Updatedさまざまなパッケージマネージャーオプションをより完全に明確にし、カバーするために(2016年3月)

346
BRPocock

ちょうど新しくインストールされたCentOS 6.4 64ビットマシンで同じ問題に遭遇しました。単一のyumコマンドで、これに加えて同様の問題の99%が修正されます。

yum groupinstall "互換ライブラリ"

これに「Sudo」を付けるか、rootとして実行してください。

17
Phil Edwards

一般に、このようなエラーが出たときは、

yum provides ld-linux.so.2

そうすると次のようになります。

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : Fedora
Matched from:
Provides    : ld-linux.so.2

そしてBRPocockが書いたように次のように実行するだけです(ロジックが何であるか疑問に思った場合は...)。

yum install glibc.i686
13
Moe Singh

やってみる

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

これが解消されることを願っています。

3
The Bumpaster

最近のインストールfontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++。so.6

0
Nithin

BRPocockにコメントを追加したいだけでしたが、十分な特権がありません。

ですから、私の貢献は、IBMのIntegration BusバンドルからIBM Integration Toolkitをインストールしようとしている人全員のためのものでした。

/ Integration_Toolkit/IM_Linuxフォルダから "Installation Manager"コマンドを実行しようとすると(実行するファイルは "install"です)、この投稿に示されているエラーが発生します。

この問題を解決するための詳細な説明は、このIBMのWebページにあります。 https://www-304.ibm.com/support/docview.wss?uid=swg21459143

これをインストールしようとする人に役立つことを願っています。

0
mmarquezvacas

私はDebianにシステム内に少なくとも1つのコンパイラが必要であると付け加えます( Debian StretchとJessie 32ビットライブラリ による)。

Debian:jessieをベースにしたdockerコンテナで32ビットの実行ファイルを実行するためにapt-get install -y gcc-multilibをインストールしました。

0
Vitaliy

代わりにOpenJDK 32ビット(.i686)をインストールすることもできます。私のテストによると、それはインストールされ、問題なく動作します。

Sudo yum install Java-1.8.0-openjdk.i686

注意:

Java-1.8.0-openjdkパッケージには、Java Runtime Environmentのみが含まれています。 Javaプログラムを開発したい場合は、Java-1.8.0-openjdk-develパッケージをインストールしてください。

詳しくは こちら をご覧ください。

0
Mir-Ismaili