LINUX.ORG.RU

Как удобно регулярно компилять без замусоривания системы

 , , ,


0

2

Регулярно стал сталкиваться с задачей собрать готовый к запуску бинарь из последней версии какого-нибудь приложения из гита.

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

Как бы мне хотелось, чтобы было: git clone ... dir & SUPERAPP dir делает так, что пока запущен этот некоторый SUPERAPP я могу качать и ставить внутрь изолированного окружения что угодно, любые зависимости(в т.ч. с помощью пакетного менеджера моего дистра), и они не будут замусоривать основную систему. При этом если я сделаю make, то те пакеты-зависимости, которые у меня есть в основной системе - сами определятся и подхватятся. Когда делаю make install, то скомпиленное приложение(возможно, после не очень сложных и главное автоматизируемых действий) становится доступным в основной системе, при этом появляется возможность удалить такие приложения некоторым единообразным способом(как пакет, например).

Вот слышал про докер, lxc, но не разбирался(я вообще тут из криокамеры вылез, не обессудьте). Это оно? Есть истории успеха, туториалы? Хочется более-менее дистронезависимого решения, так как имею зоопарк из gentoo, debian, ubuntu lts и в последнее время щупаю voidlinux.

В общем, как бы это всё лучше делать?

Это аутизм, гони его, насмехайся над ним.

anonymous ()

Docker, но для того чтобы приложения были доступны на хосте придется напилить удобных тебе наворотов.

А лучше всего сюда подходит flatpak, особенно если это GUI

vrutkovs ★★ ()

Я пользую докер. Вполне сгодится чтобы не замусоривать систему. Сгодится чтобы на одной системе собрать что-нить для другой (например, более старой). Если нужны тулзы которых ещё нет в репах, то компилять их всё равно придётся, хоть в докере, хоть без докера. Если тулзы уже есть в дргой системе (e. g. testing или как оно у вас там) то всё пройдёт гладко.

Вот здесь я писал немножко подробностей.

debugger ★★ ()

systemd-nspawn -b -x ...

anonymous ()

Спасибо всем отписавшимся, пока остановился на докере, но ещё ничего не делал. С Flatpack не разобрался, какой-то он мутный, но ведь вроде то, что надо... Ещё вопрос. lxc для таких целей годится?

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

Я просто не знаю, как сабж вообще гуглить.

Mihahail ()

Использую docker для этого, но это не самый удобный способ: 1. Если собираешь базовый образ со всеми тулзами\зависимости для каждой из программ, которую нужно скомпилировать, то у тебя этих образов образуется много и они достаточно тяжёлые. Предусмотреть все зависимости и собрать их в один гигантский образ - просто невозможно. 2. Если один раз оттестил скрипты по сборке, при обновлении софтины большая вероятность того, что что-то сломается (добавится ещё зависимость, например). Придётся пересобирать базовый образ, это долго.

Как мне кажется, сильно проще использовать chroot\systemd-nspawn\runc - в общем всё то, что позволит тебе просто создать изолированную систему (и фс) отдельно от основной, а уже внутри этого чрута компилировать что угодно. Вагрант иногда для этого тоже использую.

pod ★★ ()

Для компиляния можно поставить свежую слаку в отдельный раздел, там есть все (или почти все) тулзы для компиляния, вот только одна проблема - готовый deb пакет не соберёшь.

Недавно для себя открыл слаку, теперь компилять какую-нибудь срань буду только в ней, без риска сломать другую систему.

Да, похоронил свой linux mint.

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

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

Я всегда знал, что слакварщики — поехавшие наркоманы. Заниматься таким мазохизмом, кода уже давным давно есть для этого удобные контейнеры…

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

Ха, так слаку как раз и юзают внутри контейнеров :)

menangen ★★★★★ ()

Как удобно регулярно компилять без замусоривания системы

ставь генту.

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

ставь генту

кстати да, как вариант можно Gentoo Prefix поставить

annulen ★★★★★ ()

Как удобно регулярно компилять без замусоривания системы

Для Debian/Ubuntu:
pbuilder, launchpad
Для RHEL based:
mock, koji
Для всего:
chroot
obs
packagecloud
lxd/lxc, docker
drone.io

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