Linuxカーネル: 3.0.13-0.27-default #1 SMP
「dialog」ユーティリティ(/usr/bin/dialog)をインストールしました。binファイルを/usr/binにコピーしました。
実行しようとすると、libncursesw.so.5 ライブラリが見つからないというエラー メッセージが表示されました。
問題を解決するために、libncursesw.so.5ファイルを/usr/lib/にコピーしてみましたが、役に立ちませんでした。
• ここで、別のエラーが発生しました:
“error while loading shared libraries: /usr/lib/libncursesw.so.5: file too short”…
答え1
コピーしたバイナリdialog
は動的実行可能ファイルです。つまり、実行の一部として共有ライブラリに依存しています。これは次のように確認できますldd
。
$ ldd "$(type -p dialog)"
linux-vdso.so.1 (0x00007fff54fb1000)
libncursesw.so.5 => /usr/lib/libncursesw.so.5 (0x00007fbc0ecee000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007fbc0e9eb000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007fbc0e640000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbc0ef4d000)
私の場合、これらは依存するライブラリです。バージョン、コンパイル オプション、その他の要因に応じて、バイナリの要件が異なる場合があります。
依存関係の解決を行わずにバイナリを手動でコピーしたため/usr/bin
、これらの共有ライブラリがシステムに存在しない可能性が高くなります。 2 番目のエラー メッセージ「ファイルが短すぎます」は、そのライブラリに問題があることを示しています (おそらく実際に短すぎるため、ファイルではなくシンボリック リンクにする必要があります。 質問だけでは、そこに何を置いたかはわかりません)。
この方法を採用する代わりに、まずdialog
パッケージ マネージャーからインストールし、直接 にコピーするだけにしないでください/usr/bin
。そうすれば、パッケージのインストール記録が保持され、手間をかけずに更新を受け取り、パッケージ マネージャーによって依存関係が自動的にインストールされます。OpenSUSE を使用している場合は、手動でコピーしたファイル (/usr/bin/dialog
および/usr/lib/libncursesw.so.5
) を削除してから、 を実行してyum install dialog
みてください。これですべての問題が解決するはずです。