сборка пакетов на другой машине
polovinamozga 14 мая, 2009 - 16:05
Всем привет.
есть такой вопрос...
Есть мощный сервер и небольшой парк машин, так вот
хотелось бы узнать есть ли возможность собирать пакеты для каждой машины
на сервере.
то бишь я пишу
emerge coolsoft
и эта самая прога собирается на серваке, не используя ресурсы локальной машины.
Есть идеи?
»
- Для комментирования войдите или зарегистрируйтесь
distcc ps если
distcc - только компиляция, сборка и т.д. на локальной машине
ps если процы/архитектуры/юзфлаги одинаковые, то можно делать бинарники, тогда компилить нужно будет лишь раз
...
есть крутая идея почитать хэндбук. для начала это:
http://www.gentoo.org/doc/ru/handbook/hb-working-features.xml
Уже пробовал.На мой взгляд я
Уже пробовал.На мой взгляд я не получил ожидаемой скорости сборки пакетов.
На серваке собирается куда быстрее
Попробуй почитать про
Попробуй почитать про кросс-компиляцию и Catalyst, хотя я не уверен, что это то, что ты ищешь.
http://ru.gentoo-wiki.com/wik
http://ru.gentoo-wiki.com/wiki/HOWTO_Сборка_на_другом_компьютере
самые простые и понятные
самые простые и понятные способы для удаленной сборки пакетов:
1. Если компьютеры в сети сильно отличаются по настройкам и задачам, универсальный метод:
Сервер подключается по сети к корню клиентской машины (nfs/samba/fuse+sshfs/...) и, сделав в него chroot, запускает в нем emerge. Неплохо бы и /dev и /proc и клиентские сетевые шары (у меня общий /usr/portage) забиндить в ту же папку что и смонтированный клиентский root.
По уму должны быть проблемы при установке пакетов, использующих какую то автонастройку для клиентского оборудования, но я таких не встречал... таким образом я настраивал свой eeepc (только чуть чуть наоборот, eeepc запускался по сети с сервера, используя nfs для своего корня.. но суть от этого не меняется). Т.е. команда с клиентов может выглядеть примерно так (на сервере предворительно смонтировать клиентские корни в /nfsmount/имя_машины_клиента):
ssh root@cool-server chroot /nfsmount/`hostname` emerge опции_и_имя_пакетов
2. Если у клиентов одинаковый /etc/make.conf (только одинаковых USE флагов недостаточно, важно все, и ACCEPT_KEYWORDS, VIDEO_CARDS и INPUT_DEVICES, CHOST, LINGUAS,...):
Можно сделать на сервере в chroot общее для всех клиентов окружение, но в настройках make.conf в FEATURES прописать "buildpkg" (вообще то это рекомендуется в любом случае). Затем каждую комманду emerge необходимо сначала запускать в chroot на сервере, а затем ту же самую комманду на клиентах, но с дополнительным ключом --usepkg или --usepkgonly, при этом на клиентах как минимум /usr/portage/packages должен быть копией аналогичной папки на сервере (ну или тот же nfs). Можно подсуетиться и настроить раздачу бинарных пакетов по http (ключ emegre --getbinpkg)
Вариант 1 универсальный практически для любых конфигураций, но не оптимален при обновлении большого парка машин. Вариант 2 предпочтительнее, если машин много, экономится время на сборку всего парка (особенно обновление). Зачастую make.conf не сильно разнятся и можно выделить две три группы компьютеров со своими настройками.. соответственно на сервере можно оформить свое окружение для каждой группы и не забыть что для каждой группы должен быть свой /usr/portage/packages.
P.S. Рекомендую не чистить chroot во втором варианте.. сильно будет экономиться время для последующих сборок. Так же не рекомендуется сборка и установка пакетов на клиентах в обход сборки и установки на сервере.
/
Всех избыточно.
Достаточно sys.
:wq
--
Live free or die