LINUX.ORG.RU

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

 


0

2

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

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

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

★★★★★

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

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

Как вариант - делаешь chroot, в котором байндишь свой корень, dev, proc и тд, но вместо etc монтируешь другой каталог. Хотя многим функциям из glibc и прочих библиотек нужен нормальный etc. Если у программы свой каталог в /etc, тогда его байндишь и всё нормально, а если только файл, то сложней, тут уже надо курить всякие оверлаи.

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

в котором байндишь свой корень

Интересно, но боюсь что: mount: only root can use "--bind" option не устроит

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

Ты попробуй сам сначала.

Ну я как-то читал мануал, но по итогу забил.

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

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

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

У гога есть своя скрипто обвязка, но собственных соплей много, ага

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

Хотя многим функциям из glibc и прочих библиотек нужен нормальный etc.

overlayfs спасет отца самодостаточных приложений.

Siborgium ★★★★★
()

Flatpak тут не к месту.

Лучше всего сделать так. распаковать все в отдельный каталог, например в /opt, и пытаться запустить с LD_LIBRARY_PATH. Будут сообщения «не хватает такой-то библиотеки», тогда докидываем ее из древней федоры. Так пока не заработает. Потом запаковать в tar архив и из него ставить на целевую машину.

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

которое раотает … в виде надора

М-да.
Гуглом переводили на русский язык?

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

Нет, просто не замечаю опечаток

Эээээ, дружище.
То не Тебе замечание было, а памятка для себя …

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

как заставить его видеть /etc в ./etc

Вот тут видимо без chroot никак, но для него понадобится рут. И для монтирования в chroot каталогов /dev, /proc, /sys и т. д. понадобится mount –bind и рут.

Решить проблему без рута можно попробовать при помощи PRoot

https://proot-me.github.io/

То есть надо создать chroot окружение при помощи PRoot, монтировать в него с хостовой системы /dev, /proc, /sys, /dev/shm, /dev/pts.

Развернуть там минимальную древнюю федору при помощи mock например (https://github.com/rpm-software-management/mock), поставить rpm с нужным приложением.

Потом можно написать скрипт, который входит через PRoot в это окружение и запускает приложение.

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

ох уж эта виндовая помойка со всеми файлами в одной «папке»

Вариант с «виндовой помойкой» в случае ТС сэкономил бы время. Вариант с FHS-помойкой породил геморрой и проблемы.

EXL ★★★★★
()

надо было на джаве писать.

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

перехвати open() из libc.so через LD_PRELOAD и дальше хоть в параметрах путь к файлу передавай, хоть в переменных окружения

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

договор на поддержку есть, но по нему не предусмотренны новые бинарники…

За такое надувательство надо платить деньгами, но без возможности их перевода вендору.

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

Чукча не программист, есть решения с готовыми libc.so где можно подменить указанный путь?

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