ЕС
Мамыр 25, 2020, 12:50 Т.Қ.

Отсутствие драйвера SQLite в пакете Qt 4 на Linux

Qt, Linux, SQLite

Дорого времени суток, работаю на Astra-linux, возникла необходимость в SQLite, драйвер которой ,вроде как, стандартный при установке Qt. Мною были установлены пакеты qt4-default и qtcreator, и в итоге драйвера там не оказалось, но вместе с этими двумя пакетами подтянулся и пакет qt5-default в котором есть данный драйвер. Узнал при помощи QLibraryInfo что qt ищет плагины по следующему пути: usr/lib/x86_64_linux_gnu/qt4/plugins, после этого пытался закинуть туда драйвер из пакета qt5, но безуспешно, qtcreator не видит этот драйвер. Сам qt5 в котором уже есть необходимый драйвер использовать не могу в силу требований. Кто нибудь сталкивался с такой проблемой? Или может кто знает пути решения?. Что я уже перепробовал: закинуть драйвер который лежит в qt5/plugins/sqldrivers/ во все возможные другие папки (например - в корень проекта или usr/lib и т. д.), изменить путь где происходит поиск плагинов использую команды как setLibraryPath и addLibraryPath.

5

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

15
Evgenii Legotckoi
  • Мамыр 25, 2020, 12:58 Т.Қ.

