Linux + ダイアログ ユーティリティを実行できない + エラーが発生する

Linux + ダイアログ ユーティリティを実行できない + エラーが発生する

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みてください。これですべての問題が解決するはずです。

関連情報