Теперь вам известно, какая потребуется машина и как предоставлять сервисы, но не как получить их самому. :-) В этом разделе описывается процесс ведения зеркала и поддержания его в актуальном состоянии, в том числе какие инструменты использовать и какие сайты выбирать в качестве источников для синхронизации.
Файлы, доступные по FTP, составляют большую часть зеркала. Они включают дистрибутивные наборы, необходимые для установки по сети, ветви (branches), в которых отражено текущее состояние исходных текстов, образы ISO для записи компакт-дисков с дистрибутивами для установки, образами «живых» файловых систем и пакетами, дерево портов, исходные дистрибутивы для сборки портов и кучу готовых пакетов. И, разумеется, все вышеописанное — для разных версий FreeBSD и различных архитектур.
Для выкачивания файлов вы можете использовать программу FTP-зеркалирования. Вот некоторые из наиболее часто использующихся:
ftp/mirror
ftp/ftpmirror
ftp/emirror
ftp/spegla
ftp/omi
ftp/wget
Ранее наиболее популярным вариантом был
ftp/mirror
, хотя из-за того, что
эта программа написана на perl(1), существуют различные
ограничения, в особенности при зеркалировании больших файловых
структур, таких как FreeBSD. Утверждается, впрочем, что в текущей
версии последняя проблема исправлена за счет дополнительного
алгоритма сравнения структуры каталогов.
Вообще говоря, протокол FTP не лучшим образом подходит для поддержки зеркала. Измененный файл передается целиком; кроме того, невозможно создание единого потока данных, который мог бы повысить эффективность передачи за счет большого TCP-окна.
Более эффективным будет синхронизация FTP-области при помощи
rsync. Для этого следует установить
пакет net/rsync
, который был
описан в разделе Раздел 2.4.2, «Rsync (необязательный сервис для FTP зеркала)».
Поскольку доступ по протоколу rsync не
является обязательным, выбранный вами сайт может его не
поддерживать. Возможно, вам придется немного поискать в сетевой
окрестности зеркало, поддерживающее
rsync.
Поскольку от количества клиентов rsync ощутимо зависит загрузка сервера, большинство администраторов вводят ограничения доступа. Для поддержания зеркала вам следует связаться с администратором сайта, с которым вы будете синхронизироваться, для уточнения локальных правил и, возможно, для внесения в них исключения для вас (поскольку вы также поддерживаете зеркало).
Строка для синхронизации FreeBSD по rsync выглядит примерно так:
%
rsync -vaz --delete ftp4.de.FreeBSD.org::FreeBSD/ /pub/FreeBSD/
Загляните в документацию по rsync, также доступную по адресу http://rsync.samba.org/ за дополнительной информацией по различным опциям rsync. Обратите внимание, что в случае синхронизации модуля целиком (а не отдельного каталога) необходимо явно указать результирующий каталог, потому что каталог с именем модуля (в данном случае "FreeBSD") не создается. Для поддержания актуальности вам потребуется создать скрипт для запуска подобной команды из cron(8).
Немногие сайты, в первую очередь центральный
ftp-master.FreeBSD.org
предоставляют
для синхронизации FTP-области доступ по протоколу
CVSup. Вам потребуется клиент
CVSup, предпочтительно из пакета
net/cvsup
(см. также
Раздел 2.4.4, «CVSup (желателен для зеркал репозитория CVS)»).
Пример конфигурационного файла (supfile
) для
синхронизации с
ftp-master.FreeBSD.org
:
Судя по всему, синхронизация при помощи CVSup — лучший по эффективности способ поддержки зеркала, однако он доступен лишь с небольшого числа сайтов.
Прочтите документацию по CVSup,
например, cvsup(1), и обратите внимание на опцию
-s
. Она может уменьшить объем операций
ввода-вывода, предполагая, что записанная информация о
каждом файле корректна.
Существует несколько способов синхронизации CVS репозитория. CVSup наиболее общий метод.
Программа CVSup немного описана в (Раздел 2.4.4, «CVSup (желателен для зеркал репозитория CVS)» и Раздел 3.1.3, «При помощи CVSup»).
Настроить CVSup зеркало очень просто.
Установка net/cvsup-mirror
проверит, что все нужные программы установлены и затем соберет всю
необходимую информацию для конфигурирования зеркала.
Не забудьте почитать полезную подсказку здесь.
Использование методов, отличных от
CVSup, не рекомендуется. Тем не менее,
мы кратко упомянем их. Поскольку большая часть зеркал дает доступ к
репозиторию CVS в числе прочих файлов, доступных по FTP, по пути
/pub/FreeBSD/development/FreeBSD-CVS
,
могут быть использованы:
FTP
Rsync
HTTP
AnonCVS не может использоваться для зеркалирования CVS репозитория, так как CVS не разрешает сам доступ к репозиторию, а только к извлечённым версиям модулей.
Лучшим способом будет извлечение (check out) из репозитория CVS модуля www. При условии наличия у вас копии репозитория, все, что для этого потребуется — выполнить команду
%
cvs -d /home/ncvs co www
и сформировать задание для cron, которое будет
регулярно выполнять операцию cvs up -d -P
,
например, каждый раз после обновления копии репозитория.
Разумеется, файлы должны находиться в иерархии, доступной для
публичного веб-доступа. Мы сознательно не будем обсуждать здесь
процесс установки и конфигурации веб-сервера для этих целей.
Если у вас нет локальной копии репозитория, можно использовать
CVSup для синхронизации копии веб-страниц.
Пример конфигурации можно найти в файле
/usr/share/examples/cvsup/www-supfile
.
Приведем его здесь:
Использование пакета ftp/wget
или иных инструментов для создания веб-зеркал не рекомендуется.
Поскольку многие веб-страницы ссылаются на документацию, хорошей идеей является поддержка зеркала документации FreeBSD совместно с прочими зеркалами. Надо отметить, что этот процесс не столь тривиален, как поддержка зеркала веб-страниц самих по себе.
Для начала вы должны создать копию исходных текстов документации (как и во многих других случаях, для этого предпочтителен CVSup). Вот пример файла конфигурации:
Затем, вам потребуется несколько пакетов. К счастью,
специально для этого существует мета-порт
textproc/docproj
.
Также, необходимо установить некоторые переменные окружения,
например SGML_CATALOG_FILES
, и переменные
в файле /etc/make.conf
, главным образом
переменную DOC_LANG
(используйте файл
/usr/share/examples/make.conf
как шаблон).
После этого можно выдать команду make
в главном каталоге документации (по умолчанию это
/usr/share/doc
). Как и прежде, эти каталоги
должны быть доступны для вашего веб-сервера (проверьте, что ссылки
ведут в нужные места).
Процесс подготовки и построения документации, а также многие сопутствующие вопросы, подробно описан в документе Учебник по Проекту Документирования FreeBSD. Прочтите этот документ, в особенности если у вас возникли проблемы со сборкой стандартного комплекта документации.
Каждое зеркало должно регулярно обновляться. Вам потребуется какой-то набор скриптов, выполняемых посредством cron(8). Поскольку каждый администратор, как правило, пишет такие скрипты сам и на свой лад, мы не можем выдать конкретных указаний. Общие же советы выглядят так:
Создайте скрипт с командой, которая запустит нужное приложение
для обновления зеркала. Рекомендуем использовать скрипт на языке
обычного /bin/sh
.
Добавьте команд перенаправления вывода, чтобы записать диагностику работы в файл.
Попробуйте, как ваш скрипт работает. По завершении проверьте логи.
При помощи утилиты crontab(1) добавьте ваш скрипт в таблицу регулярных заданий crontab(5) соответствующего пользователя. Это должен быть пользователь, отличный от пользователя FTP-даемона, чтобы файлы в FTP-области без атрибута "чтение для всех" не были доступны анонимным FTP-пользователям. Данное свойство используется для тестирования перед выходом новых релизов, для того чтобы удостовериться, что все официальные зеркала содержат все необходимые файлы к моменту официального объявления релиза.
Некоторые рекомендуемые установки частоты обновления:
FTP-набор: раз в сутки
репозиторий CVS: раз в час
WWW-страницы: раз в сутки
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.