Версия для печати

Архив документации на OpenNet.ru / Раздел "Руководства по FreeBSD на русском" (Многостраничная версия)

Настройка хранилища CVS - подход FreeBSD

Stijn Hoop

$FreeBSD$

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

[ Split HTML / Single HTML ]

1 Введение

Большинство программных проектов с открытым кодом используют CVS в качестве системы управления исходным кодом. Хотя CVS весьма хороша в этом качестве, у ней есть свои неудобства и недостатки. Одним из них является то, что совместное использование дерева исходных текстов с другими разработчиками может быстро привести к кошмарным проблемам при администрировании, особенно если кто-то захочет защитить части дерева от общедоступности.

FreeBSD является одним из проектов, использующим CVS. Здесь также имеет большое количество разработчиков, разбросанных по всему миру. Они разработали некоторые скрипты, облегчающие управление хранилищем. Недавно эти скрипты были пересмотрены и приведены в порядок Джозефом Карсаузером (Joseph Karthauser), в целях облегчения их использования в других проектах. Эта статья описывает один из методов использования новых скриптов.

Чтобы извлечь максимум информации из этой статьи, вы должны владеть основными методами работы с CVS.

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

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


Настройка хранилища CVS - подход FreeBSD

Stijn Hoop

$FreeBSD$

FreeBSD is a registered trademark of Wind River Systems, Inc. This is expected to change soon.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the ``™'' or the ``®'' symbol.

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

[ Split HTML / Single HTML ]

1 Введение

Большинство программных проектов с открытым кодом используют CVS в качестве системы управления исходным кодом. Хотя CVS весьма хороша в этом качестве, у ней есть свои неудобства и недостатки. Одним из них является то, что совместное использование дерева исходных текстов с другими разработчиками может быстро привести к кошмарным проблемам при администрировании, особенно если кто-то захочет защитить части дерева от общедоступности.

FreeBSD является одним из проектов, использующим CVS. Здесь также имеет большое количество разработчиков, разбросанных по всему миру. Они разработали некоторые скрипты, облегчающие управление хранилищем. Недавно эти скрипты были пересмотрены и приведены в порядок Джозефом Карсаузером (Joseph Karthauser), в целях облегчения их использования в других проектах. Эта статья описывает один из методов использования новых скриптов.

Чтобы извлечь максимум информации из этой статьи, вы должны владеть основными методами работы с CVS.


2 Первоначальная настройка

Warning: Наверное, лучше сначала выполнить эту процедуру с пустым тестовым хранилищем, чтобы понять все последствия ваших действий. Как обычно в таких случаях, у вас должны иметься свежие читаемые резервные копии!


2.1 Инициализация хранилища

Первым делом при настройке нового хранилища является указание CVS на его инициализацию:

% cvs -d path-to-repository init
Это указывает CVS на создание служебного каталога CVSROOT, в котором выполняется вся настройка.


2.2 Группа пользователей хранилища

Теперь мы создадим группу, которая будет владеть хранилищем. В этой группе должны присутствовать все коммиттеры, для того, чтобы они могли писать в хранилище. Для этой группы мы примем стандартное для FreeBSD название ncvs.

# pw groupadd ncvs
Затем вы должны при помощи команды chown(8) сменить владельца и группу для только что добавленного каталога:
# chown -R :ncvs path-to-your-repository
Это нужно для того, чтобы никто не мог записывать в хранилище, не являясь членом группы.


2.3 Получение исходных текстов

Теперь вам нужно получить каталог CVSROOT из хранилища FreeBSD. Проще всего это делается извлечением с анонимного зеркала CVS FreeBSD. Обратитесь к соответствующей главе Руководства для получения дополнительной информации. Мы будем полагать, что исходные тексты хранятся в подкаталоге CVSROOT-freebsd текущего каталога.


2.4 Копирование скриптов FreeBSD

Теперь мы скопируем исходные тексты FreeBSD из CVSROOT в наше хранилище. Если вы знакомы с CVS, то для вас может иметь смысл попытаться импортировать скрипты, чтобы облегчить синхронизацию с последующими версиями. Однако при этом оказывается, что CVS имеет в этой области недостаток: при импортировании исходных текстов в каталог CVSROOT она не будет обновлять необходимые административные файлы. Чтобы в этом убедиться, вам нужно проверить каждый файл после импортирования, при этом смысл cvs import теряется. Поэтому рекомендуемым методом является простое копирование скриптов.

