Add releng-packages translation, in sync with rev 1.17

Submitted by:	gad -at- FRDP
Obtained from:	The FreeBSD Russian Documentation Project
This commit is contained in:
Dmitry Morozovsky 2005-07-24 11:16:51 +00:00
parent 9d4ac92750
commit c061824a54
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=25233
4 changed files with 460 additions and 1 deletions
ru_RU.KOI8-R/articles

View file

@ -41,7 +41,7 @@ SUBDIR+= problem-reports
SUBDIR+= pxe
SUBDIR+= relaydelay
SUBDIR+= releng
#SUBDIR+= releng-packages
SUBDIR+= releng-packages
#SUBDIR+= serial-uart
SUBDIR+= solid-state
#SUBDIR+= storage-devices

View file

@ -0,0 +1,22 @@
# The FreeBSD Russian Documentation Project
#
# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/Makefile,v 1.2 2005/07/01 07:07:44 gad Exp $
# $FreeBSD$
#
# Original revision: 1.4
#
# Article: FreeBSD Release Engineering of Third Party Software Packages
DOC?= article
FORMATS?= html
INSTALL_COMPRESSED?= gz
INSTALL_ONLY_COMPRESSED?=
SRCS= article.sgml
CSS_SHEET_ADDITIONS= extra.css
DOC_PREFIX?= ${.CURDIR}/../../..
.include "${DOC_PREFIX}/share/mk/doc.project.mk"

View file

