LINUX.ORG.RU

Как сделать установщик приложения??

 , ,


0

1

Сделал приложение. С++ Qt MySQL. Сервер sql у меня на компе работает Автономно без инета.

Как сделать установщик, чтобы на другом компе работало? Делал по инструкциям из интернета, но приложение вылетало. Думаю из-за жестко прописанного пути к БД. Что делать?


Думаю из-за жестко прописанного пути к БД.

вынести связь с БД в настройки приложения и по умолчанию ничего там не прописывать

Как сделать установщик приложения??

Упакуй в deb/rpm, ебилды напиши ну и для других дистрибутивов по аналогии. Ах да, еще на flathub и snap выложи и автономный appimage собери.

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

если чотко соответствовать нечотким задумкам %тс%, то ему надо упаковаться в самоисполняющийся скрипт под линукс

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

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

мы тут не про разумность говариваем есличё :)
а вообще судя по замыслу это просто «навентиляторное» :) так что можно развлекаться.
вообще еще надо все проверить.
так как даж размер строки запуска емнип за сотни мегабайт…

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

тут вопрос почему нельзя просто в виде .tar.gz с сошками собранную прогу предоставить, либо .AppImage или .flatpak… нужен обязательно установщик как в винде, чтобы окошечко с рюшечками выводилось и шла полоска установки — это как-то странно

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

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

Встречал такое под linux, vmware и yed как минимум идут со своим установщиком «аля винда», что-то еще было но уже не помню.

А ну и репаки игр с rutracker виде огромного sh файла с графическим установщиком есть.

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

автономный appimage

Applications/fbreader_new/FBReader_Book_Reader-x86_64-2.1.1.AppImage 
fuse: failed to exec fusermount: Permission denied

Cannot mount AppImage, please check your FUSE setup.
You might still be able to extract the contents of this AppImage 
if you run it with the --appimage-extract option. 
See https://github.com/AppImage/AppImageKit/wiki/FUSE 
for more information
open dir error: No such file or directory

Автономный appimage такой автономный.

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

Нет, никто ничего никому не должен. Но по факту получается, что автономность AppImage — это фикция. А раз так, то перед Flatpak или, прости г-ди, Snap преимуществ у него никаких не остаётся (а недостатков вагон).

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

Но по факту получается, что автономность AppImage — это фикция

С какого перепугу? Написано же: если нет fuse, сделай --appimage-extract и пользуйся распакованным каталогом.

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

Какую именно версию fuse он должен? И какие именно permissions были denied? И почему open dir error? Я без претензии, мне интересно.

I] sys-fs/fuse
     Доступные версии:      
     (0)    2.9.9-r2
     (3)    3.16.2^t
       {examples static-libs +suid test ABI_MIPS="n32 n64 o32" ABI_S390="32 64" ABI_X86="32 64 x32"}
     Установленные версии:  2.9.9-r2(10:51:10 23.09.2023)(-examples -static-libs) 3.16.2(3)^t(19:14:13 14.10.2023)(suid -test ABI_MIPS="-n32 -n64 -o32" ABI_S390="-32 -64" ABI_X86="64 -32 -x32")
     Домашняя страница:     https://github.com/libfuse/libfuse
     Описание:              An interface for filesystems implemented in userspace

LongLiveUbuntu ★★★★★
()
Последнее исправление: LongLiveUbuntu (всего исправлений: 1)

Как это ни смешно, ответ прямо во втором комментарии. Если у ТСа

Сервер sql у меня на компе работает Автономно без инета.

Надо действительно перенести БД на SQLite, клиентская часть в случае Qt переносится достаточно просто – и после этого опакечивать программу обычными для линукса способами. Ну а какие способы в 2024 году считать обычными, уже холивар выше устроили. Хотя на самом деле это зависит от ситуации ТСа.

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

раз так, то перед Flatpak или, прости г-ди, Snap преимуществ у него никаких не остаётся (а недостатков вагон).

appimage всеравно остается готовым для запуска бинарником для которого не надо в систему дополнительно ставить flatpak/snap и выкладывать в публичные репозитории. Скачал с сайта - запустил. То что изоляция у appimage хромает - это да, но может допилят.

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

У меня всё аналогично, и куча AppImage’й запускается

$ eix -e sys-fs/fuse
[I] sys-fs/fuse
     Available versions:  
     (0)    2.9.9-r2
     (3)    3.16.2^t
       {examples static-libs +suid test ABI_MIPS="n32 n64 o32" ABI_S390="32 64" ABI_X86="32 64 x32"}
     Installed versions:  2.9.9-r2(22:31:57 31.05.2024)(-examples -static-libs) 3.16.2(3)^t(16:52:05 31.05.2024)(suid -test ABI_MIPS="-n32 -n64 -o32" ABI_S390="-32 -64" ABI_X86="64 -32 -x32")
     Homepage:            https://github.com/libfuse/libfuse
     Description:         An interface for filesystems implemented in userspace

fusermount при этом от слота (0):

$ equery b `which fusermount`
 * Searching for /usr/bin/fusermount ... 
sys-fs/fuse-2.9.9-r2 (/usr/bin/fusermount)

Из интереса решил попробовать запустить твой бинарник. Вроде бы вот это оно? Результат получился такой же: fuse: failed to exec fusermount: Permission denied

Однако --appimage-extract отработал без вопросов. Создаётся каталог squashfs-root, в котором надо запускать AppRun.

Решил разобраться, почему Permission denied. Вот что говорит strace:

...
open("/usr/bin/fusermount3", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied)
access(NULL, X_OK)                      = -1 EFAULT (Bad address)
open("/usr/bin/fusermount", O_RDONLY|O_LARGEFILE) = -1 EACCES (Permission denied)
access(NULL, X_OK)                      = -1 EFAULT (Bad address)
...

Т.е. он пробует и новую версию, и старую, но никакую не может открыть. А разгадка проста:

-rws--x--x 1 root root 39648 мая 31 22:31 /usr/bin/fusermount
-rws--x--x 1 root root 39656 мая 31 16:52 /usr/bin/fusermount3

Обе запрещены на чтение не от рута. Это, по-видимому, какая-то гентушная фишка ставить бинарники с правами --x, я на такое уже нарывался со сломанным find_program() в cmake, пытающимся делать то же самое. Но AppImage тоже не прав, надо было stat использовать.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 2)
Ответ на: комментарий от LongLiveUbuntu

Соответственно, если сделать

chmod a+r /usr/bin/fusermount3

то AppImage начинает работать правильно и без распаковки

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

или пакет или tar.gz с инструкцией

установщики бесят!)

Я делал установщик на баше, который распаковывал tar.gz, лежащий блобом в этом же скрипте. Установщик был нужен, чтобы создавать «ярлыки» в пользовательских директориях. Ну и чтобы не грузить синтаксисом тара админов\пользователей клиентов, чтобы они могли просто sh install.sh запустить, а все детали установки уже внутри мной написаны.

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

Похоже наш виновник находится здесь: https://github.com/AppImage/type2-runtime/blob/01164bfcbc8dd2bd0d7e3706f97035108d6b91ba/patches/libfuse/mount.c.diff#L20-L27

Я так понимаю, они с этим патчем собирают libfuse, который линкуется в сами appimage’и. Паттерн сисколлов как раз как в strace: сначала open(), потом access(), и перебираем до успеха.

annulen ★★★★★
()