Центр управления GNOME не запускается из-за неопределенного символа FT_Get_Color_Glyph_Paint.

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

Если я пытаюсь запустить gnome-control-center, я получаю:

$ gnome-control-center 
gnome-control-center: ошибка поиска символа: /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37: символ не определен: FT_Get_Color_Glyph_Paint

Сложно сказать, что вызвало это. Панель управления работала ранее сегодня. Единственное, что я помню, это установка игры в префиксе Wine.

Ubuntu 22.04


Дополнительная информация: FT_Get_Color_Glyph_Paint — это вызов freetype и

$ ldd /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 | grep free
    libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007d195c9b6000)

Вот мой процесс исправления этой проблемы.

Сначала нам нужно понять ошибку.

[имя программы]: ошибка поиска символа: [общий объект].so: символ не определен: [некоторый символ]

Этот тип ошибки означает, что в процессе выполнения [имя программы] программа загрузила общий объект [общий объект]. Какой-то код внутри этого общего объекта затем попытался загрузить символ [некоторый символ] и не смог его найти. Ошибка не означает, что [имя программы] пыталась найти [некоторый символ] внутри [общий объект] и не смогла его найти.

Итак, libwebkit2gtk пытается найти какой-то символ с названием FT_Get_Color_Glyph_Paint. Некоторое гугление покажет, что это вызов freetype. Хорошо, давайте выясним, в каком .so файле libwebkit2gtk ищет freetype:

$ ldd /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 | grep free
    libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007d195c9b6000)

Эта команда покажет все .so файлы, из которых libwebkit2gtk-4.0.so.37 хочет загрузить библиотеки, а grep найдет freetype. По какой-то причине мой libwebkit2gtk хочет получить freetype из какого-то двоичного файла в /usr/local/. В качестве эксперимента давайте попробуем удалить или переименовать этот файл:

sudo mv /usr/local/lib/libfreetype.so.6 /usr/local/lib/libfreetype.so.6.backup

А теперь снова запустим ldd:

$ ldd /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 | grep freetype
    libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ce3098ee000)

Теперь он получает freetype из другого места, в /lib/, что кажется лучше. И действительно, gnome-control-center теперь работает.

Это не идеальное решение, потому что в идеале я бы хотел понять, откуда взялся двоичный файл в /usr/local и придумать лучшее решение (на самом деле, в идеале я бы предпочел, чтобы моя система не ломалась случайным образом, когда какая-то независящая программа или действие помещает библиотеку в /usr/local/, но это уже другая история…), но на данный момент это сойдет.

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

Решение проблемы с запуском GNOME Control Center из-за ошибки символа FT_Get_Color_Glyph_Paint

Если вы столкнулись с проблемой запуска gnome-control-center и получили сообщение об ошибке, выглядящее следующим образом:

gnome-control-center: symbol lookup error: /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37: undefined symbol: FT_Get_Color_Glyph_Paint

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

Понимание проблемы

Сообщение об ошибке указывает на то, что при запуске gnome-control-center была загружена библиотека libwebkit2gtk, которая затем не смогла найти определённый символ (FT_Get_Color_Glyph_Paint). Этот символ относится к библиотеке FreeType, использующейся для обработки шрифтов.

Чтобы диагностировать проблему, выполните команду:

ldd /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 | grep free

Результат этой команды указывает на то, что libwebkit2gtk пытается получить доступ к библиотеке FreeType следующим образом:

libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x00007d195c9b6000)

Это означает, что версия библиотеки FreeType, на которую ссылается libwebkit2gtk, находится в /usr/local/, и, скорее всего, эта версия нарушает совместимость.

Устранение неполадок

  1. Изменение пути к библиотеке FreeType: Первый шаг в решении проблемы – перемещение или изменение имени библиотеки в /usr/local/lib:

    sudo mv /usr/local/lib/libfreetype.so.6 /usr/local/lib/libfreetype.so.6.backup

    После выполнения этой команды проверьте, откуда теперь загружается FreeType, снова используя ldd:

    ldd /lib/x86_64-linux-gnu/libwebkit2gtk-4.0.so.37 | grep free

    Вы должны увидеть, что библиотека теперь загружается из /lib/, что является правильным расположением для системных библиотек.

  2. Проверка запуска gnome-control-center: После этих действий попробуйте снова запустить gnome-control-center:

    gnome-control-center

    Если все было выполнено правильно, приложение должно успешно запуститься.

  3. Исследование источника библиотеки в /usr/local: Например, если вы недавно устанавливали игру через Wine, возможно, она установила библиотеку в /usr/local, что вызывает конфликт. Чтобы проверить, требуется ли эта версия библиотеки, удалите или замените её, как мы сделали выше, и проанализируйте, как это повлияло на работу других приложений.

Заключение

Хотя этот обходной путь позволяет устранить проблему с запуском gnome-control-center, важно понимать, откуда пришла конфликтующая библиотека, и как предотвратить подобные ситуации в будущем. Главное, избегайте установки библиотек в /usr/local, если у вас уже есть системные версии, чтобы не допустить конфликтов между различными версиями библиотек.

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

Если у вас есть другие вопросы или требуется дополнительная помощь, не стесняйтесь обращаться за советом к сообществу или к специалистам в области ИТ.

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

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