私はちょうど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
をインストールする必要がある人は、おそらく他のライブラリの依存関係にも遭遇するでしょう。任意のライブラリを提供するパッケージを識別するには、次を使用できます。
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を初めて使用する場合は、可能な限り、パッケージマネージャー以外のソースのソフトウェアを使用しないでください。
タイプ
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月)
ちょうど新しくインストールされたCentOS 6.4 64ビットマシンで同じ問題に遭遇しました。単一のyumコマンドで、これに加えて同様の問題の99%が修正されます。
yum groupinstall "互換ライブラリ"
これに「Sudo」を付けるか、rootとして実行してください。
一般に、このようなエラーが出たときは、
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
やってみる
$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
これが解消されることを願っています。
最近のインストールfontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++。so.6
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
これをインストールしようとする人に役立つことを願っています。
私はDebianにシステム内に少なくとも1つのコンパイラが必要であると付け加えます( Debian StretchとJessie 32ビットライブラリ による)。
Debian:jessieをベースにしたdockerコンテナで32ビットの実行ファイルを実行するためにapt-get install -y gcc-multilib
をインストールしました。
代わりに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パッケージをインストールしてください。
詳しくは こちら をご覧ください。