diff options
Diffstat (limited to 'ru_RU.KOI8-R/articles/portbuild/article.xml')
-rw-r--r-- | ru_RU.KOI8-R/articles/portbuild/article.xml | 132 |
1 files changed, 64 insertions, 68 deletions
diff --git a/ru_RU.KOI8-R/articles/portbuild/article.xml b/ru_RU.KOI8-R/articles/portbuild/article.xml index 25b6fd6c01..de3ed37084 100644 --- a/ru_RU.KOI8-R/articles/portbuild/article.xml +++ b/ru_RU.KOI8-R/articles/portbuild/article.xml @@ -1,7 +1,6 @@ <?xml version="1.0" encoding="koi8-r"?> -<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V4.5-Based Extension//EN" - "../../../share/xml/freebsd45.dtd"> - +<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" + "../../../share/xml/freebsd50.dtd"> <!-- The FreeBSD Russian Documentation Project @@ -9,13 +8,12 @@ Original revision: r28574 --> - -<article lang="ru"> - <articleinfo> - <title>Процесс построения пакетов</title> +<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru"> + <info><title>Процесс построения пакетов</title> + <authorgroup> - <corpauthor>Группа поддержки портов &os;</corpauthor> + <author><orgname>Группа поддержки портов &os;</orgname></author> </authorgroup> <copyright> @@ -27,7 +25,7 @@ &os;</holder> </copyright> - <legalnotice id="trademarks" role="trademarks"> + <legalnotice xml:id="trademarks" role="trademarks"> &tm-attrib.freebsd; &tm-attrib.intel; &tm-attrib.sparc; @@ -37,17 +35,17 @@ <pubdate>$FreeBSD$</pubdate> <releaseinfo>$FreeBSD$</releaseinfo> - </articleinfo> + </info> - <sect1 id="intro"> + <sect1 xml:id="intro"> <title>Введение</title> <para>Для того, чтобы подготовить предкомпилированные версии поддерживаемых приложений для &os;, на одном из <quote>Кластеров сборки пакетов</quote> регулярно производится сборка полного дерева портов. В настоящее время существует два таких кластера: - <hostid role="fqdn">pointyhat.FreeBSD.org</hostid> и - <hostid role="fqdn">dosirak.kr.FreeBSD.org</hostid>.</para> + <systemitem class="fqdomainname">pointyhat.FreeBSD.org</systemitem> и + <systemitem class="fqdomainname">dosirak.kr.FreeBSD.org</systemitem>.</para> <para>Большая часть <quote>магии</quote> процесса сборки сосредоточена в дереве каталогов <filename>/var/portbuild</filename>. @@ -59,11 +57,11 @@ </para> </sect1> - <sect1 id="management"> + <sect1 xml:id="management"> <title>Конфигурация машин-клиентов</title> <para>Клиенты архитектур &i386;, alpha, amd64 и два из &sparc64; клиентов - загружаются по сети с <hostid>pointyhat</hostid>; прочие sparc64 клиенты + загружаются по сети с <systemitem>pointyhat</systemitem>; прочие sparc64 клиенты и машины для сборки ia64 загружаются самостоятельно. Так или иначе, все они в процессе загрузки подготавливаются к сборке пакетов. </para> @@ -79,8 +77,8 @@ </para> <para>Псевдо-пользователь - <username>ports-<replaceable>${arch}</replaceable></username> - может выполнить команду &man.ssh.1; от имени <username>root</username> + <systemitem class="username">ports-<replaceable>${arch}</replaceable></systemitem> + может выполнить команду &man.ssh.1; от имени <systemitem class="username">root</systemitem> на любую клиентскую машину архитектуры <replaceable>${arch}</replaceable>. </para> @@ -94,27 +92,27 @@ загрузки узлов кластера и распределяет, какой из узлов будет строить очередной порт. Этот скрипт не слишком умен и время от времени умирает. Лучше всего запускать его при загрузке основной машины кластера - (<hostid>pointyhat</hostid> или <hostid>dosirak</hostid>) в цикле + (<systemitem>pointyhat</systemitem> или <systemitem>dosirak</systemitem>) в цикле &man.while.1;. </para> </sect1> - <sect1 id="setup"> + <sect1 xml:id="setup"> <title>Подготовка ограниченной среды сборки</title> <para>Пакеты собираются в ограниченной (<literal>chroot</literal>) среде, которая разворачивается скриптом <filename>portbuild</filename> из архива - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/tarballs/bindist.tar</filename>. + <filename>${arch}/${branch}/tarballs/bindist.tar</filename>. Этот архив создается при помощи скрипта <command>mkbindist</command>, конфигурация которого описывается файлом - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/mkbindist.conf</filename>. + <filename>${arch}/${branch}/mkbindist.conf</filename>. </para> <para>Скрипт должен запускаться с правами пользователя - <username>root</username> и следующими параметрами: + <systemitem class="username">root</systemitem> и следующими параметрами: </para> - <screen>/var/portbuild&prompt.root; <userinput>scripts/mkbindist <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable></userinput></screen> + <screen>/var/portbuild&prompt.root; <userinput>scripts/mkbindist ${arch} ${branch}</userinput></screen> <para>При указании в файле <filename>mkbindist.conf</filename> параметра <literal>ftp=1</literal> с адреса @@ -135,10 +133,10 @@ делается при помощи скрипта <command>makeworld</command>: </para> - <screen>/var/portbuild&prompt.root; <userinput>scripts/makeworld <replaceable>${arch}</replaceable> <replaceable>${branch}</replaceable> [-nocvs]</userinput></screen> + <screen>/var/portbuild&prompt.root; <userinput>scripts/makeworld ${arch} ${branch} [-nocvs]</userinput></screen> <para>Эта команда соберет систему на базе исходных текстов в дереве - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/src</filename> + <filename>${arch}/${branch}/src</filename> и установит ее в <replaceable>${worlddir}</replaceable>. Исходные тексты будут обновлены, если не указан параметр <literal>-nocvs</literal>. @@ -150,7 +148,7 @@ </para> </sect1> - <sect1 id="starting"> + <sect1 xml:id="starting"> <title>Запуск сборки</title> <para>Для сборки пакетов используются скрипты @@ -199,7 +197,7 @@ на <command>dopackages.wrapper</command>. Могут быть указаны многочисленные параметры, например:</para> - <screen><command>dopackages.6 <replaceable>${arch}</replaceable> <literal>[-options]</literal></command></screen> + <screen><command>dopackages.6 ${arch} [-options]</command></screen> <para><literal>[-options]</literal> может быть произвольным набором из следующих опций:</para> @@ -321,16 +319,16 @@ <listitem> <para><literal>-distfiles</literal> - Собрать архивы исходных файлов (<literal>distfiles</literal>) для дальнейшего их переноса на - <hostid>ftp-master</hostid>. Эту опцию следует использовать изредка, + <systemitem>ftp-master</systemitem>. Эту опцию следует использовать изредка, поскольку она требует очень много места. Исходные архивы следует - удалить после загрузки их на <hostid>ftp-master</hostid>. + удалить после загрузки их на <systemitem>ftp-master</systemitem>. </para> </listitem> <listitem> <para><literal>-fetch-original</literal> - Загружать исходные архивы с оригинальных сайтов, определенных переменными - <literal>MASTER_SITES</literal>, а не с <hostid>ftp-master</hostid>. + <literal>MASTER_SITES</literal>, а не с <systemitem>ftp-master</systemitem>. </para> </listitem> </itemizedlist> @@ -351,7 +349,7 @@ не ссылался на пустые подкаталоги. В особенности это важно для сборки ветви -exp. Если процесс сборки обнаруживает пустой каталог, обе фазы сборки вскоре остановятся. При этом в файлы - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/make.[0|1]</filename> + <filename>${arch}/${branch}/make.[0|1]</filename> будет записано сообщение об ошибке примерно такого вида: </para> @@ -367,12 +365,12 @@ <note> <para>Та же проблема возникает при создании файла <filename>Makefile</filename> для новой категории, не содержащего - ни одной ссылки на подкаталоги (<makevar>SUBDIR</makevar>). + ни одной ссылки на подкаталоги (<varname>SUBDIR</varname>). Это, скорее всего, ошибка, подлежащая исправлению.</para> </note> </sect1> - <sect1 id="anatomy"> + <sect1 xml:id="anatomy"> <title>Процесс сборки</title> <para>Полный процесс сборки без каких-либо ключей, начинающихся с @@ -434,7 +432,7 @@ </orderedlist> <para>[*] Результаты выполнения этих шагов записываются в файл - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/build.log</filename>, + <filename>${arch}/${branch}/build.log</filename>, а также в стандартный вывод для ошибок консоли, с которой запускался скрипт <command>dopackages</command>.</para> @@ -442,13 +440,13 @@ прекращается.</para> <para>[++] Результаты выполнения пишутся в файл - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/make.[0|1]</filename>, + <filename>${arch}/${branch}/make.[0|1]</filename>, где <filename>make.0</filename> соответствует первой, а <filename>make.1</filename> второй фазе сборки. Журналы сборки отдельных портов записываются в файлы - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/logs</filename>, + <filename>${arch}/${branch}/logs</filename>, а журналы портов, собравшихся неудачно, в - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/errors</filename>. + <filename>${arch}/${branch}/errors</filename>. </para> <para>Ранее из репозитория извлекалось также дерево документации; @@ -456,7 +454,7 @@ </para> </sect1> - <sect1 id="interrupting"> + <sect1 xml:id="interrupting"> <title>Прерывание процесса сборки</title> <para>Для прерывания процесса сборки обычно достаточно послать сигнал @@ -469,16 +467,16 @@ <screen>&prompt.user; <userinput>killall -HUP sh ssh make</userinput></screen> <para>Удалите файл - <filename><replaceable>${arch}</replaceable>/lock</filename> + <filename>${arch}/lock</filename> перед тем, как перезапустите сборку. </para> </sect1> - <sect1 id="monitoring"> + <sect1 xml:id="monitoring"> <title>Слежение за процессом</title> <para>Команда - <command>scripts/stats <replaceable>${branch}</replaceable></command> + <command>scripts/stats ${branch}</command> показывает количество собранных на настоящий момент пакетов.</para> <para>Команда <command>cat /var/portbuild/*/loads/*</command> @@ -486,7 +484,7 @@ запущенных на них.</para> <para>Выполнение - <command>tail -f <replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/build.log</command> + <command>tail -f ${arch}/${branch}/build.log</command> продемонстрирует общее состояние процесса сборки.</para> <para>В случае, если порт не собирается, и из логов не понятны причины @@ -495,7 +493,7 @@ Для этого создайте файл <filename>.keep</filename> в каталоге порта. При следующей сборке порта кластером архив <literal>WRKDIR</literal> будет помещен в файл - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/wrkdirs</filename>. + <filename>${arch}/${branch}/wrkdirs</filename>. </para> <para>Следите за выводом команды &man.df.1;. Если файловая система, @@ -504,7 +502,7 @@ </para> </sect1> - <sect1 id="release"> + <sect1 xml:id="release"> <title>Сборка пакетов для релизов</title> <para>При сборке пакетов для включения в релиз может потребоваться ручное @@ -529,26 +527,26 @@ Затем, на этапе финальной обработки, соберите список файлов при помощи команды</para> - <screen>&prompt.user; <userinput>cd <replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput> -&prompt.user; <userinput>find distfiles > distfiles-<replaceable>${release}</replaceable></userinput></screen> + <screen>&prompt.user; <userinput>cd ${arch}/${branch}</userinput> +&prompt.user; <userinput>find distfiles > distfiles-${release}</userinput></screen> <para>Этот файл обычно копируют в каталог - <filename>i386/<replaceable>${branch}</replaceable></filename> + <filename>i386/${branch}</filename> главной машины кластера.</para> <para>Данная процедура помогает чистить комплект дистрибутивных архивов, - располагающийся на <hostid>ftp-master</hostid>. Если дисковое + располагающийся на <systemitem>ftp-master</systemitem>. Если дисковое пространство заканчивается, можно сохранить архивы для свежих релизов, а прочие — удалить.</para> <para>После копирования дистрибутивов (см. ниже) надо создать окончательный комплект пакетов для релиза. Для полного спокойствия, запустите скрипт - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/cdrom.sh</filename> + <filename>${arch}/${branch}/cdrom.sh</filename> вручную, чтобы быть уверенным, что все пакеты ограниченного распространения и их исходные архивы удалены. Затем скопируйте каталог - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/packages</filename> + <filename>${arch}/${branch}/packages</filename> в - <filename><replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/packages-<replaceable>${release}</replaceable></filename>. + <filename>${arch}/${branch}/packages-${release}</filename>. После того, как пакеты переложены в надежное место, свяжитесь с группой &a.re; и сообщите им расположение финального комплекта пакетов.</para> @@ -557,11 +555,11 @@ </para> </sect1> - <sect1 id="uploading"> + <sect1 xml:id="uploading"> <title>Загрузка пакетов для раздачи</title> <para>После завершения сборки пакеты и/или их исходные архивы - могут быть загружены на <hostid>ftp-master</hostid> для + могут быть загружены на <systemitem>ftp-master</systemitem> для раздачи по сети зеркал FTP. Если сборка велась с ключом <literal>-nofinish</literal>, не забудьте произвести пост-обработку при помощи команды <command>dopackages -finish</command> (будут удалены @@ -580,22 +578,22 @@ <command>cdrom.sh</command> после завершения работы <command>dopackages</command> просто для собственного спокойствия. Скрипт <command>restricted.sh</command> запускается перед копированием - на <hostid>ftp-master</hostid>; затем, перед подготовкой финального + на <systemitem>ftp-master</systemitem>; затем, перед подготовкой финального набора пакетов для релиза выполните <command>cdrom.sh</command>. </para> <para>Пакеты можно копировать во временную область на - <hostid>ftp-master</hostid> примерно такой командой:</para> + <systemitem>ftp-master</systemitem> примерно такой командой:</para> - <screen>&prompt.root; <userinput>cd /var/portbuild/<replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput> -&prompt.root; <userinput>tar cfv - packages/ | ssh portmgr@ftp-master tar xfC - w/ports/<replaceable>${arch}</replaceable>/tmp/<replaceable>${branch}</replaceable></userinput></screen> + <screen>&prompt.root; <userinput>cd /var/portbuild/${arch}/${branch}</userinput> +&prompt.root; <userinput>tar cfv - packages/ | ssh portmgr@ftp-master tar xfC - w/ports/${arch}/tmp/${branch}</userinput></screen> - <para>Затем, на машине <hostid>ftp-master</hostid>, убедитесь, что набор + <para>Затем, на машине <systemitem>ftp-master</systemitem>, убедитесь, что набор пакетов скопирован корректно, удалите старый набор (из каталога - <filename>~/w/ports/<replaceable>${arch}</replaceable></filename>), + <filename>~/w/ports/${arch}</filename>), и переместите новый на его место.</para> - <note><para>Некоторые каталоги на <hostid>ftp-master</hostid> на самом деле + <note><para>Некоторые каталоги на <systemitem>ftp-master</systemitem> на самом деле являются символьными ссылками. Убедитесь, что вы перемещаете новый набор пакетов в <emphasis>реальный</emphasis> каталог, а не на место расположения одной из ссылок.</para></note> @@ -604,12 +602,12 @@ <command>rsync</command>. Так мы не создаём сильной загрузки на зеркалах:</para> - <screen>&prompt.root; <userinput>rsync -n -r -v -l -t -p --delete packages/ portmgr@ftp-master:w/ports/<replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable>/ | tee log</userinput></screen> + <screen>&prompt.root; <userinput>rsync -n -r -v -l -t -p --delete packages/ portmgr@ftp-master:w/ports/${arch}/${branch}/ | tee log</userinput></screen> <para>Дистрибутивные архивы копируются при помощи команды <command>rsync</command>:</para> - <screen>&prompt.root; <userinput>cd /var/portbuild/<replaceable>${arch}</replaceable>/<replaceable>${branch}</replaceable></userinput> + <screen>&prompt.root; <userinput>cd /var/portbuild/${arch}/${branch}</userinput> &prompt.root; <userinput>rsync -r -v -l -p -c -n distfiles/ portmgr@ftp-master:w/ports/distfiles/ | tee log</userinput></screen> <para><emphasis>ВСЕГДА</emphasis> для начала используйте ключ @@ -619,7 +617,7 @@ </para> </sect1> - <sect1 id="expbuilds"> + <sect1 xml:id="expbuilds"> <title>Экспериментальная сборка</title> <para>Время от времени для тестирования новых возможностей или @@ -654,9 +652,9 @@ экспериментальной — <literal>6-exp</literal>):</para> <screen>&prompt.user; <userinput>cd /var/portbuild/i386/6-exp/errors</userinput> -&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/6-exp-errs</userinput> +&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/6-exp-errs</userinput> &prompt.user; <userinput>cd /var/portbuild/i386/6/errors</userinput> -&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/6-errs</userinput></screen> +&prompt.user; <userinput>find . -name \*.log\* | sort > /tmp/6-errs</userinput></screen> <note><para>Если с момента завершения одной из сборок прошло достаточно много времени, журналы сборки могут быть автоматически архивированы @@ -747,9 +745,7 @@ <para>Процесс сборки можно контролировать так же, как и стандартную сборку. После того, как все ошибки исправлены, вы можете произвести коммит комплекта исправлений. Является хорошим тоном отправить письмо - с темой <literal>HEADS UP</literal> в списки рассылки <ulink - url="mailto:ports@FreeBSD.org">ports@FreeBSD.org</ulink> и <ulink - url="mailto:ports-developers@FreeBSD.org">ports-developers@FreeBSD.org</ulink> + с темой <literal>HEADS UP</literal> в списки рассылки <link xlink:href="mailto:ports@FreeBSD.org">ports@FreeBSD.org</link> и <link xlink:href="mailto:ports-developers@FreeBSD.org">ports-developers@FreeBSD.org</link> с информацией о внесенных изменениях. Краткая аннотация изменений также должна быть добавлена в файл <filename>/usr/ports/CHANGES</filename>. </para> |