Comment réparer libudev.so.0 manquant pour que Chrome redémarre?

27

Essayer de démarrer Chrome donne l'erreur suivante sur la ligne de commande:

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

L'erreur est apparue pour la première fois dans Ubuntu 13.04, j'ai essayé de purger et de réinstaller Chrome. Il a persisté après la mise à niveau vers Ubuntu 13.10.

k0pernikus
la source

Réponses:

17

Si Chrome ne démarre pas après une mise à niveau d'Ubuntu de ≤12.10 à ≥13.04, ouvrez un terminal et exécutez la commande suivante:

sudo dpkg-reconfigure google-chrome-stable

Des explications suivent.


Au moins pour les versions Chrome de 28 à 37, le binaire Chrome peut utiliser celui libudev.so.0ou celui qui libudev.so.1est présent sur le système. Avec le correctif pour Chromium / Chrome Issue 226002 (qui est entré dans le canal instable en avril 2013), le programme d'installation détermine celui à utiliser. Les références binaires libudev.so.0; l'installateur crée un lien symbolique de /opt/google/chrome/libudev.so.0vers le libudev.so.1sur le système s'il libudev.so.0n'est pas trouvé.

Notez que ce serait une mauvaise idée d'en créer un /usr/lib. Les numéros de version principaux dans les bibliothèques changent lorsque la nouvelle version est incompatible. La création de ce lien symbolique fonctionne bien pour Chrome, car il n'utilise que des fonctionnalités compatibles entre la version 0 et la version 1. D'autres applications peuvent se bloquer ou produire des données corrompues si vous les forcez à s'exécuter avec la mauvaise version.

La méthode utilisée par le package Chrome fonctionne bien dans la plupart des circonstances, mais c'est toujours un hack sale et il a une limitation. Si le libudev0package est désinstallé après l'installation de Chrome, ce qui risque de se produire lors de la mise à niveau d'Ubuntu, Chrome sera toujours configuré pour être utilisé, libudev.so.0mais le fichier ne sera plus disponible. Pour résoudre ce problème, faites réexécuter le script d'installation et, cette fois, détectez qu'il libudev.so.0n'est pas disponible. Il doit donc créer le lien symbolique à utiliser à la libudev.so.1place. Vous pouvez réexécuter le script d'installation en exécutant en dpkg-reconfigure google-chrome-stabletant que root.

Gilles 'SO- arrête d'être méchant'
la source
36

Comme l'a souligné Gilles, cette approche peut conduire à des comportements indésirables. Veuillez d'abord essayer sa solution . Si cela ne fonctionne pas pour vous et que vous comprenez l'implication que cela peut entraîner une corruption silencieuse des données , vous pouvez effectuer les opérations suivantes:

En supposant un système 64 bits, le lien symbolique manquant peut être créé via:

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

Pour Ubuntu 18:

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

Pour un système 32 bits:

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

Vous devrez peut-être vérifier votre version locale de libudev.

k0pernikus
la source
1
Cette réponse s'applique également aux problèmes tels que "Google Chrome ne démarre pas après la mise à niveau vers 13.10".
Sri
Cela fonctionne également pour Dartium (la version de développement de Chromium avec Dart VM intégrée). Bien que j'ai créé le lien contre le lien libudev.so.1 à la place dans l'espoir que si la version change, le lien continue de fonctionner, mais je ne suis pas sûr de cela. La seule chose que je peux dire, c'est que cela a fonctionné pour moi. Kubuntu 14.10.
user69112
2
C'est une mauvaise idée: cela fonctionne pour Chrome, mais cela pourrait casser d'autres programmes qui ne proviennent pas d'Ubuntu - au lieu d'obtenir un message d'erreur, vous pourriez obtenir une corruption de données silencieuse.
Gilles 'SO- arrête d'être méchant'
Cela fonctionne pour moi
Sungguk Lim