Распределенная компиляция
mix_mix 11 ноября, 2008 - 23:01
Приобрел таки ASUS EEE PC 1000h. Сижу вот крайне довольный и ставлю gentoo (из самодельного stage4). Так вот.. решил задействовать distcc для дальнейшей сборки пакетов. Так вот вопрос: можно ли при использовании distcc не проводить компиляцию на текущей машине? То есть, чтобы при компиляции мой ёжик простаивал, а Большой Брат собирал указанные пакеты.
И ещё: можно ли (без подмены make.conf) собирать пакеты с опциональным использованием distcc (т.е., например, команда emerge_bb собирает пакет на другой машине и копирует сюда только бинарники, а emerge собирает на ноуте)?
»
- Для комментирования войдите или зарегистрируйтесь
Не нужен вам вообще distcc в
Не нужен вам вообще distcc в таком случае
mix_mix wrote:Так вот вопрос:
Не уверен в своей правоте (не было нужды проверять) - возможно, в /etc/distcc/hosts не стоит указывать адрес локальной машины (ASUS EEE PC 1000h)?
Я ♥ Gentoo & Funtoo
Re:
> Не нужен вам вообще distcc в таком случае
А реально настроить BINHOST чтобы бинарные пакеты были не _уже_ скомпилены, а компилились бы по запросу emerge -GK ?
> ..не стоит указывать адрес локальной машины...
Вот я тоже на это подумал, но хотел узнать мнение, возможно, столкнувшихся с этим людей
через ssh даем команду emerge
через ssh даем команду emerge -B package, по завершению комруем через scp с большого брата на меньший новые файлы из /usr/portage/package. на меньшем брате устанавливаем emerge -K package. Это всё в скрипт и алиас на emerge_bb.
bes.internal wrote:через ssh
А если USE флаги на машинах отличаются? Как быть с зависимостями?
Меня давно интерсовал вопрос как собрать бинарник для другой машины на которой USE флаги отличаются
и тянутся новые зависимости, возможно ли это?
>>Меня давно интерсовал
>>Меня давно интерсовал вопрос как собрать бинарник для другой машины на которой USE флаги отличаются
и тянутся новые зависимости, возможно ли это?
Флаги ДОЛЖНЫ быть одинаковы. Юсы ДОЛЖНЫ быть одинаковы. Набор софта и зависимости ДОЛЖНЫ быть одинаковы. Это типа политики безопасности. Разрешенный софт, запрещенный софт. Порядок, одним словом. Желательно еще одинаковую архитектуру и совместимое по драйверам железо. Но это в идеале. Как только с набором флагов/зависимостей/архитектур определились - можно заняться оптимизацией административной деятельности. Программа, от того что ее по сто раз одинаково пересобирать, лучше работать не будет , потому собирать надо один раз и ставить с бинарей. Ежели архитектура одинакова (идеал), то кроме настроек бинарных репозитариев и сборки бинарей на админской машине ничего не надо. На клиентах ставим с бинарей. Ежели всеж таки есть отличия (в том числе и по зависимостям) придется устраивать несколько различных бинарных репозитариев и соответсвенно их поддерживать. Для этого есть пакет catalyst, кривоват немного но единственный в своем роде. Можно при желании легко набросать свой фреймворк. Основная идея - сборка под сшрутом отдельно для каждого репозитария.
Совершенно отказаться от
Совершенно отказаться от localhost нельзя, но можно выставить приоритет - поставить более мощную машинку первой в конфиге distcc.
Не грусти, товарищ! Всё хорошо, beautiful good!
Чтобы "ежик" простаивал
Чтобы "ежик" простаивал вообще - нельзя. Ему как минимум надо раздавать задачи и складывать у себя результаты их выполнения. Кроме того ряд пакетов невозможно собирать распределенно.
Если совсем жалко "ежа" пусть он берет бинарники собранные "большим братом".
Примонируй коневую ФС
Примонируй коневую ФС ноутбукао ssh. /usr/tmp/portage примонтируй из локального диска (пустой, например mount --bind /tmp/eeeportage /mnt/eee/usr/tmp/portage), чтобы быстрее было и ssd не гробить.
Далее на персоналке:
ROOT=/mnt/eee/ SYSROOT=/mnt/eee/ emerge ...
И будет тебе счастье. А можешь sysroot на eee не хранить и тогда у тебя на нем не будет девелоперских пакетов.
Есть хорошее howto
Я для своего старого ноута собирал систему на неплохом десктопе, вот по этому howto:
http://www.gentoo-wiki.info/HOWTO_Emerge_on_very_slow_systems
Per aspera ad astra!
Bircoph, спасибо тебе
Bircoph, спасибо тебе дружище! На мой взгяд для многих слабых машин скорость компиляции на старом железе практически сводила на нет возможность/целесообразность установки gentoo на такого "антикварного рода" машинках. С помощью этого гайда похоже можно попробовать дать новую жизнь старой машинке, чем я собираюсь заняться вплотную.
> I have also found it useful to bind some local directory on machine A to the directory /var/tmp/portage on machine B:
Хочу еще добавить что мне пришло в голову что существует еще такая полезная вещь как ccache которая настраивается (обычно /var/tmp/ccache") и ее тоже можно примонтировать, а разместить этот файловый кэш на быстрой машине естественно. В гайде по ccache обещают что кеширование компиляции очень сильно сказывается в плане скорости компилирования в лучшую сторону, когда кэш становится размера побольше..
>bes.internal через ssh даем команду emerge -B package, по завершению комруем через scp с большого брата на меньший новые файлы из /usr/portage/package. на меньшем брате >устанавливаем emerge -K package. Это всё в скрипт и алиас на emerge_bb.
Спасибо!
Подумав немного я пришел к выводу, что копирования через scp можно вобще измежать подняв на быстрой машине ftp и настроя на слабой машине параметр BINHOST, в хендбуке это описано. Это упрощает всю процедуру до двух команд. В одной консоли - команда компилить, в другой консоли команда скачать и установить свеже скомпилированный бинарик. Единственно в случае необходимости установки кучи пакетов, это конечно малость муторно.
Но этот вариант хуже тем что он не учитывает что этот вариант наиболее применим в случае наличия идентичных машин, и одинаковых USE флагов/ одинакового make.conf. Впрочем как знать.