LINUX.ORG.RU

Что это за дела такие с последними версиями Qt?

 ,


0

1

Вчера обновил систему (Manjaro MATE), в числе прочих прилетели апдейты Qt:

5.15.7 -> 5.15.8
6.4.1 -> 6.4.2

И все Qt-проги поотваливались! Вчера не мог запустить Телеграм после ребута - он писал, что не может работать с Qt 6.4.2, будучи собранным с Qt 6.4.1. Я откатил Qt6 на прежнюю версию, Телега запустилась. Сейчас хотел запустить VLC - та же картина с Qt5:

Cannot mix incompatible Qt library (5.15.7) with this library (5.15.8)
Аварийный останов (стек памяти сброшен на диск)

Это что за хрень такая, как в минорном релизе может быть отломана совместимость? Что они там натворили такого?

Ничего не отвалилось, всё работает. Поставь нормальный дистрибутив и у тебя тоже так будет.

[cppmm@damned ~]$ eix -cI qt
[I] dev-libs/libdbusmenu-qt (0.9.3_pre20160218-r3@05.01.2023): Library providing Qt implementation of DBusMenu specification
[I] dev-libs/qtkeychain (0.13.2(0/1)@05.01.2023): Qt API for storing passwords securely
[I] dev-qt/qtcharts (5.15.8(5/5.15)@18.01.2023): Chart component library for the Qt6 framework
[I] dev-qt/qtconcurrent (5.15.8(5/5.15)@18.01.2023): Multi-threading concurrence support library for the Qt5 framework
[I] dev-qt/qtcore (5.15.8-r1(5/5.15.8)@18.01.2023): Cross-platform application development framework
[I] dev-qt/qtdbus (5.15.8(5/5.15)@18.01.2023): Qt5 module for inter-process communication over the D-Bus protocol
[I] dev-qt/qtdeclarative (5.15.8-r2(5/5.15)@18.01.2023): Qt Declarative (Quick 2)
[I] dev-qt/qtgraphicaleffects (5.15.8(5)@18.01.2023): Set of QML types for adding visual effects to user interfaces
[I] dev-qt/qtgui (5.15.8-r1(5/5.15.8)@18.01.2023): The GUI module and platform plugins for the Qt5 framework
[I] dev-qt/qtimageformats (5.15.8(5)@18.01.2023): Additional format plugins for the Qt image I/O system
[I] dev-qt/qtlockedfile (2.4.1_p20171024@05.01.2023): QFile extension with advisory locking functions
[I] dev-qt/qtmultimedia (5.15.8(5/5.15)@18.01.2023): Qt Multimedia
[I] dev-qt/qtnetwork (5.15.8-r1(5/5.15)@18.01.2023): Network abstraction library for the Qt5 framework
[I] dev-qt/qtopengl (5.15.8(5/5.15)@18.01.2023): OpenGL support library for the Qt5 framework (deprecated)
[I] dev-qt/qtpaths (5.15.8(5)@18.01.2023): Command line client to QStandardPaths
[I] dev-qt/qtprintsupport (5.15.8(5/5.15)@18.01.2023): Printing support library for the Qt5 framework
[I] dev-qt/qtquickcontrols (5.15.8(5)@18.01.2023): Set of Qt Quick controls to create complete user interfaces (deprecated)
[I] dev-qt/qtquickcontrols2 (5.15.8(5/5.15)@18.01.2023): Set of next generation Qt Quick controls for the Qt5 framework
[I] dev-qt/qtscript (5.15.8(5/5.15)@18.01.2023): Application scripting library for the Qt5 framework (deprecated)
[I] dev-qt/qtsensors (5.15.8(5/5.15)@18.01.2023): Hardware sensor access library for the Qt5 framework
[I] dev-qt/qtsingleapplication (2.6.1_p20171024@05.01.2023): Qt library to start applications only once per user
[I] dev-qt/qtsql (5.15.8(5/5.15.8)@18.01.2023): SQL abstraction library for the Qt5 framework
[I] dev-qt/qtsvg (5.15.8(5/5.15)@18.01.2023): SVG rendering library for the Qt6 framework
[I] dev-qt/qttest (5.15.8(5/5.15)@18.01.2023): Unit testing library for the Qt5 framework
[I] dev-qt/qttranslations (5.15.8(5)@18.01.2023): Translation files for the Qt5 framework
[I] dev-qt/qtvirtualkeyboard (5.15.8(5/5.15)@18.01.2023): Customizable input framework and virtual keyboard for Qt
[I] dev-qt/qtwayland (5.15.8(5/5.15.8)@18.01.2023): Wayland platform plugin for Qt
[I] dev-qt/qtwaylandscanner (5.15.8(5)@18.01.2023): Tool that generates certain boilerplate C++ code from Wayland protocol xml spec
[I] dev-qt/qtwebsockets (5.15.8-r1(5/5.15)@18.01.2023): Implementation of the WebSocket protocol for the Qt6 framework
[I] dev-qt/qtwidgets (5.15.8(5/5.15)@18.01.2023): Set of components for creating classic desktop-style UIs for the Qt5 framework
[I] dev-qt/qtx11extras (5.15.8(5/5.15)@18.01.2023): Linux/X11-specific support library for the Qt5 framework
[I] dev-qt/qtxml (5.15.8(5/5.15)@18.01.2023): Implementation of SAX and DOM for the Qt5 framework
[I] dev-qt/qtxmlpatterns (5.15.8(5)@18.01.2023): XPath, XQuery, XSLT, and XML Schema validation library for the Qt5 framework
[I] dev-util/lxqt-build-tools (0.12.0@05.01.2023): LXQt Build Tools
[I] kde-plasma/layer-shell-qt (5.25.5(5)@18.01.2023): Qt component to allow applications make use of Wayland wl-layer-shell protocol
[I] media-sound/pavucontrol-qt (1.0.0@05.01.2023): Qt GUI Pulseaudio Mixer
[I] sys-auth/polkit-qt (0.114.0-r3@05.01.2023): Qt wrapper around polkit-1 client libraries
shell-script ★★★★★
()

