В начало → Система Portage |
Слишком долгое время выполнения 'emerge --sync' на всех серверах в LAN.
Согласно этикету gentoo, вы не можете синхронизироваться чаще одного раза в день.
Общий NFS portage. Одна машина синхронизируется под управлением cron, остальные машины монтируют свою директорию /usr/portage с помощью NFS.
Обязательная поддержка nfs в ядре. В случае компиляции ее как модуля, добавить соответствующие строчки в modules.autoload
Если потребуется, перезагрузить или загрузить модуль nfs
Выполнить emerge nfs-utils
Настроить NFS/fstab для автоматического монтирования общего репозитария portage.
Установить локальный PORTAGE_TMPDIR на локальную файловую систему.
Только один сервер заботится о синхронизации portage (ночью по заданию cron'а).
Не нужен локальный rsync сервер.
Общий для всех каталог /usr/portage/distfiles
означает, что вам не нужно скачивать одно и то же каждый раз, чтобы синхронизировать репозитарий portage на ваших ваши компьютерах.
И вообще, NFS — это классная штука ;)
NFS является очень скудным протоколом по части безопасности. Убедитесь, что используете его только в пределах вашей локальной сети, где вы полностью доверяете вашим пользователям. Мы вас предупредили!
У вас ДОЛЖНА быть включена поддержка NFS в вашем ядре, либо вкомпиленная в ядро (в таком случае необходимо будет перезагрузиться):
Листинг 1. Конфигурация ядра Linux: Встроенная поддержка
File systems ---> Network File Systems ---> <*> NFS file system support [*] Provide NFSv3 client support [ ] Provide NFSv4 client support (EXPERIMENTAL) [ ] Allow direct I/O on NFS files (EXPERIMENTAL) <*> NFS server support [*] Provide NFSv3 server support [ ] Provide NFSv4 server support (EXPERIMENTAL) [ ] Provide NFS server over TCP support (EXPERIMENTAL)
либо в качестве модулей:
Листинг 2. Конфигурация ядра Linux: Включение модулей
File systems ---> Network File Systems ---> <M> NFS file system support [*] Provide NFSv3 client support [ ] Provide NFSv4 client support (EXPERIMENTAL) [ ] Allow direct I/O on NFS files (EXPERIMENTAL) <M> NFS server support [*] Provide NFSv3 server support [ ] Provide NFSv4 server support (EXPERIMENTAL) [ ] Provide NFS server over TCP support (EXPERIMENTAL)
Добавляем NFS server support, так как на данной машине будет размещаться общий каталог portage. Поддержку клиента NFS можно добавить по желанию.
Сохраните конфиг вашего ядра и пересоберите его.
Листинг 3. Пересборка ядра
gentoo # mount /boot //если это еще не сделано gentoo # cd /usr/src/linux Для ядер 2.4: gentoo # make dep && make bzImage modules modules_install install Для ядер 2.6: gentoo # make && make modules_install
Перезагрузитесь, если включили поддержку NFS в ядро, или, если вы собрали ее как модули, просто запустите: modprobe nfs
Установите пакет nfs-utils:
#
emerge nfs-utils
Настраиваем автоматическое монтирование общего portage
#
rc-update add portmap default
#
rc-update add nfs default
Отредактируйте crontab на сервере (метод зависит от того, какой cron вы используете). Для vixie-cron и dcron команда выглядит так: crontab -e
Добавьте код:
0 0 * * * emerge --sync > /dev/null 2>&1 || true --nospinner && emerge world -vup
Отредактируйте файл /etc/exports
на сервере, чтобы в нем были следующие строчки:
/usr/portage ip_range/subnet(sync,no_root_squash,rw)
Отредактируйте /etc/fstab
на клиентах, добавив в него следующий код:
SERVER_IP:/usr/portage /usr/portage nfs bg,hard 0 0
Отредактируйте /etc/modules.autoload.d/kernel-version
, добавив следующую строку:
nfs
Кеш портежей не расшарен через nfs. Если каждый раз вас докучает обновление кеша при команде emerge сразу после синхронизации, попробуйте добавить следующее в crontab клиентов. Это обновит кеш на компьютерах ваших клиентов спустя 10 минут после старта синхронизации на сервере. Установите время согласно скорости вашего подключения.
10 0 * * * emerge --metadata
PORTAGE_TMPDIR
должен быть локальным каталогом (для скорости).
Переменная PORTAGE_TMPDIR
устанавливается в файле /etc/make.conf
и по умолчанию указывает на /var/tmp
, то есть на локальную файловую систему, но просто для того, чтобы увериться в том, что это так, а не иначе, сделайте: emerge
info Если всё прошло успешно (а всё так и должно быть), вы спокойно можете очистить содержимое каталога /usr/portage
на КЛИЕНТСКОЙ машине (например, чтобы освободить дополнительное свободное место на диске)
Запись crontab'а
0 0 * * * emerge --sync > /dev/null 2>&1 || true --nospinner && emerge world -vup
говорит о том, что раз в сутки, в полночь будут выполнятся синхронизация с перенаправлением вывода в мусор и без бегунка и emerge world -vup и отправка письма root'у о том, что должно быть обновлено — настройте корректно почту).
/etc/exports
:
"/usr/portage
" — каталог для экспорта
"ip_range/subnet
" — только компьютеры из этого диапазона могут подключать его по сети
"(sync,no_root_squash,rw)
" — полезные параметры, всегда мною используемые
/etc/fstab
:
"
" — что вы хотите подключить
SERVER_IP
:/usr/portage
"/usr/portage
" — куда вы хотите подключить
"nfs
" — ФС ресурса
"bg,hard 0 0
" — полезные параметры, всегда мною используемые
/etc/modules.autoload.d/kernel-version
:
"nfs
" сообщает какой модуль загружать при загрузке ядра версии kernel-version
Советы? Пожелания? Похвала? Дайте нам знать.
Если вы получаете ошибку "Error starting NFS daemon" попробуйте
#
mount -t nfsd nfsd /proc/fs/nfsd
это работает для меня.
В начало → Система Portage |