動作するコマンドはほとんどありません - 再配置エラー:シンボル__getrlimit、バージョンGLIBC_PRIVATEはlibc.so.6で定義されていません。

動作するコマンドはほとんどありません - 再配置エラー:シンボル__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

これまで首尾よく実行された唯一のコマンドはcdおよびです。pwdTABオートコンプリートを使用すると、ディレクトリ内のファイルをほとんど見つけることができ、lsディレクトリ内を移動できます。

uname -rまた、メッセージを返すSegmentation fault (core dumped)ので、使用しているカーネルのバージョンがわからない。

答え1

これでログインできるので、大きな問題はありません。おそらく、シェルの起動スクリプトがここに追加され、~/libライブラリLD_LIBRARY_PATHのバグと一緒にこれが~/lib見ている問題の原因かもしれません。

この問題を解決するには、次の手順を実行します。

unset LD_LIBRARY_PATH

これにより、問題のあるライブラリを削除して起動スクリプトを編集するなどをrm実行できます(該当する場合)。vim

答え2

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

この問題を一時的に解決する方法は簡単です。内蔵シェルのように動作しますunset LD_LIBRARY_PATHunsetその後、お気に入りのテキストエディタを実行して、最初に変数を設定したスタートアップファイルのすべてのエントリを削除できます。

答え3

Linux Yocto Sumo v4.14で見つけたものは、すべてのLinuxカーネルで同じでなければなりません。

  • デフォルトライブラリの2つのバージョン、/libのデフォルトバージョン、/usr/libのユーザーディストリビューションのインストールバージョン間で交換したり、追加バージョンをリリースしたりできます。
  • これを行うには、各コマンドにLD_LIBRARY_PATH変数を設定します。または、最初からエクスポートを呼び出します。
export LD_LIBRARY_PATH=/lib
# now everything should work again since there should 
be a valid backup version of glibc in /lib

# try use a command again 
ls ./

#if this works you can overwrite the broken version of glibc in /usr/lib
cp -faL /lib/libc.so* /usr/lib/
cp -faL /lib/libc-*so* /usr/lib/

#should be optional but for the sake of completeness, as the libc package 
# installs all of the following: 
# direct dependencies and are versioned using 
# the same version number as glibc
cp -faL /lib/ld*.so* /usr/lib/
cp -faL /lib/libdl*.so* /usr/lib/
cp -faL /lib/libm*.so* /usr/lib/
cp -faL /lib/libnsl*.so* /usr/lib/
cp -faL /lib/libnss*.so* /usr/lib/
cp -faL /lib/librt*.so* /usr/lib/
cp -faL /lib/libutil*.so* /usr/lib/
cp -faL /lib/libpthread*.so* /usr/lib/
cp -faL /lib/libcrypt*.so* /usr/lib/
cp -faL /lib/libresolv*.so* /usr/lib/







これはトリックを行う必要があります!

関連情報