LINUX.ORG.RU

помогите научиться понимать, почему не собирается пакет

 , ,


0

1

приветствую! я ради экспериментов собрал систему на сервере, решил попробовать distcc. Притащил нетбук жены, настроил, работает, собирает. решил собрать gentoo с Mate, авось пойдёт (Samsung N150 на Intel Atom, 2 RAM). Но я не особо прямо продвинутый собиральщик пакетов, сейчас не собирается rust, llvm и talloc, билд логи последних приложил. Прошу помочь научиться разбираться, почему не собираются эти два пакета и принципиально понять, куда смотреть при анализе причин.

https://disk.yandex.ru/d/pzr7vPv73ncZTQ/ https://disk.yandex.ru/d/AuAPu8zPHcDHrw/

хотел на pastebin выложить, но там на объем ругнулось


Сколько ни пробовал задействовать distcc, ни разу не получил серьёзной прибавки в скорости компиляции. Даже при том что вторая машина имеет существенно более мощный CPU, на неё отправляется так мало операций компиляции, что на ней не создаётся существенной нагрузки. И 99% работы всё ещё совершает CPU клиента.

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

а у меня получилось) На нетбуке Intel Atom, а на блейде Intel Xeon CPU E5-2640 в 24 логических CPU @ 2.50GHz

нетбук хоть что-то собирает с более-менее скоростью)

без distcc ядро компилил с утра до обеда

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

Конфигурация перед комриляцией осуществляется локально, а для некоторых пакетов она долгая. Слишком большие задержки на обмен. Некоторые пакеты в таком режиме вообще не собираются. Проще в chroot на мощной машине собирать с нужными настройками.

grem ★★★★★ ()

2 RAM

Не соберёшь gcc и llvm. Памяти скорее всего не хватит.

rust

rust-bin

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

Да причём тут конфигурация? Замерял на одном конкретном пакете. Его компиляция занимает несколько сотен операций. Я включал подробный лог distcc на стороне сервера - он за это время выполняет с десяток операций.

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

без пояснений что за пакет, какая билдсистема используется и какие опции компиляции - ничего подсказать не могу.

Как использовавший ранее билдсервер с distcc могу сказать, что прирост от использования существенный, но всегда находились 1-3 пакета, которые либо не собирались с distcc, либо в принципе не параллелилась сборка(emake -j1 в ебилде с пояснением от мэйнтэйнера, что билдсистема сломана и не параллелит даже локально).

Из-за таких мелких глюков мы от distcc отказались и перешли на чруты с последующим распространением бинарных пакетов.

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

без пояснений что за пакет, какая билдсистема используется и какие опции компиляции - ничего подсказать не могу.

уже не помню, давно было

мы от distcc отказались и перешли на чруты с последующим распространением бинарных пакетов

я пришёл к такому же выводу, за исключением того что оно не стоит того для моего локалхоста

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

У меня опыт позитивный с distcc.

Да, нужно понимать, что параллелится только компиляция; а у многих пакетов большую часть времени занимает скачивание, ./configure, инсталляция. Плюс небольшой оверхед на обмен данными. Так что прирост производительности заметен только на больших пакетах.

Чтоб совсем не компилировалось - помню был один пакет из KDE. Но это было давно.

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

P. S. Затем экспериментировал со сборкой системы, которая бы бинарно поставилась бы на любую машину - дженеричный AMD64. В итоге выяснил, что компиляция под конкретный процессор таки дает заметный на глаз прирост производительности.

До сборки локально под другую платформу руки не дошли.

Kroz ★★★★★ ()

2 RAM

2 гига памяти если подразумевается, то

не собирается rust

Потому что памяти зажирает при сборке полтора гига на процесс. Для rust и прожорливых при сборке пакетов можно выставить j1.

mkdir /etc/portage/env
echo "MAKEOPTS="-j1" >> /etc/portage/env/rust.conf
mkdir /etc/portage/package.env
echo "dev-lang/rust rust.conf" >> /etc/portage/package.env/rust

With ★☆☆ ()

Nix вам нужен, батенька, там оффлоадится вообще вся сборка целиком.

t184256 ★★★★★ ()

1. Читать логи

2. Понимать, что там написано

3. Иногда важная информация не в самом конце, а чуть повыше.

4. Если проблема не очевидна, можно скопипейстить сообщение об ошибке в гугл, возможно кто-то с этой проблемой уже сталкивался и уже её решил

Harald ★★★★★ ()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.