LINUX.ORG.RU

Самый быстрый способ собрать самодостаточное приложение в linux

 


0

2

Есть самописное (не мной) приложение (к тому-же графическое), которое работает только на древней версии fedora (под которую и писалось), в виде набора собранных бинарников. Необходимо упаковать его вместе с зависимостями в некий архив, который будет запускаться под любым более свежим дистрибутивом (подходящей архитектуры естественно).

Что проще всего использовать для этих целей чтобы продемонстрировать proof of concept?

Сейчас копаюсь в flatpak, но по моему это оверинженеринг и достаточно просто как-то хитро вытащить приложение со всеми зависимостями из привычной ему среды и написать скрипт запуска, который будет подсовывать ему правильные пути для библиотек, но как? Есть ли для этого готовые инструменты?

★★★★★

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

Сейчас копаюсь в flatpak, но помоему это оверинженеринг и достаточно просто как-то хитро вытащить приложение со всеми зависимостями из привычной ему среды и написать скрипт запуска, который будет подсовывать ему правильные пути для библиотек, но как? Есть ли для этого готовые инструменты?

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

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

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

А snap разве не из одного централизованного репозитория пакеты ставит? Или там есть лазейка для локальных сборок?

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

А, еще можно докер использовать! =)

Не - это уже перебор. Во первых приложуха требует X11 и OpenGL для работы, но вторых объяснять как ставить docker и решать еще с ним проблемы - ну такое...

Kolins ★★★★★
() автор топика

По идее appimage самый простой.

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

Спасибо. Что-то собрать удалось. Оно конечно не работает, но запускается. Буду копать дальше в этом направлении.

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

А snap разве не из одного централизованного репозитория пакеты ставит? Или там есть лазейка для локальных сборок?

Вполне можно чем-то типа DUMP плагином просто натолкать локальных либ руками, но понятно, что тебе надо будет всё раскидат

https://snapcraft.io/blog/the-smart-dump-plugin

Но вообще, я бы не советовал.

Appimage проще будет.

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

вероятность того, что все развалится на машине клиента возрастает прям до очень больших цифр

Если использовать appimage - тоже.

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

Если использовать flatpak я так и не нашел где найти сопоставления версии palform/sdk с версиями fedora. Самый ранний который доступен - 18.08, а мне надо на 17 год, и что тогда? Самому собирать платформу?

Я уже думаю, можно ли fedora в chroot упаковать и туда проброс X сделать...вроде такое возможно

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

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

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

К сожалению в ынтерпрайзе иногда бывает иначе. Продали заказчику бинарники 10 лет назад (условно) и без доп. контрактов не могут давать новые ни под каким предлогом, а у заказчика внезапно обновились клиентские ПК надо на них запустить те старые бинарники...а договор на поддержку есть, но по нему не предусмотренны новые бинарники...я уже сам пожалел что со всем этим связался

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

Snap можно поставить локально. Сборка обычно очень простая, но осуществлять её проще всего на Ubuntu.

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

Завтра попробую глянуть, сегодня у меня уже в глазах рябит от flatpak (до обеда) и appimage (после обеда)

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

Честно говоря, они все говно. Snap имеет ряд спорных технических решений, но в целом ориентирован на проблемы реального мира и даже неплохо их решает. Flatpak, если закрыть глаза на оверинжиниринг (Flatpak внутри Flatpak — как тебе такоэ, Илон Маск?), выглядит неплохо, но моя первая попытка собрать пример(!) закончилась какой-то дикой ошибкой, из которой даже не было понятно, где проблема — на хосте или в изолированном окружении. Так что выбрал Snap, но потом и его забросил.

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

Я уже думаю, можно ли fedora в chroot упаковать и туда проброс X сделать…вроде такое возможно

Делал так в дебиане, всё работает. Пробросить надо переменную $DISPLAY и скопировать файл ~/.Xauthority (копировать после каждого ребута X сессии), вроде больше ничего.

Но думаю тут можно без этого обойтись.

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

Версии библиотек слишком новые, оно в сегфолт уходит. Может, если это исправить, там еще что всплыает

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

Продай клиенту бинарники и огорчишь его на ограниченый срок, продай ему сырцы и огорчи его на всегда. ;)

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

А ещё можно продать SaaS… но нет, это уже попадает под Женевскую Конвенцию.

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

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

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

За тем что все это ставилось и настраивалось в 2015, а последний раз обновлялось в 2017...

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

Самый простой способ, на самом деле.

требует X11 и OpenGL

Доступ к X11 сокету и drm дается совершенно элементарно.

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

А вот если руками выковыривать, складывать, писать скрипты - вероятность того, что все развалится на машине клиента возрастает прям до очень больших цифр.

Каждое первая игра с гог.ком с тобой не согласна.

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

Стабильный лялих такой стабильный. Вспоминаем про бинарники DOS, OS/2, Win всех мастей и OSX. Всё ещё работают. Грустно это и как-то печально. 2017 был всего лишь 5 лет назад. У меня Air и того старше…

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

Так все дело в зависимостях размазанных по системе и поставляемых отдельно, wid/dos подхрд - все свое ношу с собой, имеет свои недостатки, но с каждым годом работы под linux кажется мне более пригодным для конечного пользователя

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

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

eternal_sorrow ★★★★★
()

но как?

Ну вот прямо вот так: вытаскиваешь прогу с её зависимостями и пишешь скрипт запуска с LD_LIBRARY_PATH и прочим

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

Статически собирай и у тебя будет работать программа 90-го года.

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

Значит, неправильно собирается. Нахрена все эти аппимаджи, сделай руками, там делов на час времени

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

окно появляется, но элементы не отрисовываются (черное окно). Я такой баг ловил и про обычной установке на подходящую систему, но там все решалось правильной выдачей прав.

Kolins ★★★★★
() автор топика

AppImage – корявая дрянь. С ним намучаешься.

Наверное tar.gz с run.sh скриптом будет лучше использовать.

P.S. Приложение использует Qt?

Исходники есть? Может быть собрать статически действительно?

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

Наверное tar.gz с run.sh скриптом будет лучше использовать.

Сейчас так сделал, осталось придумать как объяснить приложухе что конфиг надо не в /etc искать (оно видимо захардкожено).

P.S. Приложение использует Qt?

Нет

Исходники есть? Может быть собрать статически действительно?

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

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

Сейчас так сделал, осталось придумать как объяснить приложухе что конфиг надо не в /etc искать (оно видимо захардкожено).

Плохо будет, если патчить придётся. Ох уж этот UNIX’овый FHS-Way с размазыванием программы тонким слоем по 100500 каталогам. Лежал бы конфиг рядом с исполнительным файлом, никакой проблемы бы не стояло.

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

А патчить нельзя, это уже другая версия будет, не та что была при продаже...бла-бла-бла)

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

Лежал бы конфиг рядом с исполнительным файлом, никакой проблемы бы не стояло.

Ага, или добавили бы ключ для указания пути до конфига

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

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

Kolins ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.