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
_
私が実行に成功した唯一のコマンドは、現在までcd
とpwd
です。 TABを使用してls
をオートコンプリートすることで、ディレクトリ内のほとんどのファイルを検索できるため、ディレクトリ間を移動できます。
_uname -r
_もSegmentation fault (core dumped)
メッセージを返すため、使用しているカーネルのバージョンがわかりません。
ログインできるので、大きな問題はありません。おそらく、シェルの起動スクリプトによって~/lib
がLD_LIBRARY_PATH
に追加されます。これが、~/lib
の不正なライブラリとともに、発生している問題の原因です。
これを修正するには、
unset LD_LIBRARY_PATH
これにより、rm
、vim
などを実行して、問題のあるライブラリを削除し、必要に応じて起動スクリプトを編集できます。
問題は、glibc
のコピーを~/lib
ディレクトリに入れており、そのライブラリが、アップロードしたシステムと互換性がないことです。 ~/lib
が$LD_LIBRARY_PATH
で指定されているため、ライブラリは参照されています。
これを一時的に修正するには、単にunset LD_LIBRARY_PATH
を使用します。これは、unset
がシェルに組み込まれているため機能します。その後、変数を最初に設定しているスタートアップファイルの内容を削除するために、お気に入りのテキストエディターを実行できます。