Попытка запустить 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.
Если Chrome не запускается после обновления Ubuntu с ≤12.10 до ≥13.04, откройте терминал и выполните следующую команду:
sudo dpkg-reconfigure google-chrome-stable
Пояснения следуют.
По крайней мере для версий Chrome от 28 до 37 двоичный файл Chrome может использовать любой из libudev.so.0
или libudev.so.1
, присутствующий в системе. С исправлением Chromium / Chrome Issue 226002 (которое вошло в нестабильный канал в апреле 2013 года), установщик определяет, какой из них использовать. Бинарные ссылки libudev.so.0
; установщик создает символическую ссылку из /opt/google/chrome/libudev.so.0
в libudev.so.1
в системе, если libudev.so.0
не найден.
Заметьте, что было бы неплохо создавать его в /usr/lib
. Основные номера версий в библиотеках изменяются, когда более новая версия несовместима. Создание этой символической ссылки хорошо работает для Chrome, поскольку в ней используются только функции, совместимые между версией 0 и версией 1. Другие приложения могут аварийно завершить работу или вывести поврежденные данные, если вы заставите их работать с неверной версией.
Метод, используемый пакетом Chrome, хорошо работает в большинстве случаев, но он все еще грязный хак и имеет ограничение. Если пакет libudev0
будет удален после установки Chrome, что может произойти при обновлении Ubuntu, тогда Chrome все равно будет настроен на использование libudev.so.0
, но файл больше не будет доступен. Чтобы это исправить, снова запустите сценарий установки и на этот раз определите, что libudev.so.0
недоступен, поэтому он должен создать символическую ссылку, чтобы использовать вместо него libudev.so.1
. Вы можете повторно запустить скрипт установки, запустив dpkg-reconfigure google-chrome-stable
от имени пользователя root.
Как отметил Жиль, такой подход может привести к нежелательному поведению. Пожалуйста, попробуйте сначала его решение . Если это не работает для вас, и вы понимаете, что это может привести к повреждению данных без вывода сообщений , вы можете сделать следующее:
Предполагая, что в 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.