Оказывается, эта проблема далеко не нова и её причина - в пакете qt5-styleplugins, который нужен для использования Gtk-тем Qt-программами. Если у вас используется этот пакет - его нужно пересобирать после каждого обновления Qt.

Вот только с Qt6 этот способ не работает. Пришлось пока оставить прежнюю версию. Qt5-приложения после пересборки пакета заработали нормально на новой версии Qt5.

P.S. Клоунам-икспертам с их «нормальными дистрибутивами» передаю привет. Техническая ценность LOR -> 0, роль местного сообщества -> 🤡

alex1101
() автор топика
Ответ на: комментарий от alex1101

Т.е. в твоей помойке устанавливаются несовместимые пакеты. Часть из них в бинарном дистрибутиве можно вылечить компиляцией, а часть в принципе не работает. А виноват конечно ЛОР.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

Неверное значение equery size ? - то есть в твоей помойке даже размер в байтах невозможно вычислить однозначно

Ломается десктоп после запуска игр. - то есть в твоей помойке графическая сессия ломается после запуска игр

Calibre не полностью работает из flatpak - то есть в твоей помойке даже изолированные приложухи из флатпака не работают нормально

Сломал portage, прервав обновление мира. - то есть в твоей помойке подыхает пакетный менеджер из-за прерванной транзакции, которая его даже не затрагивала

И так далее. Но ты прибежал в топик пиарить свою помойку вместо того, чтобы промолчать и сойти за умного.

alex1101
() автор топика
Последнее исправление: alex1101 (всего исправлений: 1)
Ответ на: комментарий от alex1101

Что есть, то есть…

Если бы только в этом причина была.
Частенько API библиотек использует API сторонних библиотек.

Все правильно, а пиджак получается как у Райкина.

Forum0888
()
Ответ на: комментарий от alex1101

то есть в твоей помойке даже размер в байтах невозможно вычислить однозначно

Возможно, просто я не знал как. Теперь знаю, благодаря подсказке тут на ЛОРе.

то есть в твоей помойке графическая сессия ломается после запуска игр

Бага, скорее всего связанная с дровами на nvidia, которые не зависят от дистрибутива.

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

Работают. Благодаря подсказке здесь на ЛОРе стало понятно, что для флатпака нужен дополнительный пакет, который я в обход стандартных средств дистрибутива удалил.

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

Проблема была в версии и в моих руках(намудрил с USE).

Давай ещё.

И это, кстати, все проблемы за более чем 14 лет использования системы без переустановки. Причём с размером - не проблема, а попытка разобраться в механизме работы системы.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 2)

Хотел в ответ вспомнить историю о сломе совместимости между Qt 4.7 и 4.8 (программы, собранные в 4.6, кстати, с 4.7 работали прекрасно), но потом увидел, что тут поменялась даже не вторая, а третья циферка.

Тогда да, это немного другое.

hobbit ★★★★★
()

Много хороших статей о том как проверить репы на предмет неудовлетворенных ссылок.

Имеется ли tools, который мог бы такого рода проблемы выявить (а то и исправить) «нажатием одной кнопки»?

Проблемы то такие частенько возникают.

Forum0888
()
Ответ на: комментарий от Forum0888

Я не припомню такой проблемы ни в одном бинарном дистрибутиве. В source-based дистрах при обновлении библиотек выдаётся сообщение о том, что они изменились и требуется пересобрать зависящий от них софт.

shell-script ★★★★★
()
Ответ на: комментарий от alex1101

Тот факт, что его помойка горит, не делает твою чистым сквером с запахом роз.

