web-dev-qa-db-ja.com

Chromeのlibudev.so.0が見つからないのを修正して再起動するにはどうすればよいですか?

chromeを開始しようとすると、コマンドラインで次のエラーが発生します。

/opt/google/chrome/chrome: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

このエラーはUbuntu 13.04で初めて発生し、Chromeを削除して再インストールしようとしました。 Ubuntu 13.10にアップグレードした後も持続しました。

27
k0pernikus

Ubuntuを≤12.10から≥13.04にアップグレードした後にChromeが起動しない場合は、ターミナルを開いて次のコマンドを実行します。

Sudo dpkg-reconfigure google-chrome-stable

説明が続きます。


少なくとも28から37までのChromeバージョンでは、Chromeバイナリは、システムに存在するlibudev.so.0またはlibudev.so.1のいずれかを使用できます。 Chromium/Chrome Issue 226002 (2013年4月に不安定なチャネルに入った)の修正により、インストーラーはどちらを使用するかを決定します。バイナリはlibudev.so.0を参照します。 /opt/google/chrome/libudev.so.0が見つからない場合、インストーラーはシステム上でlibudev.so.1からlibudev.so.0へのシンボリックリンクを作成します。

/usr/libで作成するのは悪い考えです。ライブラリのメジャーバージョン番号は、新しいバージョンに互換性がない場合に変更されます。このシンボリックリンクの作成は、バージョン0とバージョン1の間で互換性のある機能のみを使用するため、Chromeで適切に機能します。

Chromeパッケージで使用される方法は、ほとんどの状況下で適切に機能しますが、それでもダーティハックであり、制限があります。 Chromeのインストール後にlibudev0パッケージがアンインストールされる場合(Ubuntuのアップグレード時に発生する可能性が高い)、Chromeはlibudev.so.0を使用するように設定されますが、ファイルは使用できなくなります。これを修正するには、インストールスクリプトを再度実行します。今回はlibudev.so.0が利用できないことを検出するため、代わりにlibudev.so.1を使用するシンボリックリンクを作成する必要があります。 dpkg-reconfigure google-chrome-stableをルートとして実行することにより、インストールスクリプトを再実行できます。

17
Gilles

ジルが指摘したように、このアプローチは望ましくない行動につながる可能性があります。 最初の解決策 を試してください。それがうまくいかず、これがサイレントデータ破損につながる可能性があるという意味を理解している場合、次のようにすることができます:

64ビットシステムを想定すると、欠落しているシンボリックリンクは次の方法で作成できます。

Sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.3.5 /usr/lib/libudev.so.0

Ubuntu 18の場合:

Sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1.6.9 /usr/lib/libudev.so.0

32ビットシステムの場合:

Sudo ln -s /lib/i386-linux-gnu/libudev.so.1.3.5  /usr/lib/libudev.so.0

Libudevのローカルバージョンを確認する必要がある場合があります。

36
k0pernikus