Arch, Ubuntu: Так в чём же дело с libudev.so.0?

Вопрос или проблема

Меня интересует создание настольных приложений Linux с использованием технологий веб-фронтенда. Обе платформы, которые я пробовал — Chromium Embedded Framework/CEFPython и Awesomium, похоже, зависят от libudev.so.0 и терпят неудачу самым неприятным образом, когда не могут его найти.

libudev.so.0, однако, похоже, не предоставляется никаким пакетом в последних версиях Ubuntu, и этот пакет AUR только реализует распространенный, но вызывающий споры фикс с установкой символьной ссылки на libudev.so.1. С другой стороны, браузер Chromium, на недавней версии которого основаны как CEF, так и Awesomium, работает без этой зависимости.

Кто-нибудь знает, в чем дело с этой библиотекой? И как я могу правильно обеспечить надежную работу на различных Linux-дистрибутивах для программного обеспечения, полагающегося на встроение Chromium?

По сути, udev стал частью всей революции systemd и стал частью более сложной системы. Различные изменения увеличили интерфейс и потребовали перехода с .so.0 на .so.1.

Вместо поддержки и старого интерфейса, и нового путем предоставления как .so.0, так и .so.1, разработчики решили сказать “мы заставим всех обновить свои зависимости!” и они убрали .so.0 из бинарного пакета.

Возможно, собрать более старую версию libudev, которая все еще предоставляет .so.0, если это необходимо.

Также возможно, что это изменение настолько новое, что большинство мэйнтейнеров пакетов еще не заметили эту проблему, чтобы явно указать “этот пакет требует libudev до версии xyz“, и большинство разработчиков не переключили свои бинарные файлы на потребление последней версии libudev.

И третья возможность заключается в том, что некоторые ключевые разработчики действительно установили символьную ссылку .so.0 на .so.1.

По сути, та же каша из возможностей, которая возникает, когда любой ключевой компонент вносит значительное изменение в интерфейс.

Источник: Wikipedia на udev

И: Program Library HOWTO

Существует проблема в трекере Chromium об удалении зависимости времени выполнения от libudev.so.0. Она включает в себя некоторую полезную информацию, см. эту ссылку.

Установщик Google Chrome создает символьную ссылку, когда это необходимо, см. эту ссылку.

Ответ или решение

Проблема с libudev.so.0 на Linux-дистрибутивах: Arch и Ubuntu

Сталкиваясь с разработкой Linux-десктоп-приложений с веб-фронтэндом, многие разработчики находят, что такие платформы, как Chromium Embedded Framework/CEFPython, а также Awesomium, требуют наличия библиотеки libudev.so.0. Однако современные версии Ubuntu и Arch Linux, как правило, не предоставляют этой версии библиотеки. Вместо этого, пользователи обычно находят только libudev.so.1.

История изменения

Ранее udev был преобразован в рамках инклюзивного изменения в systemd. Данный переход повлёк за собой обновление интерфейса библиотеки и смену её версии с .so.0 на .so.1. Разработчики приняли решение не поддерживать обе версии одновременно, что зачастую требует от пользователей или разработчиков обновлять зависимости своих приложений.

Решение проблемы

  1. Симлинк: Наиболее распространённое временное решение — создать символическую ссылку (symlink), связывающую libudev.so.0 с libudev.so.1. Это может решить проблему зависимости без изменения кода. Хотя метод считается "грязным", многие разработчики используют его на практике, чтобы быстро устранить проблему несовместимости. В самом деле, даже Google Chrome создаёт такой симлинк, если требуется.

  2. Сборка библиотеки libudev старой версии: Те, кто предпочитает более постоянное решение, могут собрать старую версию libudev, которая предоставляет необходимую so.0 версию. Это требует дополнительных усилий, так как необходимо найти исходники старой версии и создать подходящую сборку.

  3. Следить за обновлениями Chromium: В трекере Chromium ведётся обсуждение о том, как убрать зависимость от libudev.so.0. Рекомендуется следить за обновлениями, так как это может привести к освобождению от этой зависимости в будущих версиях.

  4. Обновить зависимости: Также важно актуализировать свои проектные зависимости и проверять состояние проблемы для ваших библиотек, возможно, они уже устранили использование устаревшей версии библиотеки.

Заключение

Проблема libudev.so.0 — это классическая ситуация, возникающая при крупных изменениях в базовых компонентах систем, когда обновление библиотек или кардинальные изменения архитектуры приводят к несовместимостям. Краткосрочное решение — использовать симлинки, а долгосрочное — следить за обновлениями и модифицировать свои зависимости в соответствии с современными стандартами. Это позволит обеспечить стабильную работу приложений на различных Linux-дистрибутивах.

Для детальной информации, обратите внимание на упомянутые в обсуждении ссылки и следите за соответствующими ветками в трекерах.

Оцените материал
Добавить комментарий

Капча загружается...