web-dev-qa-db-ja.com

コマンドがほとんど機能しない-再配置エラー:シンボル__getrlimit、バージョンGLIBC_PRIVATEがlibc.so.6で定義されていない

Rootアクセス権のないマシンにSSHで接続しています。何かをインストールするには、自分のマシンからライブラリをアップロードして、リモートホストの_~/lib_ディレクトリに配置します。

これで、実行するほとんどすべてのコマンドで、以下のエラー(例はlsの場合)またはSegmentation fault (core dumped)メッセージが表示されます。

_ls: relocation error: /lib/libpthread.so.0: symbol __getrlimit, version 
GLIBC_PRIVATE not defined in file libc.so.6 with link time reference
_

私が実行に成功した唯一のコマンドは、現在までcdpwdです。 TABを使用してlsをオートコンプリートすることで、ディレクトリ内のほとんどのファイルを検索できるため、ディレクトリ間を移動できます。

_uname -r_もSegmentation fault (core dumped)メッセージを返すため、使用しているカーネルのバージョンがわかりません。

5
devil0150

ログインできるので、大きな問題はありません。おそらく、シェルの起動スクリプトによって~/libLD_LIBRARY_PATHに追加されます。これが、~/libの不正なライブラリとともに、発生している問題の原因です。

これを修正するには、

unset LD_LIBRARY_PATH

これにより、rmvimなどを実行して、問題のあるライブラリを削除し、必要に応じて起動スクリプトを編集できます。

25
Stephen Kitt

問題は、glibcのコピーを~/libディレクトリに入れており、そのライブラリが、アップロードしたシステムと互換性がないことです。 ~/lib$LD_LIBRARY_PATHで指定されているため、ライブラリは参照されています。

これを一時的に修正するには、単にunset LD_LIBRARY_PATHを使用します。これは、unsetがシェルに組み込まれているため機能します。その後、変数を最初に設定しているスタートアップファイルの内容を削除するために、お気に入りのテキストエディターを実行できます。

24
Philip Kendall