Задача в общем-то понятна. Когда сеть насчитывает десятки или сотни машин, доступ в интернет для которых закрыт, возникает проблема, каким образом следует выполнять обновления портежей и оверлея Calculate.
Здесь я опишу решение, которое по всей видимости мы включим в Calculate Linux 11.
В примерах будет использоваться сетевое имя сервера ‘CDS’. Замените его на IP сервера, либо на реальное сетевое имя.
Настроим Calculate Directory Server
Для синхронизации, воспользуемся RSYNC сервером для передачи данных. Для этого настроим и поднимем RSYNC сервер на CDS:
Отредактируем файл /etc/rsyncd.conf
:
pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
hosts allow = 192.168.0.0/24
hosts deny = *
[gentoo-portage]
path = /usr/portage
comment = Gentoo Portage tree
exclude = /distfiles /packages
[calculate-overlay]
path = /var/lib/layman/calculate
comment = Calculate Overlay
# exclude = /.git
[calculate]
path = /var/calculate/server-data/ftp/pub/calculate
comment = Calculate mirror
Примечание:
* ‘hosts allow’ должна указывать вашу сеть, можно через пробел добавить несколько сетей.
* ‘exclude = /.git’ закомментирован, если комментарий убрать, трафик снизится. Но для возвращения прежних настроек понадобится пересоздать оверлей выполнив:
layman -d calculate; layman -a calculate
- в примере есть ещё зеркало calculate, на случай если вы захотите в будущем его поддерживать. В противном случае закомментируйте или удалите последние три строчки.
Запустим rsync-сервер и добавим его в автозагрузку:
/etc/init.d/rsyncd
rc-update add rsync default
Выполним настройки Calculate Linux Desktop
В файле /etc/make.conf
укажем наш локальный сервер синхронизации, дописав строчку:
SYNC="rsync://CDS/gentoo-portage"
Примечание:
- Вместо CDS впишите IP либо хост (если поднят DNS) вашего сервера.
Проверим как синхронизируются портежи, выполнив:
emerge --sync
Изменим настройки оверлея, отредактировав файл /var/lib/layman/overlays.xml
:
вместо:
<source type="git">git://git.calculate.ru/dev/overlay.git</source>
запишите:
<source type="rsync">rsync://CDS/calculate-overlay</source>
Проверим, выполнив:
# layman -S
* Running command "/usr/bin/rsync -rlptDvz --progress --delete --delete-after --timeout=180 --exclude="distfiles/*" --exclude="local/*" --exclude="packages/*" "rsync://CDS/calculate-overlay/" "/var/lib/layman/calculate""...
receiving file list ...
5401 files to consider
sent 85 bytes received 229211 bytes 458592.00 bytes/sec
total size is 9284417 speedup is 40.49
*
* Success:
* ------
*
* Successfully synchronized overlay "calculate".
*
* Warnings:
* ------
*
* The source of the overlay "calculate" seems to have changed.
* You currently sync from
*
* rsync://CDS/calculate-overlay
*
* while the remote lists report
*
* git://git.calculate.ru/dev/overlay.git
*
* as correct location.
* Please consider removing and re-adding the overlay.
*
Оверлей успешно обновился. Предупреждение напоминает вам, что настройки оверлея были изменены.
Обновление портежей
Что же, подытожим, выполнив:
eix-sync
Именно такой командой следует выполнять обновления.
Шаблоны настройки
Разумеется, любое описание лучше заканчивать шаблонами настройки. Приведу настройки для CLD, т.к. CDS 10.4 пока настраивается при помощи старых шаблонов и не хотелось бы на них уже делать акцент. Настройки клиента же более актуальны, т.к. в ручную выполнять обновление на десятке или сотне машин не очень-то интересное занятие.
Calculate Overlay
Начнем с оверлея. Ввод и вывод из домена осуществляется пакетом calculate-client. Найдем шаблоны calculate-client:
# ls -A /usr/share/calculate/templates/client/
.calculate_directory domain undomain
Как и положено, шаблон директории client
, описанный файлом ‘.calculate_directory’ объявляет, что эти шаблоны может обрабатывать только пакет calculate-client:
# cat /usr/share/calculate/templates/client/.calculate_directory
# Calculate append=skip cl_name==calculate-client
Посмотрим, как выглядят шаблоны директорий ‘domain’ и ‘undomain’:
# cat /usr/share/calculate/templates/client/domain/.calculate_directory
# Calculate append=skip cl_client_domain_action==up&&os_remote_auth!=
# cat /usr/share/calculate/templates/client/undomain/.calculate_directory
# Calculate append=skip cl_client_domain_action==down
В общем-то ничего лишнего. Создадим такую же структуру на сервере. Обратите внимание, вы можете создавать директории непосредственно в клиенте, если у вас компьютер введен в домен и если есть права на доступ к директории /var/calculate/remote/templates
у пользователя ‘client’. Итак:
# mkdir -p /var/calculate/remote/templates/client/domain/
# mkdir -p /var/calculate/remote/templates/client/undomain/
# cp /usr/share/calculate/templates/client/.calculate_directory /var/calculate/remote/templates/client
# cp /usr/share/calculate/templates/client/domain/.calculate_directory /var/calculate/remote/templates/client/domain
# cp /usr/share/calculate/templates/client/undomain/.calculate_directory /var/calculate/remote/templates/client/undomain
По этим путям находятся шаблоны для настройки системы для входа в домен и выхода из него. Шаблоны разбиты по директориям, в зависимости от настраиваемого пакета. К слову, какой пакет вы настраиваете можно получить командой ‘equery b файл’, если конечно он не был создан впоследствии программой. Например:
equery b /var/lib/layman
[ Searching for file(s) /var/lib/layman in *... ]
app-portage/layman-1.3.3 (/var/lib/layman)
Тоже, но быстрее:
qfile /var/lib/layman/
app-portage/layman (/var/lib/layman)
Поскольку настраиваем мы layman, создадим директории для него:
mkdir /var/calculate/remote/templates/client/domain/layman
mkdir /var/calculate/remote/templates/client/undomain/layman
Создадим для них шаблон .calculate_directory
по аналогии с другими подобными шаблонами в директориях ‘domain’ и ‘undomain’ со следующим содержимым:
# Calculate belong()!=&&pkg(app-portage/layman)!= append=skip
Примечание. Функция belong() позволяет накладывать шаблон во время выполнения наложения всех шаблонов, либо при установке заданного пакета. Если имя пакета отсутствует, его имя будет взято из названия директории. Функция pkg() проверяет на то что пакет установлен в системе. Параметр ‘append’ пропускает директорию из путей, т.е. шаблоны будут накладываться не в ‘/layman’ а в ‘/’ (корень файловой системы).
Всё готово, осталось создать по два шаблона для модификации ‘overlays.xml’ и ‘layman.cfg’. Оба файла имею сложный формат. Первый в формате XML, который на данный момент не поддерживается утилитами. Второй формат также не поддерживается из-за сложного описания значений, как это выглядит в примере с опцией ‘overlays’. Поэтому воспользуемся форматом ‘patch’. Создадим шаблоны в директории /var/calculate/remote/templates/client/domain/layman
со следующим содержимым:
Шаблон overlays.xml:
# Calculate format=patch path=/var/lib/layman
<reg><source type="git">git://git.calculate.ru/dev/overlay.git</source></reg>
<text><source type="rsync">rsync://CDS/calculate-overlay</source></text>
Шаблон layman.cfg:
# Calculate format=patch path=/etc/layman comment=#
<reg>overlays\s+:\s+http://www.gentoo.org/proj/en/overlays/repositories.xml</reg>
<text>overlays : file:///var/lib/layman/overlays.xml</text>
Перейдем в директорию /var/calculate/remote/templates/client/undomain/layman
и создадим шаблоны настройки выхода из домена:
Шаблон overlays.xml:
# Calculate format=patch path=/var/lib/layman
<reg><source type="rsync">rsync://CDS/calculate-overlay</source></reg>
<text><source type="git">git://git.calculate.ru/dev/overlay.git</source></text>
Шаблон layman.cfg:
# Calculate format=patch path=/etc/layman comment=#
<reg>overlays\s+:\s+file:///var/lib/layman/overlays.xml</reg>
<text>overlays : http://www.gentoo.org/proj/en/overlays/repositories.xml</text>
Обратите внимание, мы изменили путь к оверлеям файла layman на файл ‘overlays.xml’ для того, чтобы при обновлении оверлея, layman не пытался обновить свой кэш оверлеев. Настройки прокси wget не спасут ситуацию, если компьютер не имеет прямого выхода в интернет. С другой стороны это лишнее.
Portage
Осталось совсем немного - добавить в /etc/make.conf
строчку:
SYNC="rsync://CDS/gentoo-portage"
Сделаем это так же шаблоном. Наш файл уже модифицируется при установке CLD 10.9 шаблоном /usr/share/calculate/templates/install/merge/portage/make.conf
. То что он находится в ‘merge’ - неправильно, т.к. формат у этого файла не поддерживается утилитами и он будет целиком переписываться при каждом обновлении пакета portage. Благо переменная ‘cl_autoupdate_set’ по умолчанию находится в положении ‘off’ в файле /etc/calculate/calculate2.env
и автообновления не произойдёт. В утилитах 2.2.1 путь к шаблону исправлен на /usr/share/calculate/templates/install/system/portage
. Таким образом файл настроится только раз во время установки системы.
Создадим структуру в шаблонах на сервере по аналогии с шаблонами пакета calculate-templates версии 2.2.0.0:
mkdir -p /var/calculate/remote/templates/install/merge/portage
cp /usr/share/calculate/templates/install/merge/.calculate_directory /var/calculate/remote/templates/install/merge
cp /usr/share/calculate/templates/install/merge/portage/.calculate_directory /var/calculate/remote/templates/install/merge/portage
Перейдем в директорию /var/calculate/remote/templates/install/merge/portage
и создадим шаблон для make.conf
:
Шаблон make.conf:
# Calculate comment=#
LINGUAS="en ru"
ACCEPT_LICENSE="*"
source /var/lib/layman/make.conf
MAKEOPTS="-j5"
EMERGE_DEFAULT_OPTS="--jobs=4"
SYNC="rsync://CDS/gentoo-portage"
Обратите внимание, я полностью скопировал make.conf в шаблон.
Наложим шаблоны и проверим содержимое файла /etc/make.conf
:
cl-template -l all
cat /etc/make.conf
Проверим настройки.
Выведем компьютер из домена и выполним eix-sync:
cl-client -r
eix-sync
Введем компьютер в домен и также выполним eix-sync:
cl-client CDS
eix-sync
Создание шаблона для make.conf позволит нам переносить настройки при обновлении системы из ISO образа, в случае если у вас на диске есть свободный раздел под обновление.