- MFen: fbsd-from-scratch/article.sgml 1.11 --> 1.14
- several typos have been fixed PR: docs/145355 Approved by: maxim, marck
This commit is contained in:
parent
37cb697708
commit
1153174035
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=36019
1 changed files with 73 additions and 106 deletions
|
@ -3,7 +3,7 @@
|
|||
|
||||
$FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fbsd-from-scratch/article.sgml,v 1.5 2005/06/12 13:52:24 gad Exp $
|
||||
|
||||
Original revision: 1.11
|
||||
Original revision: 1.14
|
||||
-->
|
||||
|
||||
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
|
||||
|
@ -27,7 +27,7 @@
|
|||
</author>
|
||||
|
||||
<copyright>
|
||||
<year>2002,2003,2004</year>
|
||||
<year>2002,2003,2004,2008</year>
|
||||
|
||||
<holder>Jens Schweikhardt</holder>
|
||||
</copyright>
|
||||
|
@ -42,14 +42,13 @@
|
|||
</articleinfo>
|
||||
|
||||
<abstract>
|
||||
<para>В этой статье описывается мои по
|
||||
полностью автоматизированная установка преднастроенной
|
||||
компилируемой из исходных текстов, включая компиляцию всех ваших любимых
|
||||
портов и преднастроенной так, что она соответствует вашим представлениям
|
||||
о настоящей системе. Если вы полагаете, что концепция
|
||||
<command>make world</command> является прекрасным подходом, то
|
||||
&scratch.ap; расширяет это понятие
|
||||
до <command>make evenmore</command>.</para>
|
||||
<para>В этой статье описываются мои достижения в создании &scratch.ap;:
|
||||
полностью автоматизированной установки скомпилированной из исходных
|
||||
текстов системы &os;, включая компиляцию всех ваших любимых портов
|
||||
и преднастройку в соответствии с вашими представлениями о завершенной
|
||||
системе. Если вы полагаете, что концепция <command>make world</command>
|
||||
является прекрасным подходом, то &scratch.ap; расширяет это понятие до
|
||||
<command>make evenmore</command>.</para>
|
||||
</abstract>
|
||||
|
||||
<sect1 id="introduction">
|
||||
|
@ -86,7 +85,7 @@
|
|||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Обычно она использовалась для установки уже откомпилированных
|
||||
<para>Обычно она используется для установки уже откомпилированных
|
||||
дистрибутивных наборов и пакаджей с некоторого носителя (CD, DVD,
|
||||
FTP). Она не может устанавливать результат выполнения
|
||||
<literal>make buildworld</literal>.</para>
|
||||
|
@ -99,7 +98,8 @@
|
|||
|
||||
<listitem>
|
||||
<para>Она не может выполнять установку в разделы
|
||||
<application>Vinum</application>.</para>
|
||||
<application>Vinum</application> или
|
||||
<application>ZFS</application>.</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
|
@ -197,11 +197,11 @@
|
|||
в обычном режиме. Если вы имеете дело с сервером, работающим в
|
||||
режиме промышленной эксплуатации, вы должны быть готовы к простою,
|
||||
к которому приводит выполнение второго этапа. Порты, построенные
|
||||
при помощи <filename>stage_2.conf.default</filename> ниже, требуют
|
||||
примерно 4 часа для построения на системе AMD1800+ со SCSI-дисками,
|
||||
имеющими скорость вращения 10krpm и 1 Гбайтом ОЗУ. Если вы
|
||||
при помощи <filename>stage_2.conf.default</filename> ниже, потребуют
|
||||
для сборки около 8 часов на современной системе (4 из которых займет
|
||||
компиляция <application>OpenOffice.org</application>). Если вы
|
||||
предпочитаете устанавливать пакеты, а не порты, то вы можете
|
||||
существенно сократить время простоя, примерно на 10 минут.</para>
|
||||
существенно сократить время простоя, примерно до 10 минут.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect1>
|
||||
|
@ -252,7 +252,7 @@
|
|||
<para>В первом варианте этой статьи на первом шаге использовался
|
||||
единственный скрипт, в котором вся настройка выполнялась его
|
||||
редактированием. После того, как пользователи высказали свои замечания,
|
||||
я решил разделить код и данные на уровне скриптов. Это позволяет иметь
|
||||
я решил разделить код и данные на уровне скриптов. Это позволяет создавать
|
||||
разные наборы конфигурационных данных для установки различных систем без
|
||||
внесения изменений в скрипты с кодом.</para>
|
||||
|
||||
|
@ -315,12 +315,12 @@
|
|||
завершаться <literal>SIGSYS, Плохой системный вызов</literal>, так
|
||||
как старое ядро не поддерживает этот новый вызов. Я наблюдал
|
||||
и другие проблемы при попытке построения
|
||||
порта <filename role="package">lang/perl5</filename>.</para>
|
||||
порта <filename role="package">lang/perl5.8</filename>.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
<para>Перед тем, как запускать <filename>stage_1.sh</filename>, убедитесь,
|
||||
что выполнили обычные действия при подготовке к
|
||||
что вы выполнили обычные действия при подготовке к
|
||||
<command>make installworld installkernel</command>, типа:</para>
|
||||
|
||||
<itemizedlist>
|
||||
|
@ -344,7 +344,7 @@
|
|||
<filename>/usr/src</filename>, <command>mergemaster</command> будет
|
||||
запрашивать вас на отработку этой ситуации. Я рекомендую переносить
|
||||
изменения. Если вам надоело отвечать на запросы, вы можете просто
|
||||
обновить файлы в вашей <emphasis>работающей</emphasis> системе за раз
|
||||
единожды обновить файлы в вашей <emphasis>работающей</emphasis> системе
|
||||
(Если только это вам подходит. Скорее всего, вам не нужно это делать,
|
||||
если одна из ваших систем работает под управлением
|
||||
<literal>-STABLE</literal>, а другая с <literal>-CURRENT</literal>.
|
||||
|
@ -356,7 +356,7 @@
|
|||
<para>Скрипт <filename>stage_1.sh</filename> остановится на первой команде,
|
||||
которая завершится неудачно (возвратит ненулевой код завершения) из-за
|
||||
<command>set -e</command>, так что вы не пропустите ошибки. Он также
|
||||
остановится, если вы используете отмену значения переменной окружения,
|
||||
остановится, если вы используете неустановленную переменную окружения,
|
||||
как правило, из-за опечатки. Вы должны исправить все ошибки в вашей
|
||||
версии <filename>stage_1.conf.default</filename> перед тем, как
|
||||
продолжить работу.</para>
|
||||
|
@ -366,6 +366,7 @@
|
|||
требуется, он выведет сообщение и в конце сделает запрос</para>
|
||||
|
||||
<screen>*** Comparison complete
|
||||
*** Saving mtree database for future upgrades
|
||||
|
||||
Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>no</userinput></screen>
|
||||
|
||||
|
@ -373,11 +374,11 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
<keycap>Enter</keycap>. Причина в том, что
|
||||
<command>mergemaster</command> оставит несколько файлов нулевой длины в
|
||||
каталоге <filename>/var/tmp/temproot.stage1</filename>, которые позже
|
||||
будут скопированы в новую систему (если их здесь уже нет).</para>
|
||||
будут скопированы в новую систему (в случае, если их там еще нет).</para>
|
||||
|
||||
<para>После этого будет выдан список установленных файлов при помощи
|
||||
утилиты постраничного вывода, по умолчанию это &man.more.1;, может быть
|
||||
&man.less.1;:</para>
|
||||
<para>После этого <command>mergemaster</command> перечислит
|
||||
установленные им файлы и уточнит, стоит ли генерировать новый
|
||||
<filename>login.conf</filename>:</para>
|
||||
|
||||
<screen>*** You chose the automatic install option for files that did not
|
||||
exist on your system. The following were installed for you:
|
||||
|
@ -385,42 +386,32 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
...
|
||||
/newroot/COPYRIGHT
|
||||
|
||||
(END)</screen>
|
||||
*** You installed a new aliases file into /newroot/etc/mail, but
|
||||
the newaliases command is limited to the directories configured
|
||||
in sendmail.cf. Make sure to create your aliases database by
|
||||
hand when your sendmail configuration is done.
|
||||
|
||||
<para>Нажмите <keycap>q</keycap> для того, чтобы прекратить просмотр.
|
||||
Затем вы будете проинформированы
|
||||
о <filename>login.conf</filename>:</para>
|
||||
|
||||
<screen>*** You installed a login.conf file, so make sure that you run
|
||||
*** You installed a login.conf file, so make sure that you run
|
||||
'/usr/bin/cap_mkdb /newroot/etc/login.conf'
|
||||
to rebuild your login.conf database
|
||||
to rebuild your login.conf database
|
||||
|
||||
Would you like to run it now? y or n [n]</screen>
|
||||
|
||||
<para>Ответ не имеет значения, так как мы будем запускать &man.cap.mkdb.1;
|
||||
в любом случае.</para>
|
||||
<para>Ответ не имеет значения, так как <filename>stage_1.sh</filename>
|
||||
будет запускать &man.cap.mkdb.1; в любом случае.</para>
|
||||
|
||||
<para>Вот авторский файл <ulink url="stage_1.conf.default">
|
||||
<filename>stage_1.conf.default</filename></ulink>, который вы должны
|
||||
потом модифицировать. В комментариях даётся достаточно информации о том,
|
||||
потом существенно модифицировать. В комментариях даётся достаточно информации о том,
|
||||
что необходимо изменить.</para>
|
||||
|
||||
<warning>
|
||||
<para>Пожалуйста, обратите на команды &man.newfs.8;. Хотя вы не можете
|
||||
создавать новые файловые системы на смонтированных разделах, скрипт
|
||||
успешно удалит все несмонтированные разделы
|
||||
<filename>/dev/da0s1a</filename>, <filename>/dev/da0s1e</filename> и
|
||||
<filename>/dev/da2s1e</filename>. Этого может оказаться достаточным,
|
||||
чтобы испортить вам день, так что подправьте имена устройств.</para>
|
||||
</warning>
|
||||
|
||||
<programlisting><inlinegraphic fileref="stage_1.conf.default" format="linespecific"></programlisting>
|
||||
|
||||
<para>Сгрузите <ulink url="stage_1.conf.default">
|
||||
<para>Скачайте <ulink url="stage_1.conf.default">
|
||||
<filename>stage_1.conf.default</filename></ulink>.</para>
|
||||
|
||||
<para>При работе этот скрипт устанавливает систему, которая при загрузке
|
||||
имеет:</para>
|
||||
предоставит:</para>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
|
@ -428,7 +419,7 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>Подключение к Internet по Ethernet и PPP с использованием
|
||||
<para>Подключение к Internet по Ethernet с использованием
|
||||
межсетевого экрана.</para>
|
||||
</listitem>
|
||||
|
||||
|
@ -445,7 +436,7 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
<para>Другие функции готовы к настройке, но не будут работать, пока не
|
||||
будет завершён второй этап. Например, мы скопировали файлы для настройки
|
||||
печати и X11. Однако для печати, скорее всего, необходимы приложения,
|
||||
отсутствующие в базовом комплекте системы. X11 не будет работать, пока
|
||||
отсутствующие в базовом комплекте системы, например, такие как &postscript;. X11 не будет работать, пока
|
||||
мы не откомпилируем сервер, библиотеки и программы.</para>
|
||||
</sect1>
|
||||
|
||||
|
@ -465,7 +456,7 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
я устанавливаю мои любимые порты. Он может быть запущен любое количество
|
||||
раз и будет пропускать все порты, которые уже установлены. Он
|
||||
поддерживает <emphasis>dryrun</emphasis>-параметр (<option>-n</option>)
|
||||
для только показа того, что будет выполнено. Вы запускаете его точно
|
||||
для показа того, что будет выполнено. Вы запускаете его точно
|
||||
также, как <filename>stage_1.sh</filename>, с только одним аргументом,
|
||||
указывающим на конфигурационный файл, к примеру</para>
|
||||
|
||||
|
@ -487,15 +478,18 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
|
|||
|
||||
<programlisting>www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install</programlisting>
|
||||
|
||||
<para>На самом деле вы можете указать некоторые команды оболочки, так что
|
||||
не ограничены простыми вызовами <command>make</command>:</para>
|
||||
<para>На самом деле вы можете указать некоторые команды оболочки и не быть
|
||||
ограниченными простыми вызовами <command>make</command>:</para>
|
||||
|
||||
<programlisting>java linux-sun-jdk13 yes | make install
|
||||
news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install</programlisting>
|
||||
<programlisting>java jdk16 echo true > files/license.sh; make install BATCH=yes < /dev/null
|
||||
print acroread8 yes accept | make install PAGER=ls
|
||||
x11-fonts gnu-unifont make install && mkfontdir /usr/local/lib/X11/fonts/local
|
||||
news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make install</programlisting>
|
||||
|
||||
<para>Заметьте, что строка для <filename
|
||||
role="package">news/inn-stable</filename> является примером одновременно
|
||||
задания переменной оболочки <literal>CONFIGURE_ARGS</literal>. Файл
|
||||
<para>В первых двух строчках проиллюстрировано, как работать с портами,
|
||||
которые предлагают вам принять соглашения лицензии. Заметьте, что строка для <filename
|
||||
role="package">news/inn-stable</filename> является примером единократного
|
||||
задания переменной окружения <literal>CONFIGURE_ARGS</literal>. Файл
|
||||
<filename>Makefile</filename> порта будет использовать это как начальное
|
||||
значение и определит некоторые другие необходимые аргументы. Разница в
|
||||
задании <application>make</application>-переменных в командной строке
|
||||
|
@ -521,16 +515,16 @@ news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make
|
|||
|
||||
<programlisting><inlinegraphic fileref="stage_2.conf.default" format="linespecific"></programlisting>
|
||||
|
||||
<para>Сгрузите <ulink url="stage_2.conf.default">
|
||||
<para>Скачайте <ulink url="stage_2.conf.default">
|
||||
<filename>stage_2.conf.default</filename></ulink>.</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="stage3">
|
||||
<title>Этап третий</title>
|
||||
|
||||
<para>На втором этапе вы установили ваши любимые порты. Некоторые их них
|
||||
требуют некоторой настройки. Именно для этого и предназначен третий
|
||||
этап, настройки. Я мог бы интегрировать эту настройку в конец скрипта
|
||||
<para>На втором этапе вы установили ваши любимые порты. Некоторые из них
|
||||
требуют небольшой настройки. Именно для этого и предназначен третий
|
||||
этап — этап настройки. Я мог бы интегрировать эту настройку в конец скрипта
|
||||
<filename>stage_2.sh</filename>. Однако я думаю, что есть концептуальное
|
||||
различие между установкой порта и модификацией его начальной
|
||||
конфигурации, и это требует отдельного шага.</para>
|
||||
|
@ -553,37 +547,17 @@ news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make
|
|||
<title>Ограничения</title>
|
||||
|
||||
<para>Автоматизированная установка порта может оказаться затруднена, если
|
||||
он является интерактивным и не поддерживает команду <command>make
|
||||
она является интерактивной и не поддерживает команду <command>make
|
||||
BATCH=YES install</command>. Для нескольких портов интерактивность
|
||||
означает не более, чем ввод <literal>yes</literal> в ответ на вопрос о
|
||||
принятии некоторого лицензионного соглашения. Если такой ввод
|
||||
принятии некоторого лицензионного соглашения. Если такой ответ
|
||||
считывается со стандартного устройства ввода, мы просто направляем
|
||||
соответствующие ответы на вход установочной команды (обычно <command>make
|
||||
install</command>; именно так я работал с <filename
|
||||
role="package">java/linux-sun-jdk14</filename> в
|
||||
<filename>stage_2.conf.default</filename>).</para>
|
||||
|
||||
<para>Такой подход, например, не работает с <filename
|
||||
role="package">editors/staroffice52</filename>, который требует работы
|
||||
X11. Процедура установки включает достаточно большое количество нажатий
|
||||
мыши и набор, так что она не может быть автоматизирована так, как другие
|
||||
порты. Однако для меня сработал следующий трюк: сначала я создал
|
||||
пакадж staroffice на старой системе при помощи команды</para>
|
||||
|
||||
<informalexample>
|
||||
<screen>&prompt.root; <userinput>cd /usr/ports/editors/staroffice52</userinput>
|
||||
&prompt.root; <userinput>make package</userinput>
|
||||
===> Building package for staroffice-5.2_1
|
||||
Creating package /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz
|
||||
Registering depends:.
|
||||
Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tbz'</screen>
|
||||
</informalexample>
|
||||
|
||||
<para>и на втором этапе я просто использовал следующее:</para>
|
||||
|
||||
<informalexample>
|
||||
<screen>&prompt.root; <userinput>pkg_add /usr/ports/editors/staroffice52/staroffice-5.2_1.tbz</userinput></screen>
|
||||
</informalexample>
|
||||
соответствующие ответы на вход установочной команды (к примеру:
|
||||
<command>yes | make install</command>). Для остальных портов вам
|
||||
придется разобраться, где конкретно находится интерактивная команда
|
||||
и соответственно ее обработать. Выше были приведены примеры для
|
||||
<filename role="package">print/acroread8</filename> and
|
||||
<filename role="package">java/jdk16</filename>.</para>
|
||||
|
||||
<para>Вы должны также принять во внимание вопросы обновления
|
||||
конфигурационных файлов. Вообще говоря, вы не знаете, когда и сменился
|
||||
|
@ -604,8 +578,8 @@ Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tb
|
|||
раза в месяц. Для обнаружения таких скрытых изменений, я держу копию
|
||||
изменённых конфигурационных файлов там же, где и <filename>stage_3.mk</filename>
|
||||
и сравниваю результат с помощью правил <command>make</command>.
|
||||
Например, для конфигурационного файла <application>апача</application>,
|
||||
<filename>httpd.conf</filename> целью будет
|
||||
Например, для конфигурационного файла <application>Apache</application>,
|
||||
<filename>httpd.conf</filename>, целью будет
|
||||
<command>config_apache</command>.</para>
|
||||
|
||||
<programlisting>
|
||||
|
@ -621,21 +595,14 @@ fi
|
|||
httpd.conf</command>.</para>
|
||||
|
||||
<para>Я использовал систему &scratch.ap; несколько раз для обновления
|
||||
<literal>5-CURRENT</literal> до <literal>5-CURRENT</literal>, то есть
|
||||
я никогда не пытался установить <literal>5-CURRENT</literal> из системы
|
||||
<literal>4-STABLE</literal> и наоборот. Из-за количества изменений между
|
||||
<literal>7-CURRENT</literal> до <literal>7-CURRENT</literal> и
|
||||
<literal>8-CURRENT</literal> до <literal>8-CURRENT</literal>, то есть
|
||||
я никогда не пытался установить <literal>8-CURRENT</literal> из системы
|
||||
<literal>7-STABLE</literal> и наоборот. Из-за количества изменений между
|
||||
релизами с разными старшими номерами я ожидаю, что этот процесс будет
|
||||
несколько более сложным. Использование &scratch.ap; для обновления
|
||||
внутри <literal>4-STABLE</literal> должно проходить безболезненно (хотя
|
||||
я ещё этого не пробовал делать.) Пользователи ветки
|
||||
<literal>4-STABLE</literal> могут иметь в виду следующее:</para>
|
||||
|
||||
<note>
|
||||
<para>Если вы не используете файловую систему устройств, &man.devfs.5;,
|
||||
то можете создать устройства для некоторого вашего оборудования командой
|
||||
&man.MAKEDEV.8; в процессе
|
||||
<command>all_remaining_customization</command>.</para>
|
||||
</note>
|
||||
внутри ветки <literal>STABLE</literal> должно проходить безболезненно
|
||||
(хотя я ещё не пробовал этого делать).</para>
|
||||
</sect1>
|
||||
|
||||
<sect1 id="files">
|
||||
|
@ -650,7 +617,7 @@ fi
|
|||
|
||||
<programlisting><inlinegraphic fileref="stage_1.sh" format="linespecific"></programlisting>
|
||||
|
||||
<para>Сгрузите <ulink
|
||||
<para>Скачайте <ulink
|
||||
url="stage_1.sh"><filename>stage_1.sh</filename></ulink>.</para>
|
||||
|
||||
<para>Это скрипт <ulink
|
||||
|
@ -659,7 +626,7 @@ fi
|
|||
|
||||
<programlisting><inlinegraphic fileref="stage_2.sh" format="linespecific"></programlisting>
|
||||
|
||||
<para>Сгрузите <ulink
|
||||
<para>Скачайте <ulink
|
||||
url="stage_2.sh"><filename>stage_2.sh</filename></ulink>.</para>
|
||||
|
||||
<para>Это мой файл <ulink
|
||||
|
@ -668,7 +635,7 @@ fi
|
|||
|
||||
<programlisting><inlinegraphic fileref="stage_3.mk" format="linespecific"></programlisting>
|
||||
|
||||
<para>Сгрузите <ulink
|
||||
<para>Скачайте <ulink
|
||||
url="stage_3.mk"><filename>stage_3.mk</filename></ulink>.</para>
|
||||
</sect1>
|
||||
</article>
|
||||
|
|
Loading…
Reference in a new issue