LINUX.ORG.RU

Имеет ли смысл паковать GUI софтину в контейнер

 


0

3

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

Скриптовая начинка на разных компах разная, условно: ремонт/сборка.

Общего у компов то, что там стоит линукс. Дистрибутивы от убунты до рача.

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

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

Имеет ли смысл вообще морочиться, какие подводные камни и есть ли решение лучше?

А как же новомодные флатпаки и прочие «всё своё ношу с собой»?

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

Посмотрю, но хотелось чтобы всё ставилось/обновлялось/сносилось одним движением.

Где-нибудь уже применяют?

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

Как я это делаю: беру Ubuntu 14.04.5 LTS и просто скрипт сборки сначала собирает, а затем насовывает либ, и делает архив. Так как у меня достаточно давний LTS, то это позволяет работать моей сборки на всех нужных тачках.

I-Love-Microsoft ★★★★★ ()

Какой язык и зависимости? Я Qt пакую в архив без проблем. Ненужны никакие лишние прослойки.

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

Ну там всё в одном большом и жирном образе лежит, т.е. достаточно этот кусок бинаря заменить.

Radjah ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Тоже на 14.04 собираю, но я бы не сказал что он такой уж давний. Тут или 12.04 или redhat лучше подойдёт.

RazrFalcon ★★★★★ ()

А не проще просто взять папку с бинарником и положить в нему все нужные либы, а на крайняк - собрать статически?

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

Там не один бинарь, а пачка бинарей + набор конфигов/скриптов/etc

Сейчас это дело раскатывается с помощью pip, git и какой-то матери.

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

Согласен, не такой уж. Ориентируюсь по парку машин основных юзеров в конторе. А для неизвестных пользователей логично на 12.04 или redhat.

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от Dark_SavanT

вот мой скрипт сборки: http://paste.org.ru/?2630t3 - очень похожий есть и под маздай, тут видно что мне допустим пришло тянуть помимо libpython3 еще и кучу py-файлов, а также so-библиотек из состава Python (например для модуля math)

I-Love-Microsoft ★★★★★ ()

Для гуи лучше Snap пакет собрать. В самом докере так и нет нормального способа пускать гуевые приложения, вроде как до сих пор. AppImage еще хорошо выглядит.

BigAlex ★★★ ()

http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker/\

По сути из важного там

      -e DISPLAY=$DISPLAY \
       -v /tmp/.X11-unix:/tmp/.X11-unix \

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

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

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

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

Dark_SavanT ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

У меня есть ещё несколько бинарей/скриптов которые тащутся с собой и которые надо исполнять независимо от того установлен системный пакет или нет. Именно поэтому я думаю насчёт контейнера. Возможно действительно оверкилл, смотрю изучаю.

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

Вопрос в том, что контейнеру надо дать доступ к usb железкам. Про gui уже сказали.

Dark_SavanT ★★★★★ ()

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

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

Да, для внутреннего пользования.

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

Дело даже не в самом наборе программ, а в той куче доп.файлов которые от инстанса к инстансу частично отличаются и их хочется обновлять удалённо и разом, в идеале чтобы туда ещё руками особо не лазили. Сейчас git для этого.

Возможно мне всё это действительно нахрен не надо и можно обойтись текущими средствами, просто допилить.

С другой стороны вопрос можно обобщить до: имеет ли смысл поставлять некоторый набор взаимосвязанного софта в контейнере/snap/appimage/wtfelse?

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

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

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

А Snap уже работает на дистрибутивах, отличных от убунты?

hobbit ★★★★★ ()

Не забывай, что GUI в контейнере выглядит как говно. Работать оно будет, но видок будет как у программы времен Windows 95.

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

Пускаю Telegram из Snap-пакета. Выглядит как такое же родное приложение, шрифты те же. Единственная проблема, что иконка приложения (пока) не обновляется самим приложением, т.е. пришло новое сообщение, но иконкой это показать оно не может.

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

Не знаю, на чем там телеграмм написан, может он в браузерном движке нарисован или на каком-то QML.

peregrine ★★★★★ ()

Мой хрустальный шар говорит, что пробросить USB в flatpak будет проще.

tailgunner ★★★★★ ()

Всю ночь не спал, много думал

Выхода нет, надо звать ZenitharChampion чтобы обучил как собирать Ъ-redistributable на CentOS 4.

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

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

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

Не надо ролик, просто помогите confused-товарищу Dark_SavanT сделать верный выбор в жизни ^_~

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