У меня есть достаточно старенький ноутбук Р3—700, 256 памяти, видео — S3 Savage 8 мегабайт. На него я поставил Gentoo. По ходу чтения Хэндбука, наткнулся на описание distcc.
Цитата:
«Distcc — это программа, предназначенная для распределения задач компиляции между несколькими компьютерами в сети. Она состоит из сервера — distccd и клиента — distcc. distcc совместим, и отлично работает с ccache и системой Portage Gentoo.»
У меня в добавок к этому ноутбуку, есть еще 1 ноут — двухядерный с гигом памяти и такой же десктоп, на них установлен Debian Sid. Ну я и решил воспользоваться этим, все равно процессорные мощности пропадают
Основным условием является наличие компилятора gcc одинаковой версии на всех компьютерах, которые будут использоваться. Можно использовать разные версии ветки 3.3.х, где х меняется, но нельзя объединять 3.3.х и 3.2.х, иначе в программах обязательно будут ошибки.
Также можно использовать ccache. Ccache — это быстрый кэш компилятора. Когда вы компилируете программу, он кэширует промежуточные результаты так, что всякий раз, когда вы перекомпилируете ту же самую программу, время компиляции значительно сокращается. В типичных случаях общее время компиляции может сокращаться в 5—10 раз.
Посмотреть версию компилятора можно командой
$ gcc —v
На компьютерах с Debian у меня установлен gcc версии 4,3, а на Gentoo — 4.1. Я решил использовать нестабильную ветку, чтобы в Gentoo тоже использовать gcc 4,3 и добавил в файл /etc/make.conf строчку
ACCEPT_KEYWORDS="~x86"
Далее обновляем список программ
# emerge —sync
Устанавливаем gcc
#emerge gcc
Устанавливаем distcc и ccache
# emerge distcc ccache
Добавляем в /etc/make.conf следующие строчки
##Вместо N укажите подходящее число для вашего случая
##Как правило это общее кол-во процессоров на всех компьютерах, умноженное
##на 2 и плюс 1
MAKEOPTS="-jN" ## К примеру у меня — 2 двухядерных + 1 старого ноутбука и еще ##+ 1 . Я выставляю —j11
##Добавим distcc в переменную FEATURES
FEATURES="distcc ccache"
##Установим директорию для временных файлов distcc
DISTCC_DIR="/tmp/.distcc"
CCACHE_SIZE="2G" #размер кэша ccache
Для проверки работоспособности ccache, запросите статистику ccache. Из-за того, что Portage использует другой домашний каталог ccache, также потребуется установить переменную CCACHE_DIR:
# CCACHE_DIR="/var/tmp/ccache" ccache -s
Далее, с помощью distcc-config добавляем IP адреса компьютеров, которые будут участвовать в сборке программ
Правим /etc/conf.d/distccd, добавляем разрешенный диапазон IP адресов. В данном случае — все компьютеры с IP адресом 192.168.1.х
DISTCCD_OPTS="${DISTCCD_OPTS} -allow 192.168.1.0/24"
# distcc-config —set-hosts "192.168.1.2 192.168.1.4"
В данном примере 192.168.1.2 — десктоп, а 192.168.1.4 — ноутбук. Ноутбук, на котором установлен Gentoo имеет IP 192.168.1.5
Добавляем distccd в default runlevel и запускаем демон distccd
# rc-update add distccd default
# /etc/init.d/distccd start
Устанавливаем distcc в Debian
# aptitude install distcc
Открываем файл /etc/default/distcc и меняем в нем следующие строки
STARTDISTCC="false"
на
STARTDISTCC="true" - при этом значении distcc будет автоматически запускаться при включении компьютера
ALLOWEDNETS="192.168.1.0/24" – IP адреса, для которых разрешен доступ к distcc
И в строке LISTENER="127.0.0.1" меняем 127.0.0.1 на текущий IP адрес компьютера, на котором производится настройка.
В каталоге /etc/distcc/ создаем файлы clients.allow commands-allow.sh. Файл hosts уже должен находится там. Если нет, то точно также создаем его.
Записываем в clients.allow IP адреса, которым можно использовать демон — у меня это 192.168.1.5 — IP старого ноутбука.
В commands-allow.sh прописываем пути до копиляторов, которые может использовать демон
allowed_compilers="
/usr/bin/cc
/usr/bin/c++
/usr/bin/gcc
/usr/bin/g++
/usr/bin/i486-pc-linux-gnu-gcc
/usr/bin/i486-pc-linux-gnu-g++"
В файл hosts пишем те же IP, что и в clients.allow
Переходим в каталог /usr/bin
# cd /usr/bin
И делаем символические ссылки на gcc-4,3 и g++-4,3
# ln —s gcc-4,3 i486-pc-linux-gnu-gcc
# ln —s g++-4,3 i486-pc-linux-gnu-g++
Все, теперь можно запускать distcc на компах с Debian
# /etc/init.d/distcc start
Результаты работы distcc можно посмотреть в логах на Debian машинах в файле /var/log/distcc.log или использовать команду distccmon-text на машине с Gentoo.
Отдельное спасибо пользователям ЛОР’a, особенно Silvy, которые помогли в решении данной задачи