Задача:
VirtualBox: supR3HardenedMainGetTrustedMain: dlopen("/usr/lib/virtualbox/VirtualBox.so",) failed: /usr/lib/libfontconfig.so.1: undefined symbol: FT_Select_Size
Такая вот шняга при запуске вибокса. Убил на ее решение практически целый день, перерыв кучу форумов и перепробовав кучу рецептов, а также по всякому напереустанавливав как сам Виртуалбокс (третью и вторую версии, из репозитория и вручную), так и всё, что хоть как то связано с libfontconfig. В ход был даже пущен strace (хоть я и не особо умею им пользоваться).
Решение выгуглилось неожиданно и в треде, не связанном с вопросами виртуализации.
Итак, причина данной ошибки в том, что бинарник Virtualbox'a получает по запросу не ту версию библиотеки libfreetype, которую ему надобно. А так как без libfreetype.so.6 не может работать libfontconfig.so.1, то он и валит вышеозначенный error. Это удалось проследить следующим образом:
Итак, причина данной ошибки в том, что бинарник Virtualbox'a получает по запросу не ту версию библиотеки libfreetype, которую ему надобно. А так как без libfreetype.so.6 не может работать libfontconfig.so.1, то он и валит вышеозначенный error. Это удалось проследить следующим образом:
~$ ldd /usr/lib/libfontconfig.so.1
linux-gate.so.1 => (0xb7f56000)
libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0xb7ea8000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7e93000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0xb7e6c000)
libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7d25000)
/lib/ld-linux.so.2 (0xb7f57000)
Вывод ldd гласит, что необходимая для работы libfontconfig'a библиотека libfreetype.so.6 находится в /usr/local/lib/, тогда как "родная" дебиановская libfreetype (что из пакета libfreetype6) устанавливается в /usr/lib. Не знаю, откуда взялась сабжевая версия... Скорее всего, при одной из ранних компиляций какого-то иного софта. Это уже не важно. В итоге, так как
~$ ls -l /usr/local/lib/libfreetype.so.6, а
lrwxrwxrwx 1 root staff 35 Дек 24 17:23 /usr/local/lib/libfreetype.so.6 -> libfreetype.so.6.3.6
~$ ls -l /usr/lib/libfreetype.so.6, из-за такого несхождения версий ошибка и случалась.
lrwxrwxrwx 1 root root 21 Дек 24 17:07 /usr/lib/libfreetype.so.6 -> libfreetype.so.6.3.22
Таким образом, если мы проделаем следующие действия:
~$ sudo -s
~# rm /usr/local/lib/libfreetype.so /usr/local/lib/libfreetype.so.6
~# ln -s /usr/lib/libfreetype.so.6.3.22 /usr/local/lib/libfreetype.so.6
~# ln -s /usr/lib/libfreetype.so.6.3.22 /usr/local/lib/libfreetype.so
~# ldconfig
, то Virtualbox порадует нас своим окном принятия лицензии =). Конечно, можно было сделать иначе - удалить из /usr/local/lib/ все упоминания о некорректной версии libfreetype'a, и переназначить через ldconfig путь к правильной версии этой библиотеки, но я хз, как это правильно сделать ;). Главное, что цель достигнута.
Надеюсь, данная заметка пригодится товарищам по несчастью.
Спасибо! Очень вовремя нашел вашу статью.
ОтветитьУдалитьСпасибо! Помогло!
ОтветитьУдалитьYou're welcome ;)
ОтветитьУдалитьРешение описанной проблемы, а конкретно вот эта строчка
ОтветитьУдалитьln -s /usr/lib/libfreetype.so.6.3.22 /usr/local/lib/libfreetype.so.6
помогла запустить так же VLC и cedega которые прежде не запускались.
Самое интересное, что сообщения об ошибке VirtualBox и VLC выдавали разное.
Если
VirtualBox: supR3HardenedMainGetTrustedMain: dlopen("/opt/VirtualBox/VirtualBox.so",) failed: /usr/lib/libfontconfig.so.1: undefined symbol: FT_Select_Size
То
VLC media player 1.1.8 The Luggage (revision exported)
Blocked: call to unsetenv("DBUS_ACTIVATION_ADDRESS")
Blocked: call to unsetenv("DBUS_ACTIVATION_BUS_TYPE")
[0x806714c] main libvlc: Запуск vlc с интерфейсом по умолчанию. Используйте 'cvlc' для запуска vlc без интерфейса.
[0x80e2964] main interface error: option qt-volume-complete does not exist
[0x80e2964] skins2 interface error: no suitable dialogs provider found (hint: compile the qt4 plugin, and make sure it is loaded properly)
[0x80e2964] skins2 interface error: cannot instanciate qt4 dialogs provider
[0x806714c] main libvlc error: interface "default" initialization failed
И вот как интересно можно было догадаться, из сказанного, что VLC не устраивает месторасположения файла
libfreetype.so.6.3.22, ведь именно создание символьной ссылки исправило ситуацию.
Еще раз спасибо за вашу запись :)
Да, соглашусь, со стороны vlc не докопаться. С другой стороны, ругань упорно идет на интерфейс (хоть и cvlc запускается), поэтому, возможно, копая туда, пытаясь уйти от ошибок qt4 dialogs, косвенно заделось бы и это библиотечное недоразумение.
ОтветитьУдалить