Поспешный пакет с приложением QT4 не может найти sql драйвер базы данных

Я пытаюсь создать snapcraft файл для проекта с открытым исходным кодом, который использует QT4 и sqLite. Здание хорошо работало после немногих повторений, но теперь, я не могу запустить программу. Кажется, существует две проблемы:

Я фокусируюсь на последнем:

QSqlDatabase: QSQLITE driver not loaded
QSqlDatabase: available drivers: 
Cannot open DB

Я вижу что файл libqsqlite.so находится в снимке. Кажется, что путь драйвера базы данных является hardcoded к /usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers/, где-нибудь в предварительно созданных библиотеках QT, но всех файлах в снимке смонтированы к /snap/beurerscalemanager/current/, таким образом, я должен перенаправить это так или иначе. Самый очевидный должен был установить LD_LIBRARY_PATH, но библиотека все еще не была найдена. Я также нашел информацию о a /qt/etc/qt.conf, но это снова походит на полный путь, на который я не могу влиять из снимка.

Что надлежащий путь состоит в том, чтобы зафиксировать это?

Вот мой snapcraft.yaml:

name: beurerscalemanager
version: git
title: Beurer Scale Manager
summary: Beurer Scale Manager
description: |
    This project would be a Linux replacement for the Beurer HealthManager (Windows).
grade: devel
license: GPL-3.0

confinement: strict
#confinement: devmode
base: core18

apps:
  beurerscalemanager:
    command: "BeurerScaleManager"
    plugs:
    - hardware-observe
    - raw-usb
    - x11
    #- home
    #environment:
    #  "LD_LIBRARY_PATH": "$SNAP/usr/lib/x86_64-linux-gnu/qt4/plugins/sqldrivers"

parts:
  beurerscalemanager:
    plugin: cmake
    source-type: git
    source: https://github.com/Urban82/BeurerScaleManager.git
    build-packages:
      - libusb-1.0-0-dev
      - pkg-config
      - libqt4-dev
    stage-packages:
      - libusb-1.0-0
      - libqt4-sql
      - libqt4-sql-sqlite
      - libsqlite3-0
      - libqtcore4
      - libqtgui4
0
задан 14 January 2020 в 02:59

1 ответ

Я смог установить сменный путь с помощью переменной среды, найденной глубоко в документации Qt4:

    environment:
      QT_PLUGIN_PATH: "$SNAP/usr/lib/x86_64-linux-gnu/qt4/plugins/"

Не хороший трудно кодированная часть архитектуры пути. Но кажется, что это - типичная проблема на envvars в snapcraft.yaml. Я ожидал бы что-то как $SNAP_ARCH но что каждый содержит строку amd64

0
ответ дан 19 January 2020 в 09:14

Другие вопросы по тегам:

Похожие вопросы: