Apt-get操作はすべて失敗しました。これは、ld.soを呼び出すファイルが存在しているように見えるためです。これは、依存関係のインストールまたは更新にapt-getを使用できなくなったことを意味します!
Lubuntu 16.04を実行しています。
Nvidia CUDAで発生した自動更新により、これが発生し始めたと思います。先週から、CUDAとは関係のないコマンドを実行すると、この行が端末に表示されるようになりました。
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
これを調べてみると、ファイル/ usr/lib/nvidia-375/libnvidia-ml.soがシステムに存在せず、代わりにlibnvidia- ml.so同じパッケージの更新用と思われるフォルダー内のファイル/ usr/lib/nvidia-382。
再起動といくつかの更新を行うと、この問題はなくなると思いましたが、今日はほとんどapt-getコマンドを実行できないことに気付きました。たとえば、インストールコマンドを実行すると、上記の行が何百回も含まれる巨大なログ出力が得られ、インストールは最終的に失敗します。
これらの出力の1つをGistにコピーアンドペーストしました(この投稿に入れるには大きすぎました)。これは、Sudo apt-get install vlc
を実行しようとした結果の結果でした(ただし、どのインストールでも同様に失敗します)。 https://Gist.github.com/travellingprog/00a08cff1019f7a12d36b975dff62c92
最近はCUDAも使用していないので、これは特に面倒です。私が試したものの1つは、nvidia-382をアンインストールすることでした。アンインストール自体は機能しているようで、CUDA 9も一緒に削除されたようですが、問題は解決しません。
問題は、どのパッケージまたはファイルが/ usr/lib/nvidia-375に存在しないこのファイルを要求し続けるのかわからないということです。
誰か助けてくれますか?
2017-11-01更新
このエラーが発生したようですいつでもSudo
コマンドを実行すると。
ldd /usr/bin/Sudo
とldd /usr/bin/apt-get
を実行しようとしましたが、どちらもこのNvidiaファイルをリストしません。フォルダー/ etc/ld.so.conf.dを見て、cuda-9-0.conf、CUDAを削除する必要があるという事実にもかかわらず。そこで、名前をcuda-9-0.backupに変更し、Sudo ldconfig
を実行しました。
これで修正されませんでしたが、Sudo
コマンドごとにエラーメッセージが表示されます。
また、キャッシュを確認することにしましたが、これが問題を指しているかどうかわかりません。
# Sudo ldconfig -p | grep nvidia
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
libnvidia-gtk3.so.384.81 (libc6,x86-64) => /usr/lib/libnvidia-gtk3.so.384.81
libnvidia-gtk2.so.384.81 (libc6,x86-64) => /usr/lib/libnvidia-gtk2.so.384.81
@muruの answer と@pbhjの comment のおかげで、問題は環境変数LD_PRELOAD
が "/ usr /に設定されていることであることがわかりましたファイル/etc/environment
のlib/nvidia-375/libnvidia-ml.so」。
CUDAを最初にセットアップしたときに、かなり前に自分でそのファイルに行を追加した可能性があります。これは私が当時抱えていた問題のハックであり、Sudo
レベルでLD_PRELOADを設定する必要があったと思います。
@muruが示したように、LD_PRELOAD環境変数を存在しないファイルに設定することで、エラーメッセージを簡単に再現できます。それでも、私のシェル初期化ファイルはそれを設定せず、env | grep LD_PRELOAD
は何も返しませんでした。
ただし、(@ pbhjのコメントのおかげで)Sudo apt-get update
を実行すると、出力に大量のエラーが表示され、Sudo env -u LD_PRELOAD apt-get update
は出力の最上部に1回しか表示されないことがわかりました。 。次に、Sudo env | grep LD_PRELOAD
は、Sudo
コマンドに対して、実際に存在しないファイルに設定されていることを示したことがわかりました。
/etc/environment
は別として、この問題を抱えている人はファイル/etc/sudoers
(Sudo visudo
で編集する必要があります)およびフォルダー/etc/sudoers.d/
内のファイルも確認する必要があります。
LD_PRELOAD
環境変数をどこかに設定したようです。
$ /bin/true
$ export LD_PRELOAD=/usr/lib/nvidia-375/libnvidia-ml.so
$ /bin/true
ERROR: ld.so: object '/usr/lib/nvidia-375/libnvidia-ml.so' from LD_PRELOAD cannot be preloaded (cannot open shared object file): ignored.
シェルの初期化ファイル(~/.{bashrc,profile}
、/etc/{bash.bashrc,profile,profile.d/*}
)を確認することをお勧めします。または、次のコマンドを実行します。
PS4=' ${BASH_SOURCE}:${LINENO} ' bash -lixc exit |& grep LD_PRELOAD
試しましたか:
dpkg-reconfigure nvidia-***
これにより、必要に応じて再構成と再インストールの問題が解決する場合があります!