Jak naprawić brakujące libudev.so.0 dla Chrome, aby zacząć od nowa?

27

Próba uruchomienia Chrome daje następujący błąd w wierszu poleceń:

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

Błąd pojawił się po raz pierwszy w Ubuntu 13.04, próbowałem wyczyścić i ponownie zainstalować Chrome. Utrzymywał się po aktualizacji do Ubuntu 13.10.

k0pernikus
źródło

Odpowiedzi:

17

Jeśli Chrome nie uruchamia się po aktualizacji Ubuntu z ≤12.10 do ≥13.04, otwórz terminal i uruchom następujące polecenie:

sudo dpkg-reconfigure google-chrome-stable

Wyjaśnienia następują.


Co najmniej dla wersji Chrome od 28 do 37, plik binarny Chrome może korzystać z dowolnej libudev.so.0lub libudev.so.1znajdującej się w systemie. Dzięki poprawce do Chromium / Chrome Issue 226002 (która weszła na niestabilny kanał w kwietniu 2013 r.) Instalator określa, którego z nich użyć. Referencje binarne libudev.so.0; jeśli nie zostanie znaleziony, instalator utworzy dowiązanie symboliczne /opt/google/chrome/libudev.so.0do libudev.so.1systemu libudev.so.0.

Zauważ, że złym pomysłem byłoby utworzenie takiego w /usr/lib. Główne numery wersji w bibliotekach zmieniają się, gdy nowsza wersja jest niezgodna. Utworzenie tego dowiązania symbolicznego działa dobrze w przeglądarce Chrome, ponieważ wykorzystuje on tylko funkcje kompatybilne między wersją 0 a wersją 1. Inne aplikacje mogą ulec awarii lub wygenerować uszkodzone dane, jeśli zmusisz je do uruchomienia z niewłaściwą wersją.

Metoda zastosowana w pakiecie Chrome działa dobrze w większości przypadków, ale wciąż jest to brudny hack i ma ograniczenia. Jeśli libudev0pakiet zostanie odinstalowany po zainstalowaniu Chrome, co może się zdarzyć podczas aktualizacji Ubuntu, Chrome nadal będzie skonfigurowany do użycia, libudev.so.0ale plik nie będzie już dostępny. Aby to naprawić, uruchom skrypt instalacyjny ponownie i tym razem wykryj, że libudev.so.0nie jest dostępny, więc libudev.so.1zamiast tego powinien utworzyć dowiązanie symboliczne . Możesz ponownie uruchomić skrypt instalacyjny, uruchamiając go dpkg-reconfigure google-chrome-stablejako root.

Gilles „SO- przestań być zły”
źródło
36

Jak zauważył Gilles, takie podejście może prowadzić do niepożądanych zachowań. Najpierw wypróbuj jego rozwiązanie . Jeśli to nie działa i rozumiesz, że może to prowadzić do cichego uszkodzenia danych , możesz wykonać następujące czynności:

Zakładając, że jest to system 64-bitowy, brakujące dowiązanie symboliczne można utworzyć za pomocą:

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

W przypadku Ubuntu 18:

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

W przypadku systemu 32-bitowego:

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

Może być konieczne sprawdzenie lokalnej wersji libudev.

k0pernikus
źródło
1
Ta odpowiedź dotyczy także problemu typu „Google Chrome nie uruchamia się po aktualizacji do wersji 13.10”.
Sri
Działa to również w przypadku Dartium (rozwojowa wersja Chromium z osadzoną Dart VM). Chociaż zamiast tego utworzyłem link do linku libudev.so.1 w nadziei, że jeśli wersja się zmieni, link nadal działa, ale nie jestem tego pewien. Mogę tylko powiedzieć, że zadziałało to dla mnie. Kubuntu 14.10.
user69112
2
To zły pomysł: działa na Chrome, ale może uszkodzić inne programy, które nie pochodzą z Ubuntu - zamiast otrzymywać komunikat o błędzie, możesz uzyskać ciche uszkodzenie danych.
Gilles „SO- przestań być zły”
To działa dla mnie
Sungguk Lim