Твой дистр должен был пересобрать пакет. Твой дистр не пересобрал пакет. Кто виноват?

t184256 ★★★★★
()
Последнее исправление: t184256 (всего исправлений: 2)
Ответ на: комментарий от shell-script

мантейнеры пропустили несовместимые между собой пакеты в дистр

Как бэ да, но тут возникает вопрос - а почему третья цифра версии ломает совместимость? Что это за борода такая?

James_Holden ★★★
()
Ответ на: комментарий от shell-script

В данном конкретном случае причина в том, что мантейнеры пропустили несовместимые между собой пакеты в дистр

Скорее всего от того, нет tools, который много упростил выявление такого рода проблем.

Forum0888
()
Ответ на: комментарий от t184256

Твой дистр должен был пересобрать пакет.

Не очевидно. Минорные версии должы обеспечивать бинарную совместимость, по идее. Но видимо у Qt идеи другие. Или что? Пока не понятно.

James_Holden ★★★
()
Ответ на: комментарий от James_Holden

А вот хз. Надо смотреть, как там оно собрано было. Я не исключаю, что в кутях могли поломать совместимость. Но даже если так, оно должно было на этапе тестирования выскочить.

shell-script ★★★★★
()
Ответ на: комментарий от shell-script

С дистром «проблема», которой нет - тут ясна. Сломавшиеся пакеты установлены из AUR, поэтому ни тестировать, ни обеспечивать автопересборку в данном случае никто не должен был.

Интересно другое - какого хрена сломана бинарная совместимость в Qt.

James_Holden ★★★
()
Ответ на: комментарий от James_Holden

Интересно другое - какого хрена сломана бинарная совместимость в Qt.

А она и не сломана. Просто скорее всего пакет Qt из AUR’а смешался с системным Qt в каких-нибудь Platform Plugins и по итогу получился такой вот эффект.

EXL ★★★★★
()
Ответ на: комментарий от James_Holden

Вот с соседнего компа, где ещё не прилетели обновления скопипастил бинарник okular. Зависимости от qt, с которыми он был собран:

journeyman ~ # equery g okular | grep dev-qt
 [  1]  dev-qt/qtdbus-5.15.7
 [  1]  dev-qt/qtgui-5.15.7
 [  1]  dev-qt/qtprintsupport-5.15.7
 [  1]  dev-qt/qtsvg-5.15.7
 [  1]  dev-qt/qtwidgets-5.15.7
 [  1]  dev-qt/qtspeech-5.15.7
 [  1]  dev-qt/qttest-5.15.7
 [  1]  dev-qt/qtcore-5.15.7
 [  1]  dev-qt/qtquickcontrols2-5.15.7
 [  1]  dev-qt/qtcore-5.15.7
 [  1]  dev-qt/qtdbus-5.15.7
 [  1]  dev-qt/qtgui-5.15.7
 [  1]  dev-qt/qtprintsupport-5.15.7
 [  1]  dev-qt/qtsvg-5.15.7
 [  1]  dev-qt/qtwidgets-5.15.7
 [  1]  dev-qt/qtspeech-5.15.7
 [  1]  dev-qt/qttest-5.15.7
 [  1]  dev-qt/qtquickcontrols2-5.15.7

Выхлоп того, что собрано у меня, я показывал выше.

А вот он запущен.

shell-script ★★★★★
()
Последнее исправление: shell-script (всего исправлений: 1)
Ответ на: комментарий от Forum0888

Скорее всего от того, нет tools, который много упростил выявление такого рода проблем.

ИМХО разработка такого tools под силу любому программисту (задача то интересная и полезная).

Forum0888
()
Ответ на: комментарий от shell-script

Если он сам поставил qt5-styleplugins из AUR, то дистр тут не причём, при всём неуважении к Manjaro. В пакетах его вроде бы нет.

Если же он был в пакетах и они не обновили его одновременно с Qt, то это действительно помойка.

nebularia ★★★
()
Ответ на: комментарий от nebularia

Если же он был в пакетах и они не обновили его одновременно с Qt, то это действительно помойка.

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

Forum0888
()
Ответ на: комментарий от Forum0888

Всё в официальные репозитории не засунешь, использование неофициальных реп чревато бурлением в системе. Так и живём с этой «гениальной» концепцией, кек.

alex1101
() автор топика
Ответ на: комментарий от alex1101

Всё в официальные репозитории не засунешь, использование неофициальных реп чревато бурлением в системе. Так и живём с этой «гениальной» концепцией, кек.

ИМХО это «бурление» вполне можно «разрулить».

Forum0888
()
Ответ на: комментарий от alex1101

Конкретно мой случай быстро разруливается, но так везёт не всегда

Безусловно!

Update должен обновляемые репы сначала поместить в какую-то директорию, проверить их
валидность, ... и лишь затем их использовать.

Forum0888
()