diff options
author | Taras Korenko <taras@FreeBSD.org> | 2015-04-03 04:28:26 +0000 |
---|---|---|
committer | Taras Korenko <taras@FreeBSD.org> | 2015-04-03 04:28:26 +0000 |
commit | 4e77ebb87491d864030f58a455df26141e69e65e (patch) | |
tree | ad8988fcc037bd9730988e550f40aaaf082c1ca6 /ru_RU.KOI8-R/articles/fbsd-from-scratch | |
parent | b5551bdd50ba19a9631ea8b308ea07026bf70f49 (diff) | |
download | doc-4e77ebb87491d864030f58a455df26141e69e65e.tar.gz doc-4e77ebb87491d864030f58a455df26141e69e65e.zip |
+ follow r46438: remove russian translation of articles/fbsd-from-scratch
Notes
Notes:
svn path=/head/; revision=46442
Diffstat (limited to 'ru_RU.KOI8-R/articles/fbsd-from-scratch')
-rw-r--r-- | ru_RU.KOI8-R/articles/fbsd-from-scratch/Makefile | 41 | ||||
-rw-r--r-- | ru_RU.KOI8-R/articles/fbsd-from-scratch/article.xml | 637 |
2 files changed, 0 insertions, 678 deletions
diff --git a/ru_RU.KOI8-R/articles/fbsd-from-scratch/Makefile b/ru_RU.KOI8-R/articles/fbsd-from-scratch/Makefile deleted file mode 100644 index 7851a7a227..0000000000 --- a/ru_RU.KOI8-R/articles/fbsd-from-scratch/Makefile +++ /dev/null @@ -1,41 +0,0 @@ -# -# The FreeBSD Russian Documentation Project -# -# $FreeBSD$ -# $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fbsd-from-scratch/Makefile,v 1.3 2005/06/12 13:51:45 gad Exp $ -# -# Article: FreeBSD From Scratch -# -# Original revision: r39631 -# - -DOC?= article - -FORMATS?= html - -MAINTAINER= schweikh@FreeBSD.org - -INSTALL_COMPRESSED?= gz -INSTALL_ONLY_COMPRESSED?= - -EXTRAS= stage_1.sh -EXTRAS+= stage_1.conf.default -EXTRAS+= stage_2.sh -EXTRAS+= stage_2.conf.default -EXTRAS+= stage_3.mk - -CLEANFILES+= ${EXTRAS} - -SRCS= article.xml -SRCS+= ${EXTRAS} - -${EXTRAS}: - ${CP} ${DOC_PREFIX}/en_US.ISO8859-1/articles/fbsd-from-scratch/${.TARGET} ${.OBJDIR}/ - -afterinstall: -.for entry in ${EXTRAS} - ${INSTALL_DOCS} ${.OBJDIR}/${entry} ${DESTDIR} -.endfor - -DOC_PREFIX?= ${.CURDIR}/../../.. -.include "${DOC_PREFIX}/share/mk/doc.project.mk" diff --git a/ru_RU.KOI8-R/articles/fbsd-from-scratch/article.xml b/ru_RU.KOI8-R/articles/fbsd-from-scratch/article.xml deleted file mode 100644 index 22fa741afd..0000000000 --- a/ru_RU.KOI8-R/articles/fbsd-from-scratch/article.xml +++ /dev/null @@ -1,637 +0,0 @@ -<?xml version="1.0" encoding="koi8-r"?> -<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook XML V5.0-Based Extension//EN" - "http://www.FreeBSD.org/XML/share/xml/freebsd50.dtd" [ -<!ENTITY scratch.ap "<application xmlns='http://docbook.org/ns/docbook'>FreeBSD From Scratch</application>"> -]> -<!-- - The FreeBSD Russian Documentation Project - - $FreeBSDru: frdp/doc/ru_RU.KOI8-R/articles/fbsd-from-scratch/article.xml,v 1.5 2005/06/12 13:52:24 gad Exp $ - - Original revision: r43184 ---> -<article xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:lang="ru"> - <info><title>FreeBSD "с нуля"</title> - - - <author><personname><firstname>Jens</firstname><surname>Schweikhardt</surname></personname><affiliation> - <address><email>schweikh@FreeBSD.org</email></address> - </affiliation></author> - - <copyright> - <year>2002,2003,2004,2008</year> - - <holder>Jens Schweikhardt</holder> - </copyright> - - <legalnotice xml:id="trademarks" role="trademarks"> - &tm-attrib.freebsd; - &tm-attrib.adobe; - &tm-attrib.general; - </legalnotice> - - <pubdate>$FreeBSD$</pubdate> - - <releaseinfo>$FreeBSD$</releaseinfo> - - <abstract> - <para>В этой статье описываются мои достижения в создании &scratch.ap;: - полностью автоматизированной установки скомпилированной из исходных - текстов системы &os;, включая компиляцию всех ваших любимых портов - и преднастройку в соответствии с вашими представлениями о завершенной - системе. Если вы полагаете, что концепция <command>make world</command> - является прекрасным подходом, то &scratch.ap; расширяет это понятие до - <command>make evenmore</command>.</para> - </abstract> - </info> - - <sect1 xml:id="introduction"> - <title>Введение</title> - - <para>Вы когда-либо обновляли вашу систему при помощи - <command>make world</command>? Существует одна проблема, возникающая - при наличии всего лишь одной системы на диске. Если выполнение цели - <buildtarget>installworld</buildtarget> прерывается на середине, у вас - остаётся неработоспособная система, которая может даже не загружаться. - Либо цель <buildtarget>installworld</buildtarget> отрабатывает нормально, - а новое ядро не загружается. Тогда наступает момент для поиска Fixit CD - и резервных копий, которые вы делали полгода назад.</para> - - <para>Я исповедую подход <quote>сотрите данные на дисках при обновлении - систем</quote>. Удаление дисков, и даже разделов, обеспечивает вам то, - что нигде не остаётся никаких частей старого, то, о чём не заботятся - большее число процедур обновления. Однако очистка разделов означает, что - вам нужно перекомпилировать/переустановить все ваши порты и пакаджи, а - также проделать все тонкие процедуры настройки. Если вы думаете, что - эта задача тоже должна быть автоматизирована, то читайте дальше.</para> - </sect1> - - <sect1 xml:id="why"> - <title>Почему мне (не) нужна &scratch.ap;?</title> - - <para>Это закономерный вопрос. У нас имеется утилита - <application>sysinstall</application> и хорошо изученный способ - компиляции ядра и пользовательских приложений.</para> - - <para>Проблема с утилитой <application>sysinstall</application> заключается - в том, что она несколько ограничена в том, что, куда и как может - устанавливать.</para> - - <itemizedlist> - <listitem> - <para>Обычно она используется для установки уже откомпилированных - дистрибутивных наборов и пакаджей с некоторого носителя (CD, DVD, - FTP). Она не может устанавливать результат выполнения - <literal>make buildworld</literal>.</para> - </listitem> - - <listitem> - <para>Она не может устанавливать вторую систему в некоторый каталог - уже работающей системы.</para> - </listitem> - - <listitem> - <para>Она не может выполнять установку в разделы - <application>Vinum</application> или - <application>ZFS</application>.</para> - </listitem> - - <listitem> - <para>Она не может строить порты, а лишь устанавливать уже - откомпилированные пакаджи.</para> - </listitem> - - <listitem> - <para>Создание скриптов или выполнение нестандартных действий после - установки затруднено.</para> - </listitem> - - <listitem> - <para>И последним, но одним из самых важных факторов, является - полуофициальное прекращение дальнейшей поддержки - <application>sysinstall</application>.</para> - </listitem> - </itemizedlist> - - <para>Хорошо известный способ полного построения и установки системы, - описанный в <link xlink:href="http://www.FreeBSD.org/doc/ru_RU.KOI8-R/books/handbook/makeworld.html"> - Руководстве</link>, по умолчанию замещает существующую систему. При - этом сохраняются только модули и ядро. Системные бинарные файлы, файлы - объявлений функций и множество других файлов перезаписываются; уже - ненужные файлы остаются и могут преподносить сюрпризы. Если по - какой-либо причине обновление завершилось неудачно, бывает трудно и даже - невозможно вернуть систему в исходное состояние.</para> - - <para>&scratch.ap; решает все эти проблемы. Её стратегия проста: - использование работающей системы для установки новой в пустое дерево - каталогов, при этом новые разделы монтируются в соответствующие места - этого дерева. Многие конфигурационные файлы могут быть скопированы в - соответствующее место, а &man.mergemaster.8; сможет позаботиться о тех, - что скопировать не удалось. Тонкая настройка новой системы может быть - выполнена в старой, вплоть до момента, когда вы сможете выполнить chroot - в новую систему. Другими словами, мы проходим через три этапа, при этом - каждый шаг представляет собой либо запуск скрипта, либо вызов команды - <command>make</command>:</para> - - <orderedlist> - <listitem> - <para><filename>stage_1.sh</filename>: - Создание новой загружаемой системы в пустом каталоге и объединение - либо копирование максимально большего количества необходимых файлов. - Затем загрузка новой системы.</para> - </listitem> - - <listitem> - <para><filename>stage_2.sh</filename>: - Установка требуемых портов.</para> - </listitem> - - <listitem> - <para><filename>stage_3.mk</filename>: - Выполнение последующей настройки программного обеспечения, - установленного на предыдущем этапе.</para> - </listitem> - </orderedlist> - - <para>После того, как вы воспользуетесь &scratch.ap; для построения второй - системы и в течение нескольких недель убедитесь, что она работает - удовлетворительно, можете затем использовать её повторно для - переустановки исходной системы. С этого момента, как только вы - почувствуете необходимость обновления, то просто выберите разделы, - которые хотите удалить и выполнить переустановку.</para> - - <para>Может быть, вы слышали и даже пробовали использовать систему <link xlink:href="http://www.linuxfromscratch.org/">Linux From Scratch</link>, или - LFS для краткости. LFS также определяет, как построить и установить - систему с нуля на пустой раздел при помощи работающей системы. LFS - делает упор на выяснение роли каждого компонента системы (таких, как - ядро, компилятор, устройства, командный процессор, база данных - терминальных устройств и так далее) и деталей установки каждого - компонента. &scratch.ap; не опускается до такого уровня детализации. - Моей целью является проведение автоматизированной и полной установки, а - не описание всех кровавых подробностей полного перепостроения системы. - В случае, если вы хотите изучить &os; до такого уровня, начните с - просмотра <filename>/usr/src/Makefile</filename> и следуйте действиям, - которые выполняет <command>make buildworld</command>.</para> - - <para>В подходе, который применяется в &scratch.ap;, имеются свои - отрицательные стороны, которые вы должны иметь в виду.</para> - - <!-- XXX: Хорошо бы написать stage_2.sh с применением системы разделения - jail, которые запускаются в только что установленной при помощи - stage_1 системе. При корректной настройке первичного IP-адреса jail, - возможно строить порты в chroot без деинсталляции всего установленного - из 'хостирующей' системы. Однако не забывайте, что даже jail-системы - работают на ядре 'хоста'. --> - - <itemizedlist> - <listitem> - <para>При компиляции портов на втором этапе систему нельзя использовать - в обычном режиме. Если вы имеете дело с сервером, работающим в - режиме промышленной эксплуатации, вы должны быть готовы к простою, - к которому приводит выполнение второго этапа. Порты, построенные - при помощи <filename>stage_2.conf.default</filename> ниже, потребуют - для сборки около 8 часов на современной системе (4 из которых займет - компиляция <application>OpenOffice.org</application>). Если вы - предпочитаете устанавливать пакеты, а не порты, то вы можете - существенно сократить время простоя, примерно до 10 минут.</para> - </listitem> - </itemizedlist> - </sect1> - - <sect1 xml:id="prerequisites"> - <title>Предварительные требования</title> - - <para>Для того, чтобы воспользоваться подходом &scratch.ap;, вам нужно - иметь:</para> - - <itemizedlist> - <listitem> - <para>Работающую систему &os; с исходными текстами и деревом - портов.</para> - </listitem> - - <listitem> - <para>По крайней мере один неиспользуемый раздел, куда будет - устанавливаться новая система.</para> - </listitem> - - <listitem> - <para>Опыт работы с &man.mergemaster.8;. Или по крайней мере - отсутствие страха его использовать.</para> - </listitem> - - <listitem> - <para>Если у вас нет подключения или слабый канал в Internet: - дистрибутивные файлы для ваших любимых портов.</para> - </listitem> - - <listitem> - <para>Знание основ написания скриптов на языке командного процессора - Bourne, &man.sh.1;.</para> - </listitem> - - <listitem> - <para>Наконец, вы должны уметь указывать загрузчику системы на загрузку - новой системы, либо интерактивно, либо из конфигурационного - файла.</para> - </listitem> - </itemizedlist> - </sect1> - - <sect1 xml:id="stage1"> - <title>Этап первый: Установка системы</title> - - <para>В первом варианте этой статьи на первом шаге использовался - единственный скрипт, в котором вся настройка выполнялась его - редактированием. После того, как пользователи высказали свои замечания, - я решил разделить код и данные на уровне скриптов. Это позволяет создавать - разные наборы конфигурационных данных для установки различных систем без - внесения изменений в скрипты с кодом.</para> - - <para>Скрипт с кодом для первого этапа называется - <filename>stage_1.sh</filename>, и он запускается с единственным - аргументом, например</para> - - <informalexample> - <screen>&prompt.root; <userinput>./stage_1.sh <replaceable>default</replaceable></userinput></screen> - </informalexample> - - <para>будет считывать свою конфигурацию из файла - <filename>stage_1.conf.default</filename> и записывать протокол в файл - <filename>stage_1.log.default</filename>.</para> - - <para>Далее приводится мой файл <filename>stage_1.conf.default</filename>. - Вам необходимо подправить его в различных местах для того, чтобы он - соответствовал вашим представлениям об <quote>идеальной системе</quote>. - Я попытался подробно прокомментировать те места, которые вы должны - исправлять. Конфигурационный скрипт должен предоставлять четыре функции - для оболочки, <command>create_file_systems</command>, - <command>create_etc_fstab</command>, <command>copy_files</command> и - <command>all_remaining_customization</command> (в случае, если это - имеет смысл: именно в такой последовательности они будут вызываться из - <filename>stage_1.sh</filename>).</para> - - <para>Следует внимательно отнестись к следующим моментам:</para> - - <itemizedlist> - <listitem> - <para>Разбиение разделов.</para> - - <para>Я не являюсь сторонником наличия одного большого раздела для - всей системы. Мои системы, как правило, имеют по крайней мере по - одному разделу для <filename>/</filename>, <filename>/usr</filename> - и <filename>/var</filename> с каталогом <filename>/tmp</filename>, - образованным символической ссылкой в <filename>/var/tmp</filename>. - Вдобавок я использую файловые системы в режиме совместного доступа к - <filename>/home</filename> (домашние каталоги пользователей), - <filename>/home/ncvs</filename> (копия CVS-хранилища &os;), - <filename>/usr/ports</filename> (дерево портов), - <filename>/src</filename> (различные выгруженные из хранилища деревья - исходных текстов) и <filename>/share</filename> (остальные совместно - используемые данные, резервные копии которых не нужны, например, - спул сервера телеконференций).</para> - </listitem> - - <listitem> - <para>Новые возможности.</para> - - <para>Это то, что вы хотите иметь сразу после загрузки новой - системы и даже до запуска второго этапа. Причина отказа от - создания и перехода в chroot-окружение новой системы во время - первого этапа и простой установки всех моих любимых портов - заключается в том, что теоретически и практически существуют - проблемы начальной загрузки и целостности: на первом этапе работает - ваше старое ядро, однако в chroot-окружении содержатся новые - двоичные файлы программ и файлы объявлений. Если новые - программы используют новый системный вызов, то они будут - завершаться <literal>SIGSYS, Плохой системный вызов</literal>, так - как старое ядро не поддерживает этот новый вызов. Я наблюдал - и другие проблемы при попытке построения - порта <package>lang/perl5.8</package>.</para> - </listitem> - </itemizedlist> - - <para>Перед тем, как запускать <filename>stage_1.sh</filename>, убедитесь, - что вы выполнили обычные действия при подготовке к - <command>make installworld installkernel</command>, типа:</para> - - <itemizedlist> - <listitem> - <para>отредактировали конфигурационный файл вашего ядра</para> - </listitem> - - <listitem> - <para>успешно выполнили <command>make buildworld</command></para> - </listitem> - - <listitem> - <para>успешно выполнили <command>make buildkernel - KERNCONF=<replaceable>whatever</replaceable></command></para> - </listitem> - </itemizedlist> - - <para>Когда вы запускаете <filename>stage_1.sh</filename> первый раз, и - конфигурационный файл, скопированный с работающей системы в новую, - является устаревшим по сравнению с тем, что находится в каталоге - <filename>/usr/src</filename>, <command>mergemaster</command> будет - запрашивать вас на отработку этой ситуации. Я рекомендую переносить - изменения. Если вам надоело отвечать на запросы, вы можете просто - единожды обновить файлы в вашей <emphasis>работающей</emphasis> системе - (Если только это вам подходит. Скорее всего, вам не нужно это делать, - если одна из ваших систем работает под управлением - <literal>-STABLE</literal>, а другая с <literal>-CURRENT</literal>. - Изменения могут оказаться несовместимыми). Последующие вызовы - утилиты <command>mergemaster</command> обнаружат, что RCS-идентификаторы - версий соответствуют тем, что находятся в <filename>/usr/src</filename>, - и пропустят файл.</para> - - <para>Скрипт <filename>stage_1.sh</filename> остановится на первой команде, - которая завершится неудачно (возвратит ненулевой код завершения) из-за - <command>set -e</command>, так что вы не пропустите ошибки. Он также - остановится, если вы используете неустановленную переменную окружения, - как правило, из-за опечатки. Вы должны исправить все ошибки в вашей - версии <filename>stage_1.conf.default</filename> перед тем, как - продолжить работу.</para> - - <para>В скрипте <filename>stage_1.sh</filename> мы вызываем - <command>mergemaster</command>. Даже если никаким файлам объединение не - требуется, он выведет сообщение и в конце сделает запрос</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> - - <para>Пожалуйста, ответьте <literal>no</literal> или просто нажмите - <keycap>Enter</keycap>. Причина в том, что - <command>mergemaster</command> оставит несколько файлов нулевой длины в - каталоге <filename>/var/tmp/temproot.stage1</filename>, которые позже - будут скопированы в новую систему (в случае, если их там еще нет).</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: - /newroot/etc/defaults/rc.conf - ... - /newroot/COPYRIGHT - -*** 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. - -*** 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 - - Would you like to run it now? y or n [n]</screen> - - <para>Ответ не имеет значения, так как <filename>stage_1.sh</filename> - будет запускать &man.cap.mkdb.1; в любом случае.</para> - - <para>Вот авторский файл <link xlink:href="stage_1.conf.default"> - <filename>stage_1.conf.default</filename></link>, который вы должны - потом существенно модифицировать. В комментариях даётся достаточно информации о том, - что необходимо изменить.</para> - - <programlisting> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default" parse="text"/> - </programlisting> - - <para>Скачайте <link xlink:href="stage_1.conf.default"> - <filename>stage_1.conf.default</filename></link>.</para> - - <para>При работе этот скрипт устанавливает систему, которая при загрузке - предоставит:</para> - - <itemizedlist> - <listitem> - <para>Унаследованные списки пользователей и групп.</para> - </listitem> - - <listitem> - <para>Подключение к Internet по Ethernet с использованием - межсетевого экрана.</para> - </listitem> - - <listitem> - <para>Правильный временной пояс и NTP.</para> - </listitem> - - <listitem> - <para>Другие более мелкие конфигурационные параметры, например, - <filename>/etc/ttys</filename> и <command>inetd</command>.</para> - </listitem> - </itemizedlist> - - <para>Другие функции готовы к настройке, но не будут работать, пока не - будет завершён второй этап. Например, мы скопировали файлы для настройки - печати и X11. Однако для печати, скорее всего, необходимы приложения, - отсутствующие в базовом комплекте системы, например, такие как &postscript;. X11 не будет работать, пока - мы не откомпилируем сервер, библиотеки и программы.</para> - </sect1> - - <sect1 xml:id="stage2"> - <title>Этап второй: Установка портов</title> - - <note> - <para>На этом этапе вместо компиляции портов возможна также установка - (уже откомпилированных) пакаджей. В этом случае - <filename>stage_2.sh</filename> будет представлять собой не более, чем - перечень команд <command>pkg_add</command>. Я надеюсь, что вы сумеете - написать такой скрипт. Здесь мы сосредоточимся на более гибком и - традиционном способе с использованием портов.</para> - </note> - - <para>Следующий скрипт <filename>stage_2.sh</filename> показывает, как - я устанавливаю мои любимые порты. Он может быть запущен любое количество - раз и будет пропускать все порты, которые уже установлены. Он - поддерживает <emphasis>dryrun</emphasis>-параметр (<option>-n</option>) - для показа того, что будет выполнено. Вы запускаете его точно - также, как <filename>stage_1.sh</filename>, с только одним аргументом, - указывающим на конфигурационный файл, к примеру</para> - - <informalexample> - <screen>&prompt.root; <userinput>./stage_2.sh <replaceable>default</replaceable></userinput></screen> - </informalexample> - - <para>который будет считывать перечень портов из - <filename>stage_2.conf.default</filename>.</para> - - <para>Список портов состоит из строчек с двумя или большим количеством - слов, разделённых пробелами: категория и порт, за которыми опционально - следует команда установки, которая будет компилировать и устанавливать - порт (по умолчанию: <command>make install BATCH=yes < /dev/null</command>). - Пустые строки и строки, начинающиеся с символа #, игнорируются. В большинстве - случаев в них указывается только название категории и порт. Однако - некоторые порты могут быть тонко настроены при помощи указания - <command>make</command>-переменных, к примеру:</para> - - <programlisting>www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install</programlisting> - - <para>На самом деле вы можете указать некоторые команды оболочки и не быть - ограниченными простыми вызовами <command>make</command>:</para> - - <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>В первых двух строчках проиллюстрировано, как работать с портами, - которые предлагают вам принять соглашения лицензии. Заметьте, что строка для <package>news/inn-stable</package> является примером единократного - задания переменной окружения <literal>CONFIGURE_ARGS</literal>. Файл - <filename>Makefile</filename> порта будет использовать это как начальное - значение и определит некоторые другие необходимые аргументы. Разница в - задании <application>make</application>-переменных в командной строке - по команде</para> - - <programlisting>news inn-stable make CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" install</programlisting> - - <para>заключается в том, что в последнем случае значение будет - переназначено, но не расширено. Выбор нужного метода зависит от - конкретного порта.</para> - - <para>Убедитесь в том, что ваши порты не используют интерактивный режим - установки, то есть не должны пытаться читать со стандартного устройства - ввода ничего кроме того, что вы им подаёте на вход. Если это всё же - происходит, то они будут считывать последующие строки из вашего перечня - портов, описываемого в этом документе, и будут работать некорректно. - Если скрипт <filename>stage_2.sh</filename> неожиданно пропустил порт - или прекратил работу, причина может быть в этом.</para> - - <para>Ниже приводится <filename>stage_2.conf.default</filename>. Для - каждого установленного им порта создаётся файл протокола - <filename>LOGDIR/category+port</filename>.</para> - - <programlisting> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default" parse="text"/> - </programlisting> - - <para>Скачайте <link xlink:href="stage_2.conf.default"> - <filename>stage_2.conf.default</filename></link>.</para> - </sect1> - - <sect1 xml:id="stage3"> - <title>Этап третий</title> - - <para>На втором этапе вы установили ваши любимые порты. Некоторые из них - требуют небольшой настройки. Именно для этого и предназначен третий - этап — этап настройки. Я мог бы интегрировать эту настройку в конец скрипта - <filename>stage_2.sh</filename>. Однако я думаю, что есть концептуальное - различие между установкой порта и модификацией его начальной - конфигурации, и это требует отдельного шага.</para> - - <para>Я решил реализовать третий этап в виде файла - <filename>Makefile</filename>, потому что это позволяет легко выбирать - то, что вы хотите конфигурировать, следующим простым вызовом:</para> - - <informalexample> - <screen>&prompt.root; <userinput>make -f stage_3.mk <replaceable>target</replaceable></userinput></screen> - </informalexample> - - <para>Как и в случае с <filename>stage_2.sh</filename>, убедитесь, что файл - <filename>stage_3.mk</filename> после загрузки новой системы есть в - наличии, поместив его на совместно используемый раздел либо скопировав - его куда-нибудь в новую систему.</para> - </sect1> - - <sect1 xml:id="limitations"> - <title>Ограничения</title> - - <para>Автоматизированная установка порта может оказаться затруднена, если - она является интерактивной и не поддерживает команду <command>make - BATCH=YES install</command>. Для нескольких портов интерактивность - означает не более, чем ввод <literal>yes</literal> в ответ на вопрос о - принятии некоторого лицензионного соглашения. Если такой ответ - считывается со стандартного устройства ввода, мы просто направляем - соответствующие ответы на вход установочной команды (к примеру: - <command>yes | make install</command>). Для остальных портов вам - придется разобраться, где конкретно находится интерактивная команда - и соответственно ее обработать. Выше были приведены примеры для - <package>print/acroread8</package> and - <package>java/jdk16</package>.</para> - - <para>Вы должны также принять во внимание вопросы обновления - конфигурационных файлов. Вообще говоря, вы не знаете, когда и сменился - ли вообще формат или содержимое конфигурационного файла. В файл - <filename>/etc/group</filename> может быть добавлена новая группа, или в - <filename>/etc/passwd</filename> может добавиться дополнительное поле. - Всё это уже происходило в прошлом. Простое копирование конфигурационного - файла из старой в новую систему может в большинстве случаев оказаться - достаточным, но в этих случаях это не так. Если вы обновляете систему - каноническим способом (путём перезаписывания старых файлов), вы должны - использовать утилиту <command>mergemaster</command> для работы с - изменениями, если вы хотите эффективно объединить вашу локальные - настройки с потенциально новыми возможностями. К сожалению, - <command>mergemaster</command> работает только с файлами базового - комплекта системы, а не с любыми файлами, устанавливаемыми портами. - Похоже, что стороннее программное обеспечение специально проектируется - для того, чтобы я не дремал, и меняет конфигурационные файлы по два - раза в месяц. Для обнаружения таких скрытых изменений, я держу копию - изменённых конфигурационных файлов там же, где и <filename>stage_3.mk</filename> - и сравниваю результат с помощью правил <command>make</command>. - Например, для конфигурационного файла <application>Apache</application>, - <filename>httpd.conf</filename>, целью будет - <command>config_apache</command>.</para> - -<programlisting> -@if ! cmp -s /usr/local/etc/apache2/httpd.conf httpd.conf; then \ - echo "ATTENTION: the httpd.conf has changed. Please examine if"; \ - echo "the modifications are still correct. Here is the diff:"; \ - diff -u /usr/local/etc/apache2/httpd.conf httpd.conf; \ -fi -</programlisting> - - <para>Если разница между файлами несущественна я могу выполнить - <command>cp /usr/local/etc/apache2/httpd.conf - httpd.conf</command>.</para> - - <para>Я использовал систему &scratch.ap; несколько раз для обновления - <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>STABLE</literal> должно проходить безболезненно - (хотя я ещё не пробовал этого делать).</para> - </sect1> - - <sect1 xml:id="files"> - <title>Файлы</title> - - <para>Вот три файла, которые вам нужны кроме тех конфигурационных, что - уже показаны выше.</para> - - <para>Это скрипт <link xlink:href="stage_1.sh"> - <filename>stage_1.sh</filename></link>, который вы не должны - модифицировать.</para> - - <programlisting> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default" parse="text"/> - </programlisting> - - <para>Скачайте <link xlink:href="stage_1.sh"><filename>stage_1.sh</filename></link>.</para> - - <para>Это скрипт <link xlink:href="stage_2.sh"><filename>stage_2.sh</filename></link>. Вам может - понадобиться изменить переменные в самом начале файла.</para> - - <programlisting> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.sh" parse="text"/> - </programlisting> - - <para>Скачайте <link xlink:href="stage_2.sh"><filename>stage_2.sh</filename></link>.</para> - - <para>Это мой файл <link xlink:href="stage_3.mk"><filename>stage_3.mk</filename></link>, который даст - вам идею о том, как автоматизировать всю повторную конфигурацию.</para> - - <programlisting> -<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default" parse="text"/> - </programlisting> - - <para>Скачайте <link xlink:href="stage_3.mk"><filename>stage_3.mk</filename></link>.</para> - </sect1> -</article> |