Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: установка последней версии Qt5  (Прочитано 2235 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн chadwick

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
установка последней версии Qt5
« : 07 Август 2017, 00:42:11 »
ubuntu 14.04 32-bit + openbox

некоторым приложениям (notepadqq) нужен более свежий qt, чем имеющийся в репозиториях; устанавливал следующим образом:

wget -P ~/downloads https://download.qt.io/official_releases/online_installers/qt-unified-linux-x86-online.run

chmod +x ~/downloads/qt-unified-linux-x86-online.run

cd ~/downloads

~/downloads$ ./qt-unified-linux-x86-online.run

устанавливал в домашний каталог ~/.qt5

Installation registered  successfully!
после этого создал файл /etc/ld.so.conf.d/qt5.conf и добавил следующие строчки:

# Qt5 libs configuration
/home/chadwick/.qt5/5.5/gcc/lib

проверил файл /etc/ld.so.conf на наличие строчки:

include /etc/ld.so.conf.d/*.conf
и выполнил:

sudo /sbin/ldconfig
однако при запуске notepadqq по-прежнему пишет:

Вы используете устаревшую версию Qt (5.2.1)
что я делаю не так и как заставить qt5-приложения использовать свежий qt?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7169
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: установка последней версии Qt5
« Ответ #1 : 07 Август 2017, 04:06:45 »
Как ставили notepadqq?

Оффлайн chadwick

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: установка последней версии Qt5
« Ответ #2 : 07 Август 2017, 07:17:00 »
Как ставили notepadqq?

notepadqq устанавливал из PPA (и с ним то как раз вопрос решился); он не хотел использовать свежий Qt пока я не переименовал ~/.qt5 в ~/Qt, после этого:

~$ notepadqq
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.

переустановка не помогла и я запустил его вот так:

~$ QT_DEBUG_PLUGINS=1 /usr/bin/notepadqq
QFactoryLoader::QFactoryLoader() checking directory path "/usr/lib/notepadqq/platforms" ...
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.

я скопировал ~/Qt/5.5/gcc/plugins/platforms в /usr/lib/notepadqq и после этого он уже без проблем запустился

стал проверять таким же образом другие qt5-приложения, но все они смотрели /usr/lib/i386-linux-gnu/qt5/plugins и я создал файл /usr/bin/qt.conf с таким содержимым:

~$ cat /usr/bin/qt.conf
[Paths]
Plugins=/home/chadwick/Qt/5.5/gcc/plugins

после этого все qt5-приложения написали мне о несовместимости:

In /home/chadwick/Qt/5.5/gcc/plugins/platforms/libqxcb.so:
  Plugin uses incompatible Qt library (5.5.1) [release]
"The plugin '/home/chadwick/Qt/5.5/gcc/plugins/platforms/libqxcb.so' uses incompatible Qt library. (5.5.1) [release]"
         not a plugin
QFactoryLoader::QFactoryLoader() checking directory path "/usr/bin/platforms" ...
This application failed to start because it could not find or load the Qt platform plugin "xcb".

Reinstalling the application may fix this problem.

в общем, я удалил все что было вместе с /etc/ld.so.conf.d/qt5.conf, /usr/bin/qt.conf и /usr/lib/notepadqq/platforms и скачал 5.3 в ~/Qt как того и просил notepadqq:

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

Установите более новую версию Qt (≥ 5.3) из официальных репозиториев вашего дистрибутива.

Если не доступна, загрузите Qt (≥ 5.3) из http://qt-project.org/ и установите в "/home/chadwick/Qt" или в "/opt/Qt".

и после sudo /sbin/ldconfig он сразу же стал смотреть ~/Qt/5.3/gcc/plugins

у меня только один вопрос: что конкретно ему будет нужно из ~/Qt ? потому что всё это добро весит почти гигабайт; я ведь могу оставить только ~/Qt/5.3/gcc и удалить всё остальное?

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7169
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: установка последней версии Qt5
« Ответ #3 : 07 Август 2017, 08:38:51 »
chadwick, копировать что-то в /usr/lib один из верных способов поломать систему. Лучше прописать скрипт для запуска программы, который будет подсовывать ей нужные версии библиотек, например как-то так (могу ошибаться, выдираю с мясом из большого скрипта):
Код: Bash
  1. #!/bin/sh
  2. export LD_LIBRARY_PATH="тут путь:$LD_LIBRARY_PATH"
  3. exec "тут твой бинарик" "$@"
  4.  
А вообще посмотреть чего ему не хватает (с этого и стоило начинать)
ldd "бинарик notepadqq"Он тебе покажет что прилинковано, у тех библиотек тоже стоит посмотреть что прилинковано к ним и т.д.[/code]

Оффлайн chadwick

  • Автор темы
  • Любитель
  • *
  • Сообщений: 89
    • Просмотр профиля
Re: установка последней версии Qt5
« Ответ #4 : 09 Август 2017, 01:32:56 »
peregrine, спасибо за советы, буду разбираться

прописать скрипт для запуска программы, который будет подсовывать ей нужные версии библиотек

у notepadqq оказывается есть свой скрипт, который именно это и делает (что-то я сразу не сообразил посмотреть):

#!/bin/sh
SCRIPTPATH="$(dirname "$(readlink -f "$0")")"

if [ `getconf LONG_BIT` = "64" ]
then
    GCC_DIR=gcc_64
else
    GCC_DIR=gcc
fi

OPT_QT57=/opt/Qt/5.7/$GCC_DIR/lib
OPT_QT56=/opt/Qt/5.6/$GCC_DIR/lib
OPT_QT55=/opt/Qt/5.5/$GCC_DIR/lib
OPT_QT54=/opt/Qt/5.4/$GCC_DIR/lib
OPT_QT53=/opt/Qt/5.3/$GCC_DIR/lib
PERSONAL_QT57=~/Qt/5.7/$GCC_DIR/lib
PERSONAL_QT56=~/Qt/5.6/$GCC_DIR/lib
PERSONAL_QT55=~/Qt/5.5/$GCC_DIR/lib
PERSONAL_QT54=~/Qt/5.4/$GCC_DIR/lib
PERSONAL_QT53=~/Qt/5.3/$GCC_DIR/lib

export LD_LIBRARY_PATH="$OPT_QT57:$PERSONAL_QT57:$OPT_QT56:$PERSONAL_QT56:$OPT_QT55:$PERSONAL_QT55:$OPT_QT54:$PERSONAL_QT54:$OPT_QT53:$PERSONAL_QT53:${LD_LIBRARY_PATH}"

if [ -f "$SCRIPTPATH"/../lib/notepadqq/notepadqq-bin ]; then
    # Nqq is installed: this script is in bin/
    exec "$SCRIPTPATH"/../lib/notepadqq/notepadqq-bin "$@"
elif [ -f "$SCRIPTPATH"/../lib/notepadqq-bin ]; then
    # Nqq is not installed: this script is in bin/
    exec "$SCRIPTPATH"/../lib/notepadqq-bin "$@"
else
    # Nqq is installed via deb package:
    # this script is in the same directory as the binary file.
    exec "$SCRIPTPATH"/notepadqq-bin "$@"
fi

 

Страница сгенерирована за 0.201 секунд. Запросов: 25.