3. Как вести зеркало FreeBSD

Теперь вам известно, какая потребуется машина и как предоставлять сервисы, но не как получить их самому. :-) В этом разделе описывается процесс ведения зеркала и поддержания его в актуальном состоянии, в том числе какие инструменты использовать и какие сайты выбирать в качестве источников для синхронизации.

3.1. FTP

Файлы, доступные по FTP, составляют большую часть зеркала. Они включают дистрибутивные наборы, необходимые для установки по сети, ветви (branches), в которых отражено текущее состояние исходных текстов, образы ISO для записи компакт-дисков с дистрибутивами для установки, образами ''живых'' файловых систем и пакетами, дерево портов, исходные дистрибутивы для сборки портов и кучу готовых пакетов. И, разумеется, все вышеописанное — для разных версий FreeBSD и различных архитектур.

3.1.1. При помощи программ для FTP-зеркалирования

Для выкачивания файлов вы можете использовать программу FTP-зеркалирования. Вот некоторые из наиболее часто использующихся:

Ранее наиболее популярным вариантом был ftp/mirror, хотя из-за того, что эта программа написана на perl(1), существуют различные ограничения, в особенности при зеркалировании больших файловых структур, таких как FreeBSD. Утверждается, впрочем, что в текущей версии последняя проблема исправлена за счет дополнительного алгоритма сравнения структуры каталогов.

Вообще говоря, протокол FTP не лучшим образом подходит для поддержки зеркала. Измененный файл передается целиком; кроме того, невозможно создание единого потока данных, который мог бы повысить эффективность передачи за счет большого TCP-окна.

3.1.2. При помощи rsync

Более эффективным будет синхронизация FTP-области при помощи rsync. Для этого следует установить пакет net/rsync, который был описан в разделе Разд. 2.4.2. Поскольку доступ по протоколу rsync не является обязательным, выбранный вами сайт может его не поддерживать. Возможно, вам придется немного поискать в сетевой окрестности зеркало, поддерживающее rsync.

Замечание: Поскольку от количества клиентов rsync ощутимо зависит загрузка сервера, большинство администраторов вводят ограничения доступа. Для поддержания зеркала вам следует связаться с администратором сайта, с которым вы будете синхронизироваться, для уточнения локальных правил и, возможно, для внесения в них исключения для вас (поскольку вы также поддерживаете зеркало).

Строка для синхронизации FreeBSD по rsync выглядит примерно так:

% rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/

Загляните в документацию по rsync, также доступную по адресу http://rsync.samba.org/ за дополнительной информацией по различным опциям rsync. Обратите внимание, что в случае синхронизации модуля целиком (а не отдельного каталога) необходимо явно указать результирующий каталог, потому что каталог с именем модуля (в данном случае "FreeBSD") не создается. Для поддержания актуальности вам потребуется создать скрипт для запуска подобной команды из cron(8).

3.1.3. При помощи CVSup

Немногие сайты, в первую очередь центральный ftp-master.FreeBSD.org предоставляют для синхронизации FTP-области доступ по протоколу CVSup. Вам потребуется клиент CVSup, предпочтительно из пакета net/cvsup (см. также Разд. 2.4.4). Пример конфигурационного файла (supfile) для синхронизации с ftp-master.FreeBSD.org:

#
# FreeBSD archive supfile from master server
#
*default host=ftp-master.FreeBSD.org
*default base=/usr
*default prefix=/pub
#*default release=all
*default delete use-rel-suffix
*default umask=002

# If your network link is a T1 or faster, comment out the following line.
#*default compress

FreeBSD-archive release=all preserve

Судя по всему, синхронизация при помощи CVSup — лучший по эффективности способ поддержки зеркала, однако он доступен лишь с небольшого числа сайтов.

Замечание: Прочтите документацию по CVSup, например, cvsup(1), и обратите внимание на опцию -s. Она может уменьшить объем операций ввода-вывода, предполагая, что записанная информация о каждом файле корректна.

3.2. Зеркалирование CVS репозитория

Существует несколько способов синхронизации CVS репозитория. CVSup наиболее общий метод.

3.2.1. Использование CVSup

Программа CVSup немного описана в (Разд. 2.4.4 и Разд. 3.1.3).

Настроить CVSup зеркало очень просто. Установка net/cvsup-mirror проверит, что все нужные программы установлены и затем соберет всю необходимую информацию для конфигурирования зеркала.

Замечание: Не забудьте почитать полезную подсказку здесь.

3.2.2. Другие методы