Добрый день.
Ищите, где скачать Qt 4 отдельно.
Из репозитория никто Qt не устанавливает, постоянно какие-то проблемы вылазят вроде ваших.

    Андрей Янкович
    • Мамыр 25, 2020, 1:01 Т.Қ.
    • (өңделген)

    Решение 1 самое правельно.
    Избавится от Astra-linux (она не безопасна и не допилина).

    Решение 2
    https://github.com/qt/qt
    Клоним и билдим с нужными плагинами.
    ./configure -prefix ~/myNewQt4 -opensource -confirm-license -release -nomake examples -nomake tests -ccache -plugin-sql-sqlite
    make -j$nproc

    make install

    Опции я взял из qt5 так как сам ни разу не билдил 4 й qt. Если они не подойдут поищите на форумах опции для qt4.
    Вот тут

      ЕС
      • Мамыр 25, 2020, 1:20 Т.Қ.

      Спасибо за ответы, буду пробовать. А от Astra-linux я бы с удовольствием избавился, но нельзя.

        Андрей Янкович
        • Мамыр 25, 2020, 1:28 Т.Қ.
        • (өңделген)

        @Evgenij Sal'nikov как я тебя понимаю.

          o
          • Мамыр 25, 2020, 1:39 Т.Қ.

          расскажите об этом нашим силовикам, они вот не в курсе и с интересом выслушают ваше экспертное мнение.

            o
            • Мамыр 25, 2020, 1:41 Т.Қ.

            почему вы используете решение на qt4.x, если в астре 1.6 доступна версия 5.11?

              Андрей Янкович
              • Мамыр 25, 2020, 1:42 Т.Қ.

              Уже, их не интересует что под капотом.

                o
                • Мамыр 25, 2020, 1:46 Т.Қ.
                • (өңделген)

                тут есть огромная кнопка "сообщить об уязвимости", не плохо бы ей воспользоваться. тык

                  ЕС
                  • Мамыр 25, 2020, 1:46 Т.Қ.

                  Да мне тоже интересно почему, но сказано qt4, стабильность, и тонна кода написана уже, не один год 4-ый qt используется. Да и астру 1.6 я буквально позавчера поставил. У большинста персонала до сих пор 1.4-1.5

                    o
                    • Мамыр 25, 2020, 1:57 Т.Қ.

                    там 5.3 как минимум, но раз уж так, качать отсюда сорцы, а не с гитхаба, и собирать руками.

                      Андрей Янкович
                      • Мамыр 25, 2020, 2:17 Т.Қ.
                      • (өңделген)

                      а клинится ты как будешь ?
                      на гихабе прямое зерколо, гараздо удобнее.

                      1. git clone https://github.com/qt/qt
                      2. cd qt
                      3. git checkout v4.8.7
                      4. git submodule update --init --recursive
                      5. ./configure -prefix ~/myNewQt4 -opensource -confirm-license -release -nomake examples -nomake tests -ccache -plugin-sql-sqlite
                      6. make -j$nproc
                      7. make install

                      в случае неуспеха выполнения configure выполнять git clean -xdf; git submodule foreach git clean -xdf

                        o
                        • Мамыр 25, 2020, 2:25 Т.Қ.

                        Потому что ее не надо в систему ставить, т.к. пользователи не будут тянуть что-то с гитхаба и устанавливать. Эту библиотеку придется поставлять вместе с прогой. Соответсвенно, эту библиотеку надо билдить и работать с ней как с собственной библиотекой.

                          Андрей Янкович
                          • Мамыр 25, 2020, 2:31 Т.Қ.
                          • (өңделген)

                          make install

                          установит qt в ~/myNewQt4 так как там префикс стоит в конфигуре

                          затем делаем так

                          1. ~/myNewQt4/bin/qmake myProject.pro

                          после этого выполняем

                          1. cqtdeployer -bin myBildetApp -qmake ~/myNewQt4/bin/qmake

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

                          1. cqtdeployer -bin myBildetApp -qmake ~/myNewQt4/bin/qmake -deploySystem

                          если нужна еще инсталяшка

                          1. cqtdeployer -bin myBildetApp -qmake ~/myNewQt4/bin/qmake -deploySystem qif

                          если проект из кучи библиотек

                          1. cqtdeployer -bin myBildetApp -qmake ~/myNewQt4/bin/qmake -deploySystem qif -libDir ~/myprojectSourceDir -recursiveDepth 5

                          Внимание cqtdeployer работает только под астрой 1.6

                            ЕС
                            • Мамыр 25, 2020, 7:27 Т.Қ.

                            Итак эта эпопея наконец подошла к концу после двух дней возьни. После того как вы мне подсказали возможные пути решения я пытался их применить, качая сорсы как с git так и с архива сайта qt, собирай их по разному. То у меня после использования make -j$nproc зависало все напроч и вылетало, то ./configure выдавал ошибки bash, то make install выдавал подобные ошибки :ошибка выполнения рецепта для цели obj/release/pcre_exec.o, вообщем крутил я все это как мог. Параллельно ища на просторах интренета, то что я еще не попробовал и наткнулся на следующую тему где написано что если поискать в неком synaptic по тегу qt sqlite то можно узнать о существовании пакета libqt4-sql-sqlite. Так как я пользуюсь linux-образными системами совсем немного, что такое synaptic Я не знаю, поэтому первое что я сделал это написал sudo apt install synaptic в консоле, на что получил ответ что synaptic уже установлен. Следом я загуглил что такое synaptic, и потом следуя аналогии apt написал sudo synaptic install libqt4-sql-sqlite, на что мне открылся менеджер пакетов synaptic. В нем в разределе "Средства разработки" я стал искать данный пакет(libqt4-sql-sqlite), но не нашел, зато нашел пакеты связанные с самим qt и увидел что для qt5 установлен пакет qt5-dev-tools а для qt4 такой пакет не установлен, заподозрив не ладное я стал его устанавливать и первой же строчной увидел, что сейчас будет установлен пакет libqt4-sql-sqlite, ну все думаю дело сделано. Все установилось полез проверять в usr/lib/x86_64_linux_gnu/qt4/plugins и там действительно появилась папка sqldrivers а в ней нужная мне либа. И вот запустив qtcreator и готовый наконец продолжить проект я получил по лицу и снова тот же ворох ошибок, что драйвера нету - база данных не открыта. Посидев минут 10, пересобрав проект пару раз и сделав пару перезагрузок, вспомнил о том что когда мне нужно работать с raw сокетами astra вынуждает меня запускать qtcreator через sudo и в этом случае открывается фантомный qtcreator который нужно настраивать отдельно и который создает для проектов свои файлы с настройками, и вот только после запуска через sudo очистив проект и перезапустив qmake, все наконецто заработало как надо.

                              BlinCT
                              • Мамыр 26, 2020, 4:16 Т.Қ.

                              Вот честно непонимаю почему до сих пор используют qt4, там же столько всего отсутствует, много фишек и возможностей нету там. То есть используя такое старье приходится много писать самому а не использовать готовое и провереное из 5 версии.
                              Если бы мне сказали что надо использовать на работе 4 версию не мотивировав такое решение что на такой работе будет много проблем и проще уйти от туда.

                                Пікірлер

                                Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                                Кіріңіз немесе Тіркеліңіз