Создание приложения без зависимостей

Опрос

Какую технологию выбрать для создания приложения не зависящего (почти) от окружения?
Flatpack
Snap
Appimage
Виртуальная машина
Docker контейнер
LXC контейнер
Пересобирать по необходмости
Другое
Есть приложение, например firebird-superserver, клиент-серверная СУБД. Бывает редко, но мне нужно что-то проверить, как будет рабоать тот или иной запрос в базе данных для этого сервера. Поскольку этот пакет есть только в AUR, то пришлось его устанавливать после локальной сборки. Все работало хорошо до очередного обновления. После обновления перестали совпадать версии библиотеки icu которая установлена в системе и той, с которой был слинкован иполняемый файл в этом пакете. Ок, думаю, опять собирать из исходников. Пересобралось, установилось, всё работает, до очередного обновлени, когда будут затронуты файлы, от которых зависит исполняемый файл в этом пакете.

И тут я подумал: нет ли способа скомпилировать пакет один раз, так чтобы он не зависил от окружения в котором будет запускаться? Или почти не зависел, т.к. если достаточно сильно изменится api или abi, то скорее всего и приложение работать перестанет. На ум пришло несколько вариантов:
  1. Статическая линковка. Беглый поиск привел к пониманию того, что для этого также нужны статические версии всех библиотек подготовленные для статической линковки. Думаю процесс будет сильно сложеннее чем правка нескольких флагов компилятора.
  2. Flatpak
  3. Snap
  4. Appimage
  5. Вирутальная машина
  6. Контейнер docker
  7. Контейнер lxc
  8. Не выпендриваться и потихоньку пересобирать приложение по мере того как перестанет запускаться
  9. Что-то ещё
Варианты 2-4 думаю лучше всего для этого подходят, но возможно там прийдется много с чем разбираться.
Вариант 5. Оверхед по производительности, сложность поддержки - нужно тащить за собой гипревизор.
Варианты 6-7 пока выглядят как синонимы, есть поддержка в ядре, гипервизор не нужен. Собираюсь попробовать lxc: скачать образ какой-нибудь системы и там запустить это приложение. Как я понял, это должно быть проще чем отдельная ВМ. Но прийдется тащить (или хранить) за собой целый образ отдельной системы (возможно, довольно объемный, или как там все это устроено, пока не разобрался).
Собственно вопрос, что лучше выбрать? Даже не конкретно в этом случае, а в общем, если захочется перенести рабочее приложения в другое окружение.
Успешно использую такой вариант. Это что-то среднее между Вашими пунктами 2-4,6,7
Если не хочется часто пересобирать - возможно, арч - не лучший выбор - возьмите какой-то LTS
Ну или LTS в докере и т.п. внутри арча - это совсем универсально, но избыточно
PuppyRusArch (PRA)
Sfs - у Вас небольшая опечатка, Сборкa Roll ч86_64
Хорошая штука, этот Puppy
archevator
После обновления перестали совпадать версии библиотеки
Если дело только в этом, то сначала желательно подсунуть нужную библиотеку, используя simlink, и если сработает. то не нужна и пересборка.

PS - у меня. например, заморожен firefox на версии firefox 56.0.2-1 - за 2 года всего раза два пришлось использовать simlink - все работает.

EDIT 1 - Можно попробовать и сохранить все используемые динамические библиотеки, а потом, после изменения, пробовать подложить нужные обратно - все лучше, чем заниматься пересборкой. Но нужно сделать анализ этих динамических библиотек. И, конечно, это будет работать до определенного момента.
Ошибки не исчезают с опытом - они просто умнеют
archevator
Собственно вопрос, что лучше выбрать?
Лучше выбрать сборку из АУРЫ.
всякие Flatpak Snap Appimage - тормоз эволюции ПО !!!
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
nafanja
всякие Flatpak Snap Appimage - тормоз эволюции ПО !!!
1. +100500
2. Ненужная хипстерская фигня
3. Поклон Редмонду (и говорит Ему: всё это дам Тебе, если павши поклонишься мне. От Матфея 4:9)
In Tux We Trust
archevator, сделай голосовалку, будут конкретные данные (пользователей этого форума) + мнения тех кто что то пишет умноженный на их рейтинг... (как посчитать рейтинг это уже другой вопрос.)
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
redix
2. Ненужная хипстерская фигня
С точки зрения пользователя арча, которого не напугать АУР - да
С точки зрения программиста, которому надо поддерживать много разных линуксов - экономия времени и сил
Кроме того некоторые проги - запаришься компилить
PuppyRusArch (PRA)
sfs, фигня!
все пользователи Линукс, являются по совместительству и тестерами и платят за использование своим вкладом в сообщество тестированием.
чем быстрее обнаружится баг, тем быстрее он будет исправлен, тем больше пользы пользователи принесут сообществу.
при замораживании, новые библиотеки (ПО в частности) потеряют тучу тестировщиков. пользователи халявшики, будут использовать ПО только для собственной выгоды, забив на основы развития свободного и бесплатного ПО.

sfs
Кроме того некоторые проги - запаришься компилить
это ты их компиляешь или комп? если твой комп тебя запаривает, то возьми помощьнее.... и тебе польза и другим... + не платишь за ПО! а вот под виндой ты и платишь за ОП и к тому же являешься бесплатным тестеровщиком.
ПРОЧУВСТВУЙ РАЗНИЦУ!
Псевдографический инсталлятор Arch Linux ver. 3.8.2
Благодарности принимаются на ЯД 410012815723874
sfs, не знаю как с точки зрения программиста, а с точки зрения безопасности - все эти флатпаки это дыра.
In Tux We Trust
 
Зарегистрироваться или войдите чтобы оставить сообщение.