Не имеет значения, как вы относитесь к предыдущему параграфу--результат один и тот же. Просто поместите ваш CVSROOT и скопируйте файлы FreeBSD поверх ваших локальных (неизмененных) копий:

% cvs -d path-to-your-repository checkout CVSROOT
% cd CVSROOT
% cp ../CVSROOT-freebsd/* .
% cvs add *
Заметим, что вы, скорее всего, получите несколько предупреждений о том, что некоторые каталоги не были скопированы; это нормально, вам они не нужны.


2.5 Скрипты

Теперь у вас есть рабочий каталог и точная копия скриптов, которые используются в проекте FreeBSD для работы с хранилищем. Далее следует краткое описание назначения каждого файла.


2.6 Настройка скриптов

Следующим шагом является настройка скриптов так, чтобы они работали в ваших условиях. Вы должны просмотреть все файлы в каталоге и выполнить ваши настройки. В частности, вы может потребоваться отредактировать следующие файлы:

  1. Если вы не хотите использовать специфичные для FreeBSD возможности скриптов, то вы можете без последствий удалить файл access:

    % cvs rm -f access
    


  2. Отредактируйте avail так, чтобы он содержал различные каталоги хранилища, доступом к которым вы хотите управлять. Обязательно сохраните строчку avail||CVSROOT, иначе вы заблокируете сами себя на следующем шаге.

    Другими параметрами, которые вы можете добавить в этот файл, являются группы коммиттеров. По умолчанию FreeBSD использует файл access для перечисления всех коммиттеров, но вы можете использовать любой файл. Вы можете также добавить группы, если хотите (синтаксис описан в начале файла cvs_acls.pl).

  3. Отредактируйте файл cfg_local.pm так, чтобы он содержал параметры, которые вы хотите. В частности, вы должны взглянуть на такие пункты настройки:

    • %TEMPLATE_HEADERS - они обрабатываются скриптами ведения протокола, и вставляются ниже почтового сообщения, если они присутствуют и не являются пустыми в сообщении при коммите. Вы можете, наверное, удалить строки PR и MFC after. И, конечно, вы можете добавить свои собственные.

    • $MAIL_BRANCH_HDR - если вы хотите в каждое сообщение при коммите вставлять заголовок, описывающий ветку, в которую был выполнен коммит, задайте это в соответствии с вашим окружением. Или оставьте это пустым, если не хотите иметь такой заголовок.

    • @COMMIT_HOSTS - задайте здесь список хостов, с которых можно выполнять коммиты.

    • $MAILADDRS - задайте здесь адрес администратора или списка, в который должны направляться почтовые сообщения при коммите.

    • @LOG_FILE_MAP - измените этот массив по своему усмотрению - каждое регулярное выражение сравнивается с каталогом коммита, и протокольное сообщение при коммите сохраняется в подкаталоге commitlogs в указанном файле.

    • $COMMITCHECK_EXTRA - если вы не хотите использовать специфичные для FreeBSD проверки доступа, то вы должны удалить определения $COMMITCHECK_EXTRA из этого файла.

    Note: Изменение параметра $IDHEADER гарантированно работает только на платформах FreeBSD; это зависит от специфичных для FreeBSD модификаций в CVS.

    Вы можете проверить cfg.pm на предмет того, какие другие параметры могут быть изменены, но перечисленное выше является достаточным подмножеством.

  4. Отредактируйте exclude для удаления специфичных для FreeBSD записей (например, всех строк, которые начинаются с ^ports/ и так далее). Более того, закомментируйте строки, начинающиеся с ^CVSROOT/, и добавьте одну строку только с ^CVSROOT/. После установки обработчика (wrapper) вы можете добавить свои заголовки к файлам в каталоге CVSROOT и восстановить эти строки, но теперь они будут иметь смысл, только когда вы попытаетесь выполнить коммит позже.

  5. Отредактируйте файл modules и удалите всё, что относится к FreeBSD. Добавьте собственные модули, если хотите.

  6. Note: Этот шаг необходим, если только вы задали значение для $IDHEADER в cfg_local.pm (что работает только при использовании модифицированной во FreeBSD версии CVS).

    Отредактируйте файл options так, чтобы он соответствовал метке, которую вы задали в cfg_local.pm. Глобальный поиск и замена FreeBSD на вашу метку должны сработать.

  7. Отредактируйте файл rcstemplate так, чтобы он содержал те же самые ключевые слова, что заданы в cfg_local.pm.

  8. Опционально удалите проверки FreeBSD из tagcheck. Вы можете просто добавить exit 0 в начало файла, чтобы запретить все проверки при установке метки.

  9. Последним действием, которое нужно сделать перед тем, как закончить работу, является проверка того, что протоколы коммитов могут сохраняться. По умолчанию они сохраняются в хранилище, в подкаталоге commitlogs каталога CVSROOT. Этот каталог должен быть создан, так что выполните следующее:

    % mkdir commitlogs
    % cvs add commitlogs
    


А теперь, после тщательной проверки, вы должны выполнить коммит ваших изменений. Убедитесь, что вы дали сами себе доступ к каталогу CVSROOT в вашем avail до того, как его делать, так как в противном случае вы заблокируете сами себя. Так что убедитесь, что всё именно так, как вы и предполагали, а затем выполните следующее:

% cvs commit -m '- Initial FreeBSD scripts commit'



2.7 Тестирование настройки

Вы готовы к первому тестированию: принудительному коммиту в файл avail, чтобы убедиться, что всё работает так, как ожидалось.

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' avail
Если всё работает, поздравляем! Теперь у вас имеется работающая настройка скриптов FreeBSD для вашего хранилища. Если CVS всё ещё о чём-то сообщает, вернитесь и проверьте, все ли вышеупомянутые шаги были выполнены правильно.


3 Специфичная для FreeBSD настройка

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

Если вашему хранилищу это тоже нужно, то шаги для выполнения этого описаны ниже. Но сначала обзор связанных с этим файлов.


3.1 Файлы, используемые в настройке FreeBSD




3.2 Процедура

  1. Отредактируйте файл access так, чтобы он содержал только ваше имя пользователя.

  2. Отредактируйте cvswrap.c так, чтобы он содержал правильный маршрут для вашей настройки. Это определено в макросе по имени ACCESS. Вы должны также изменить расположение реального выполнимого файла cvs, если оно не подходит к вашей ситуации. Для стандартного cvswrap.c предполагается, что он заменит общесистемную команду cvs, которая будет перемещена в /usr/bin/ncvs.

    В моём экземпляре cvswrap.c помещено следующее:

    #define ACCESS "/local/cvsroot/CVSROOT/access"
    #define REALCVS "/usr/bin/ncvs"
    
  3. Следующим шагом является установка обработчика для того, чтобы проверить правильность установки группы при выполнении коммита. Исходные тексты для этого размещены в cvswrap.c из вашего CVSROOT.

    Откомпилируйте исходные тексты, которые вы редактировали для включения правильных путей:

    % cc -o cvs cvswrap.c
    
    А затем установите их (для этого вы должны быть пользователем root):
    # mv /usr/bin/cvs /usr/bin/ncvs
    # mv cvs /usr/bin/cvs
    # chown root:ncvs /usr/bin/cvs /usr/bin/ncvs
    # chmod o-rx /usr/bin/ncvs
    # chmod u-w,g+s /usr/bin/cvs
    
    При этом обработчик будет установлен по умолчанию как команда cvs, что гарантирует всеми, использующими хранилище, получение правильных уровней доступа.

  4. Теперь вы можете убрать всех из вашей группы хранилища. Всё управление доступом выполняется вашим обработчиком, и он будет устанавливать правильную группу для доступа.


3.3 Тестирование настройки

Теперь ваш обработчик должен быть установлен. Конечно, вы можете протестировать его, выполнив принудительный коммит в файл access:

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' access
И снова, если это не сработает, проверьте, правильно ли были выполнены все вышеперечисленные шаги.


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

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


Prev  

3 Специфичная для FreeBSD настройка

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

Если вашему хранилищу это тоже нужно, то шаги для выполнения этого описаны ниже. Но сначала обзор связанных с этим файлов.

3.1 Файлы, используемые в настройке FreeBSD



3.2 Процедура

  1. Отредактируйте файл access так, чтобы он содержал только ваше имя пользователя.

  2. Отредактируйте cvswrap.c так, чтобы он содержал правильный маршрут для вашей настройки. Это определено в макросе по имени ACCESS. Вы должны также изменить расположение реального выполнимого файла cvs, если оно не подходит к вашей ситуации. Для стандартного cvswrap.c предполагается, что он заменит общесистемную команду cvs, которая будет перемещена в /usr/bin/ncvs.

    В моём экземпляре cvswrap.c помещено следующее:

    #define ACCESS "/local/cvsroot/CVSROOT/access"
    #define REALCVS "/usr/bin/ncvs"
    
  3. Следующим шагом является установка обработчика для того, чтобы проверить правильность установки группы при выполнении коммита. Исходные тексты для этого размещены в cvswrap.c из вашего CVSROOT.

    Откомпилируйте исходные тексты, которые вы редактировали для включения правильных путей:

    % cc -o cvs cvswrap.c
    
    А затем установите их (для этого вы должны быть пользователем root):
    # mv /usr/bin/cvs /usr/bin/ncvs
    # mv cvs /usr/bin/cvs
    # chown root:ncvs /usr/bin/cvs /usr/bin/ncvs
    # chmod o-rx /usr/bin/ncvs
    # chmod u-w,g+s /usr/bin/cvs
    
    При этом обработчик будет установлен по умолчанию как команда cvs, что гарантирует всеми, использующими хранилище, получение правильных уровней доступа.

  4. Теперь вы можете убрать всех из вашей группы хранилища. Всё управление доступом выполняется вашим обработчиком, и он будет устанавливать правильную группу для доступа.

3.3 Тестирование настройки

Теперь ваш обработчик должен быть установлен. Конечно, вы можете протестировать его, выполнив принудительный коммит в файл access:

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' access
И снова, если это не сработает, проверьте, правильно ли были выполнены все вышеперечисленные шаги.

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

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


Prev Next

2 Первоначальная настройка

Warning: Наверное, лучше сначала выполнить эту процедуру с пустым тестовым хранилищем, чтобы понять все последствия ваших действий. Как обычно в таких случаях, у вас должны иметься свежие читаемые резервные копии!

2.1 Инициализация хранилища

Первым делом при настройке нового хранилища является указание CVS на его инициализацию:

% cvs -d path-to-repository init
Это указывает CVS на создание служебного каталога CVSROOT, в котором выполняется вся настройка.

2.2 Группа пользователей хранилища

Теперь мы создадим группу, которая будет владеть хранилищем. В этой группе должны присутствовать все коммиттеры, для того, чтобы они могли писать в хранилище. Для этой группы мы примем стандартное для FreeBSD название ncvs.

# pw groupadd ncvs
Затем вы должны при помощи команды chown(8) сменить владельца и группу для только что добавленного каталога:
# chown -R :ncvs path-to-your-repository
Это нужно для того, чтобы никто не мог записывать в хранилище, не являясь членом группы.

2.3 Получение исходных текстов

Теперь вам нужно получить каталог CVSROOT из хранилища FreeBSD. Проще всего это делается извлечением с анонимного зеркала CVS FreeBSD. Обратитесь к соответствующей главе Руководства для получения дополнительной информации. Мы будем полагать, что исходные тексты хранятся в подкаталоге CVSROOT-freebsd текущего каталога.

2.4 Копирование скриптов FreeBSD

Теперь мы скопируем исходные тексты FreeBSD из CVSROOT в наше хранилище. Если вы знакомы с CVS, то для вас может иметь смысл попытаться импортировать скрипты, чтобы облегчить синхронизацию с последующими версиями. Однако при этом оказывается, что CVS имеет в этой области недостаток: при импортировании исходных текстов в каталог CVSROOT она не будет обновлять необходимые административные файлы. Чтобы в этом убедиться, вам нужно проверить каждый файл после импортирования, при этом смысл cvs import теряется. Поэтому рекомендуемым методом является простое копирование скриптов.

Не имеет значения, как вы относитесь к предыдущему параграфу--результат один и тот же. Просто поместите ваш CVSROOT и скопируйте файлы FreeBSD поверх ваших локальных (неизмененных) копий:

% cvs -d path-to-your-repository checkout CVSROOT
% cd CVSROOT
% cp ../CVSROOT-freebsd/* .
% cvs add *
Заметим, что вы, скорее всего, получите несколько предупреждений о том, что некоторые каталоги не были скопированы; это нормально, вам они не нужны.

2.5 Скрипты

Теперь у вас есть рабочий каталог и точная копия скриптов, которые используются в проекте FreeBSD для работы с хранилищем. Далее следует краткое описание назначения каждого файла.

2.6 Настройка скриптов

Следующим шагом является настройка скриптов так, чтобы они работали в ваших условиях. Вы должны просмотреть все файлы в каталоге и выполнить ваши настройки. В частности, вы может потребоваться отредактировать следующие файлы:

  1. Если вы не хотите использовать специфичные для FreeBSD возможности скриптов, то вы можете без последствий удалить файл access:

    % cvs rm -f access
    


  2. Отредактируйте avail так, чтобы он содержал различные каталоги хранилища, доступом к которым вы хотите управлять. Обязательно сохраните строчку avail||CVSROOT, иначе вы заблокируете сами себя на следующем шаге.

    Другими параметрами, которые вы можете добавить в этот файл, являются группы коммиттеров. По умолчанию FreeBSD использует файл access для перечисления всех коммиттеров, но вы можете использовать любой файл. Вы можете также добавить группы, если хотите (синтаксис описан в начале файла cvs_acls.pl).

  3. Отредактируйте файл cfg_local.pm так, чтобы он содержал параметры, которые вы хотите. В частности, вы должны взглянуть на такие пункты настройки:

    • %TEMPLATE_HEADERS - они обрабатываются скриптами ведения протокола, и вставляются ниже почтового сообщения, если они присутствуют и не являются пустыми в сообщении при коммите. Вы можете, наверное, удалить строки PR и MFC after. И, конечно, вы можете добавить свои собственные.

    • $MAIL_BRANCH_HDR - если вы хотите в каждое сообщение при коммите вставлять заголовок, описывающий ветку, в которую был выполнен коммит, задайте это в соответствии с вашим окружением. Или оставьте это пустым, если не хотите иметь такой заголовок.

    • @COMMIT_HOSTS - задайте здесь список хостов, с которых можно выполнять коммиты.

    • $MAILADDRS - задайте здесь адрес администратора или списка, в который должны направляться почтовые сообщения при коммите.

    • @LOG_FILE_MAP - измените этот массив по своему усмотрению - каждое регулярное выражение сравнивается с каталогом коммита, и протокольное сообщение при коммите сохраняется в подкаталоге commitlogs в указанном файле.

    • $COMMITCHECK_EXTRA - если вы не хотите использовать специфичные для FreeBSD проверки доступа, то вы должны удалить определения $COMMITCHECK_EXTRA из этого файла.

    Note: Изменение параметра $IDHEADER гарантированно работает только на платформах FreeBSD; это зависит от специфичных для FreeBSD модификаций в CVS.

    Вы можете проверить cfg.pm на предмет того, какие другие параметры могут быть изменены, но перечисленное выше является достаточным подмножеством.

  4. Отредактируйте exclude для удаления специфичных для FreeBSD записей (например, всех строк, которые начинаются с ^ports/ и так далее). Более того, закомментируйте строки, начинающиеся с ^CVSROOT/, и добавьте одну строку только с ^CVSROOT/. После установки обработчика (wrapper) вы можете добавить свои заголовки к файлам в каталоге CVSROOT и восстановить эти строки, но теперь они будут иметь смысл, только когда вы попытаетесь выполнить коммит позже.

  5. Отредактируйте файл modules и удалите всё, что относится к FreeBSD. Добавьте собственные модули, если хотите.

  6. Note: Этот шаг необходим, если только вы задали значение для $IDHEADER в cfg_local.pm (что работает только при использовании модифицированной во FreeBSD версии CVS).

    Отредактируйте файл options так, чтобы он соответствовал метке, которую вы задали в cfg_local.pm. Глобальный поиск и замена FreeBSD на вашу метку должны сработать.

  7. Отредактируйте файл rcstemplate так, чтобы он содержал те же самые ключевые слова, что заданы в cfg_local.pm.

  8. Опционально удалите проверки FreeBSD из tagcheck. Вы можете просто добавить exit 0 в начало файла, чтобы запретить все проверки при установке метки.

  9. Последним действием, которое нужно сделать перед тем, как закончить работу, является проверка того, что протоколы коммитов могут сохраняться. По умолчанию они сохраняются в хранилище, в подкаталоге commitlogs каталога CVSROOT. Этот каталог должен быть создан, так что выполните следующее:

    % mkdir commitlogs
    % cvs add commitlogs
    


А теперь, после тщательной проверки, вы должны выполнить коммит ваших изменений. Убедитесь, что вы дали сами себе доступ к каталогу CVSROOT в вашем avail до того, как его делать, так как в противном случае вы заблокируете сами себя. Так что убедитесь, что всё именно так, как вы и предполагали, а затем выполните следующее:

% cvs commit -m '- Initial FreeBSD scripts commit'


2.7 Тестирование настройки

Вы готовы к первому тестированию: принудительному коммиту в файл avail, чтобы убедиться, что всё работает так, как ожидалось.

% cvs commit -f -m 'Forced commit to test the new CVSROOT scripts' avail
Если всё работает, поздравляем! Теперь у вас имеется работающая настройка скриптов FreeBSD для вашего хранилища. Если CVS всё ещё о чём-то сообщает, вернитесь и проверьте, все ли вышеупомянутые шаги были выполнены правильно.

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

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