Ars Longa, Vita Brevis

Окт 1, 2008

Cannot mix incompatible Qt libraries

Рубрика: Linux
Метки: , , , , , ,
Vladimir

В последнее время на разных Ubuntu Intrepid Ibex я стал довольно часто сталкиваться с ошибкой

[-]
View Code (Unknown Language)
Cannot mix incompatible Qt libraries

Очень сильно этим грешит Skype. Но в последнее время такая проблема стала возникать для приложений KDE4.

Данная ошибка, как правило, вызывается одной из следующих причин:

  1. В системе установлены библиотеки Qt разных версий. Проверяется это очень просто:
    [-]
    View Code Bash
     dpkg -l | grep qt | grep -r "^[ih]"

    Если в выдаче присутствуют библиотеки разных версий (третья колонка), значит, именно это вызвало проблему. Удаление старых библиотек, как правило, решает проблему.

    В этом случае, например, конфликта нет:

    [-]
    View Code (Unknown Language)
    ii  libqt4-dbus                                 4.4.2-0ubuntu2                        Qt 4 D-Bus module
    ii  libqt4-designer                             4.4.2-0ubuntu2                        Qt 4 designer module
    ii  libqt4-network                              4.4.2-0ubuntu2                        Qt 4 network module
    ii  libqt4-opengl                               4.4.2-0ubuntu2                        Qt 4 OpenGL module
    ii  libqt4-qt3support                           4.4.2-0ubuntu2                        Qt 3 compatibility library for Qt 4
    ii  libqt4-script                               4.4.2-0ubuntu2                        Qt 4 script module
    ii  libqt4-sql                                  4.4.2-0ubuntu2                        Qt 4 SQL module
    ii  libqt4-svg                                  4.4.2-0ubuntu2                        Qt 4 SVG module
    ii  libqt4-xml                                  4.4.2-0ubuntu2                        Qt 4 XML module
    ii  libqtcore4                                  4.4.2-0ubuntu2                        Qt 4 core module
    ii  libqtgui4                                   4.4.2-0ubuntu2                        Qt 4 GUI module
    ii  libstrigiqtdbusclient0                      0.5.11-1                              library for writing D-Bus clients for Strigi Desktop Se
    ii  qt4-qtconfig                                4.4.2-0ubuntu2                        Qt 4 configuration tool
    Тем не менее, если ошибка всё еще выдаётся, переходим к пункту 2.
  2. Если используется 64-битная платформа, проблема может возникать из-за того, что загрузчик пытается использовать 32-битные библиотеки. Определить это можно при помощи ldd.

    Например,

    [-]
    View Code Bash
    ldd /usr/bin/ktorrent | grep '/lib32/'
    #   libQtDBus.so.4 => /lib32/libQtDBus.so.4 (0x00007f191cce7000)

    В данном случае при загрузке libQtDBus загрузчик будет загружать её 32-битную версию (из /lib32) вместо 64-битной (из /lib).

    Я использую следующее решение (оно не идеальное, но работает):

    [-]
    View Code Bash
    sudo -i
    echo /lib32 > /etc/ld.so.conf.d/libQtDBus32.conf
    echo /usr/lib > /etc/ld.so.conf.d/libQtDBus64.conf
    ldconfig
  3. Наконец, если подобная проблема возникает при использовании Skype на 64-битной платформе, то проще всего скачать static version. Очень сильно экономит нервы :-)

Не любят разработчики Ubuntu Skype… совсем не любят. Только-только нашлось решение после безумного обновления ia32-libs, как через несколько дней возникла новая проблема: Skype (да и не только Skype) стал падать с сообщением об ошибке:

[-]
View Code (Unknown Language)
ALSA lib ../../src/conf.c:2700:(snd_config_hooks_call) Cannot open shared library /usr/lib/alsa-lib/libasound_module_conf_pulse.so
ALSA lib ../../../src/control/control.c:909:(snd_ctl_open_noupdate) Invalid CTL hw:0

Читать статью «Возвращаем Skype к жизни в Ubuntu Intrepid Ibex на 64-битной платформе» полностью…

Дёшево и сердито:

[-]
View Code Bash
dpkg -l | grep -r "^rc" | awk '{ print $2; }' | xargs aptitude -y purge

И не забываем про резервные копии :-)

PS — если бы это было так просто в Windows…

Сен 23, 2008

Eclipse Ganymede: Cannot connect to keystore

Рубрика: Linux
Метки: , , , ,
Vladimir

Если при установке C/C++ Development Tools (CDT), PHP Development Tools (PDT) или любого другого пакета возникает ошибка:

An error occurred during provisioning
Cannot connect to keystore

Это означает, что выбрана не та версия виртуальной машины Java. Читать статью «Eclipse Ganymede: Cannot connect to keystore» полностью…

Те, кто используют Skype на Ubuntu 8.10 (Intrepid Ibex) на 64-битном процессоре, наверняка заметили, что после очередного обновления системы Skype перестал работать, выдавая при старте ошибку:

[-]
View Code (Unknown Language)
skype: error while loading shared libraries: libQtDBus.so.4: cannot open shared object file: No such file or directory

Читать статью «Skype и Ubuntu 8.10 Intrepid Ibex на AMD-64» полностью…