@ -0,0 +1,420 @@
<!--
The FreeBSD Russian Documentation Project
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/article.sgml,v 1.5 2005/07/24 11:04:51 marck Exp $
Original revision: 1.18
-->
<!--
The FreeBSD Documentation Project
-->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % articles.ent PUBLIC "-//FreeBSD//ENTITIES DocBook FreeBSD Articles Entity Set//EN">
%articles.ent;
]>
<article lang="ru">
<title>Подготовка релизов FreeBSD в части программных пакетов сторонних
разработчиков</title>
<articleinfo>
<authorgroup>
<author>
<firstname>Steve</firstname>
<surname>Price</surname>
<affiliation>
<address><email>steve@FreeBSD.org</email></address>
</affiliation>
</author>
</authorgroup>
<pubdate>$FreeBSD$</pubdate>
<legalnotice id="trademarks" role="trademarks">
&tm-attrib.freebsd;
&tm-attrib.intel;
&tm-attrib.xfree86;
&tm-attrib.general;
</legalnotice>
<abstract>
<para>В этом документе описывается подход, используемый группой
подготовки релизов FreeBSD для создания высококачественного набора
пакетов, предназначенного для размещения на носителях с официальными
релизами FreeBSD. Этот документ находится в состоянии доработки, и
постепенно он покроет весь процесс построения целостного набора
пакетов в <quote>Кластере Портов</quote> проекта FreeBSD.org, опишет,
как настроить любой другой набор машин в качестве кластера портов, как
разделить пакеты для размещения на носителях с релизом и как проверить
целостность набора пакетов.</para>
</abstract>
</articleinfo>
<!-- Введение
<sect1 id="introduction">
<title>Введение</title>
<para><emphasis>Вскоре будет</emphasis></para>
</sect1>
-->
<sect1 id="portbuild">
<title>Построение пакетов из Коллекции Портов</title>
<para><ulink url="http://www.FreeBSD.org/ports">Коллекция портов
FreeBSD</ulink> представляет собой собрание более чем &os.numports;
программных пакетов сторонних разработчиков, доступных для FreeBSD. За
поддержку дерева портов, которое может использоваться для подготовки
бинарных пакетов, идущих с некоторым релизом FreeBSD, в рабочем
состоянии, отвечает &a.portmgr;.</para>
<sect2>
<title>Кластер портов</title>
<para>Для подготовки целостного набора пакетов сторонних разработчиков
для релизов FreeBSD каждый порт строиться в отдельном окружении с
изменённым корнем файловой системы, с изначально пустыми каталогами
<filename>/usr/local</filename> и <filename>/usr/X11R6</filename>.
Требуемые зависимости устанавливаются в виде пакетов до момента начала
построения. Это обеспечивает <emphasis>целостность</emphasis> процесса
построения пакетов. Запуская построение пакета в чистом окружении,
мы можем гарантировать, что метаданные пакета (такие, как требуемые
зависимости) корректны. Таким образом, мы никогда не создаём пакеты,
которые, в зависимости от ранее установленного программного
обеспечения, на одних системах работать могут, а на других работать не
будут.</para>
<para><quote>Кластер портов</quote> для архитектуры x86 в настоящее время
состоит из центрального узла (Dual &pentium; III 733MHz) и 8
подчинённых узлов (&pentium; III 800MHz), выполняющих реальное
построение пакетов. В такой конфигурации полное построение пакетов
занимает более 24 часов. Эти машины размещены вместе с остальным
оборудованием Проекта FreeBSD в углу с оборудованием компании Yahoo
у провайдера Exodus в калифорнийском городе Санта-Клара.</para>
<para><quote>Кластер портов</quote> для архитектуры Alpha состоит из
7 машин PWS 500A, предоставленных компанией Compaq, и они также
расположены вместе с оборудованием компании Yahoo.</para>
</sect2>
</sect1>
<sect1>
<title>Разделение пакетов</title>
<para>Для FreeBSD 4.4 было создано более 4.1 гигабайт пакетов. Это
привело к проблемам для распространения на CDROM, так как нам нужно
записать как можно больше пакетов без необходимости заставлять
пользователя вставлять другой диск для поиска зависимостей. Решением
является создание <quote>кластеров</quote> близких пакетов с похожими
зависимостями и группировать их на отдельные диски. В этом разделе
описывается программное обеспечение и методология, использованная при
создании таких наборов пакетов для официальных дисков FreeBSD с
релизами.</para>
<para>Скрипты и остальные файлы, необходимые для выполнения разделения
пакетов, можно найти в дереве CVS в каталоге
<filename>ports/Tools/scripts/release</filename>. Скопируйте этот
каталог на машину с свободным дисковым пространством, достаточным для
хранения 2 или 3 копий набоар пакетов, который вы хотите
разделить.</para>
<para>В этом каталоге находятся следующие скрипты:</para>
<variablelist>
<varlistentry>
<term><filename>config</filename></term>
<listitem>
<para>В этом файле находится свободное пространство на каждом диске и
то, разрешено ли на этих дисках размещать пакеты, дистрибутивные
файли или оба типа файлов одновременно. Первая колонка содержит
название диска. Оно должно быть в виде
<literal>disc[0-9a-z]</literal>. На данный момент настройка
выполнена на 10 дисков (4 для релиза и 6 для инструментального
набора). При этом подразумевается дополнительный диск под
названием <quote>scratch</quote>, куда помещаются остальные
дистрибутивные файлы и пакеты, если они больше никуда не
помещаются. Вторая колонка может быть 1 или 0, где 1 означает
возможность размещения на этом диске пакетов. Третья колонка
работает так же, но контролирует размещение на этом диске пакетов.
Последняя колонка отмечает количество байтов свободного
пространства на диске.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>doit.sh</filename></term>
<listitem>
<para>Это рабочая лошадка. Как только все файлы будут на своих
местах и всё будет полностью настроено, этот скрипт управляет
процессом разделения пакетов. Имейте в виду, что он
интерактивный, так что вам нужно присматривать за его работой.
Подробности о том, что делает скрипт, будут даны позже.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>checkdeps.pl</filename></term>
<listitem>
<para>Проверяет наличие всех зависимостей по файлу
<filename>INDEX</filename> и каталогу с пакетами.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>oneshot.pl</filename></term>
<listitem>
<para>Здесь происходит основное волшебство (я использую это слово с
некоторой натяжкой, так как большей частью всё решается в лоб).
Имея перечень требуемых пакетов для каждого диска и набор
пакетов/дистрибутивных файлов, этот скрипт размещает пакеты или
дистрибутивные файлы по дискам вместе со всеми их
зависимостями.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>print-cdrom-packages.sh</filename></term>
<listitem>
<para>Этот файл является копией
<filename>src/release/scripts/print-cdrom-packages.sh</filename> из
релиза, над которым вы работаете.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>scrubindex.pl</filename></term>
<listitem>
<para>Этот скрипт удаляет строки из файла <filename>INDEX</filename>
для отсутствующих пакетов. Он также удаляет зависимости
&xfree86;. ЗАМЕЧАНИЕ: вам нужно изменить значение переменной
<varname>xdep</varname>, чтобы обеспечить правильность номера
версии.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><filename>setup.sh</filename></term>
<listitem>
<para>Это вспомогательный скрипт, использумый мною в кластере сборки пакетов
для получения копии дерева портов и соответствующего набора
пакетов/дистрибутивных файлов.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Вот контрольный список того, что вам нужно будет проверить или
настроить перед тем, как продолжить.</para>
<orderedlist>
<listitem>
<para>Отредактируйте <filename>config</filename>, отметив количество
имеющихся у вас дисков, их размеры и собираетесь ли вы размещать на
них пакеты, дистрибутивные файлы, оба типа файлов или ничего из
них.</para>
</listitem>
<listitem>
<para>Проверьте, что вы удалили каталог <varname>gen</varname>, который
мог остаться от предыдужих работ. Этот каталог содержит рабочие
файлы, которые будут актуальны только для текущих действий.</para>
</listitem>
<listitem>
<para>При первом вашем прогоне лучше всего избежать копирования
пакетов и дистрибутивных файлов. Это сохранит как время, так и
дисковое пространство, пока вы сможете проделать пару пробных
запусков, чтобы удостовериться в том, что всё помещается, и так
далее. В файле <filename>oneshot.pl</filename> задайте переменную
<varname>fake</varname> в значение 1 и вместо реального копирования
файлов он будет только выполнять над ними команду &man.touch.1;.
Обязательно выключите эту возможность или установите переменную
<varname>fake</varname> в значение 0 перед тем, как передавать
получающиеся диски тому, кто будет тиражировать диски, в противном
случае каталоги будут заполнены файлами с нулевыми размерами.</para>
</listitem>
<listitem>
<para>Убедитесь, что у вас есть последняя копия файла
<filename>print-cdrom-packages.sh</filename>, и он взят из
соответствующего релиза.</para>
</listitem>
<listitem>
<para>Проверьте, что зависимость &xfree86; в файле
<filename>scrubindex.pl</filename> имеет корректный номер версии.
Вам также нужно будет проверять, что это значение правильно задано в
файле <filename>doit.sh</filename>.</para>
</listitem>
</orderedlist>
<para>Теперь вам нужно сделать копию дерева портов, пакетов и
дистрибутивных файлов из последнего построения кластера пакетов.
Посмотрите файл <filename>setup.sh</filename> в качестве рабочего
примера, но здесь описано всё необходимое.</para>
<orderedlist>
<listitem>
<para>Возьмите копию <filename>ports.tar.gz</filename> и распакуйте
её в каталог <filename>ports</filename> отдельно от файла
<filename>doit.sh</filename> и каталога
<filename>scripts</filename>.</para>
</listitem>
<listitem>
<para>Удалите каталог packages/distfiles или символические ссылки на
него. В bento имеются эти символические ссылки и вы будете получать
смешанные результаты, если не избавитесь от них перед
обработкой.</para>
</listitem>
<listitem>
<para>Создайте новый каталог ports/packages и скопируйте набор пакетов
из кластера построения пакетов.</para>
</listitem>
<listitem>
<para>Создайте новый каталог ports/distfiles и скопируйте
дистрибутивные файлы из кластера построения пакетов. ЗАМЕЧАНИЕ:
если вы не хотите копировать дистрибутивные файлы, просто создайте
каталог и оставьте его пустым. Этот каталог должен существовать,
даже если в нём ничего нет.</para>
</listitem>
</orderedlist>
<para>Теперь мы окончательно готовы к весёлому занятию по реальному
разделению пакетов. Запускайте обработку командой
<command>./doit.sh</command>. Вот что она делает при первом её
запуске.</para>
<orderedlist>
<listitem>
<para>Создаёт список ограниченных к распространению (которые не могут
находиться на главном FTP-сервере) портов.</para>
</listitem>
<listitem>
<para>Запросит у вас, нужно ли удаление ограниченных к распространению
портов. В большинстве случаев здесь вам лучше ответить (y)es.</para>
</listitem>
<listitem>
<para>Создаёт перечень пакетов/дистрибутивных файлов, которые не могут
быть размещены на дисках.</para>
</listitem>
<listitem>
<para>Запросит у вас разрешение на удаление пакетов/дистрибутивных
файлов, которые не размещаются на компакт-диск. В большинстве
случаев здесь лучше ответить (y)es.</para>
</listitem>
<listitem>
<para>Копирует файл <filename>INDEX</filename> из каталога
<filename>ports</filename> в каталог <filename>gen</filename>. При
этом она удаляет строчки портов, для которых нет пакетов. Также
проверяется наличие всех требуемых зависимых пакетов.</para>
</listitem>
<listitem>
<para>Создаёт список пакетов, требуемых для размещения на каждом
диске.</para>
</listitem>
<listitem>
<para>Делает запрос на создание дисков. После генерации каждого диска
она проверяет отсутствующие зависсимости, вычищает файл
<filename>INDEX</filename> и создаёт файл
<filename>CHECKSUM.MD5</filename>.</para>
</listitem>
<listitem>
<para>Выполняет проверку того, что на каждом диске размещены требуемые
пакеты и выдаёт общую статистику по размерам каждого диска.</para>
</listitem>
</orderedlist>
<para>Если вам повезёт с первого раза, то все требуемые пакеты будут
построены и размещены по дискам. Всё, что вам нужно сделать, это
задать в качестве значения переменной <varname>fake</varname> в 0 в файле
<filename>oneshot.pl</filename> и перезапустить
<command>./doit.sh</command>. При втором и последующем запусках шаги
1-5 выше будут пропускаться. Если вы хотите выполнить любые из тех шагов
повторно, обратитесь к <filename>doit.sh</filename>, чтобы выяснить,
какие файлы необходимо удалить для того, чтобы не пропустить эти этапы.
Если вы хотите повторить все эти шаги, то проще всего выполнить
<command>rm -rf gen</command>.</para>
<para>К моменту успешного завершения пакеты и дистрибутинвые файлы будут
располагаться в каталогах <filename>disc*</filename>, а оставшиеся файлы
будут находиться в каталоге <filename>scratch</filename>.</para>
<para>Что делать, если что-то происходит не так? Вот некоторые
распространённые проблем и их решения.</para>
<variablelist>
<varlistentry>
<term>Отсутствие требуемых пакетов</term>
<listitem>
<para>Такое часто случается. Вам нужно подождать появления нового
набора пакетов, где будут построены отсутствующие пакеты, либо
попросить кого-нибудь перезапустить построение пакетов для вас.
<emphasis>Не пытайтесь</emphasis> строить отсутствующие пакеты
на собственной машине и добавлять их. Хотя вам может удастся
обойтись этим, если вы очень осторожны, все же в большинстве
случаев вы, скорее всего, пропустите какую-то маленькую деталь и
простой процесс добавления одного пакета может привести к
неожиданной неработоспособности сотен остальных.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Требуемые пакеты не помещаются</term>
<listitem>
<para>Такое тоже случается, и это относительно легко исправить.
Просто отредактируйте файл
<filename>print-cdrom-packages.sh</filename>, перенося пакеты,
пока они не станут помещаться. Да, это итерационный процесс, и
это одна из причин, по которой вы должны включать
<varname>fake</varname> в <filename>oneshot.pl</filename>, пока не
получите то, что хотите. Перезапустите
<command>./doit.sh</command> после того, как внесли свои
изменения.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Требуемые пакеты располагаются не на том (или ни на каком)
диске</term>
<listitem>
<para>Обычно это означает, что вы не добавили их в файл
<filename>print-cdrom-packages.sh</filename> или разместили их не
на том диске. Этот скрипт является святым источником, по которому
в целом определяется, где должен находиться пакет. Если вы хотите
обеспечить расположение пакета на определённом диске, то это
единственное место, гарантирующее требуемое вам
расположение.</para>
</listitem>
</varlistentry>
</variablelist>
<para>Если вы окончательно запутались, и не можете понять, почему всё
работает неправильно и как это исправить, то пошлите письмо в адрес
&a.steve; с просьбой о помощи.</para>
</sect1>
</article>

View file

@ -0,0 +1,17 @@
/*
* Netscape 4 does not recognice the @import directive of CSS, so we
* can't add an additional stylesheet layer on top of the default one.
* Instead, we use this hack to copy this file to the end of
* docbook.css.
*
* $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/releng-packages/extra.css,v 1.1 2004/02/25 22:24:56 phantom Exp $
* $FreeBSD$
*/
/* @import "docbook.css"; */
/* Customization that looks good for this particular article. */
DIV.TITLEPAGE {
text-align: center;
}