Linux カーネル: 3.0.13-0.27-基本 #1 SMP
「ダイアログボックス」ユーティリティ( /usr/bin/dialog )をインストールし、binファイルを/usr/binにコピーしました。
実行しようとすると、libncursesw.so.5 libが存在しないというエラーメッセージが表示されます。
この問題を解決するために、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
。これにより、すべての問題が解決されます。