Использование методов, отличных от CVSup, не рекомендуется. Тем не менее, мы кратко упомянем их. Поскольку большая часть зеркал дает доступ к репозиторию CVS в числе прочих файлов, доступных по FTP, по пути /pub/FreeBSD/development/FreeBSD-CVS, могут быть использованы:

  • FTP

  • Rsync

  • HTTP

Важно: AnonCVS не может использоваться для зеркалирования CVS репозитория, так как CVS не разрешает сам доступ к репозиторию, а только к извлечённым версиям модулей.

3.3. Зеркалирование страниц WWW

Лучшим способом будет извлечение (check out) из репозитория CVS модуля www. При условии наличия у вас копии репозитория, все, что для этого потребуется — выполнить команду

% cvs -d /home/ncvs co www

и сформировать задание для cron, которое будет регулярно выполнять операцию cvs up -d -P, например, каждый раз после обновления копии репозитория. Разумеется, файлы должны находиться в иерархии, доступной для публичного веб-доступа. Мы сознательно не будем обсуждать здесь процесс установки и конфигурации веб-сервера для этих целей.

Если у вас нет локальной копии репозитория, можно использовать CVSup для синхронизации копии веб-страниц. Пример конфигурации можно найти в файле /usr/share/examples/cvsup/www-supfile. Приведем его здесь:

#
# WWW module supfile for FreeBSD
#
*default host=cvsup3.de.FreeBSD.org
*default base=/usr
*default prefix=/usr/local
*default release=cvs tag=.
*default delete use-rel-suffix

# If your network link is a T1 or faster, comment out the following line.
*default compress

# This collection retrieves the www/ tree of the FreeBSD repository
www

Использование пакета ftp/wget или иных инструментов для создания веб-зеркал не рекомендуется.

3.3.1. Зеркала документации FreeBSD

Поскольку многие веб-страницы ссылаются на документацию, хорошей идеей является поддержка зеркала документации FreeBSD совместно с прочими зеркалами. Надо отметить, что этот процесс не столь тривиален, как поддержка зеркала веб-страниц самих по себе.

Для начала вы должны создать копию исходных текстов документации (как и во многих других случаях, для этого предпочтителен CVSup). Вот пример файла конфигурации:

#
# FreeBSD documentation supfile
#
*default host=cvsup3.de.FreeBSD.org
*default base=/usr
*default prefix=/usr/share
*default release=cvs tag=.
*default delete use-rel-suffix

# If your network link is a T1 or faster, comment out the following line.
#*default compress

# This will retrieve the entire doc branch of the FreeBSD repository.
# This includes the handbook, FAQ, and translations thereof.
doc-all

Затем, вам потребуется несколько пакетов. К счастью, специально для этого существует мета-порт textproc/docproj. Также, необходимо установить некоторые переменные окружения, например SGML_CATALOG_FILES, и переменные в файле /etc/make.conf, главным образом переменную DOC_LANG (используйте файл /usr/share/examples/make.conf как шаблон). После этого можно выдать команду make в главном каталоге документации (по умолчанию это /usr/share/doc). Как и прежде, эти каталоги должны быть доступны для вашего веб-сервера (проверьте, что ссылки ведут в нужные места).

Важно: Процесс подготовки и построения документации, а также многие сопутствующие вопросы, подробно описан в документе Учебник по Проекту Документирования FreeBSD. Прочтите этот документ, в особенности если у вас возникли проблемы со сборкой стандартного комплекта документации.

3.4. Как часто синхронизироваться?

Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то набор скриптов, выполняемых посредством cron(8). Поскольку каждый администратор, как правило, пишет такие скрипты сам и на свой лад, мы не можем выдать конкретных указаний. Общие же советы выглядят так:

  1. Создайте скрипт с командой, которая запустит нужное приложение для обновления зеркала. Рекомендуем использовать скрипт на языке обычного /bin/sh.

  2. Добавьте команд перенаправления вывода, чтобы записать диагностику работы в файл.

  3. Попробуйте, как ваш скрипт работает. По завершении проверьте логи.

  4. При помощи утилиты crontab(1) добавьте ваш скрипт в таблицу регулярных заданий crontab(5) соответствующего пользователя. Это должен быть пользователь, отличный от пользователя FTP-даемона, чтобы файлы в FTP-области без атрибута "чтение для всех" не были доступны анонимным FTP-пользователям. Данное свойство используется для тестирования перед выходом новых релизов, для того чтобы удостовериться, что все официальные зеркала содержат все необходимые файлы к моменту официального объявления релиза.

Некоторые рекомендуемые установки частоты обновления:

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.