- Merge the following from the English version:

r44733 -> r44734	head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml
This commit is contained in:
Ryusuke SUZUKI 2014-05-26 10:36:36 +00:00
parent 241300a95c
commit 09a139ca91
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44955

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r44733
Original revision: r44734
$FreeBSD$
-->
<chapter xmlns="http://docbook.org/ns/docbook"
@ -1454,6 +1454,25 @@ before running "/usr/sbin/freebsd-update install"</screen>
<para>これらを配慮し、アップグレードの推奨手順が作られました。</para>
<note>
<para><command>make</command> を実行したときの出力は、
ファイルに保存すると良いでしょう。
何か障害が発生した場合には、エラーメッセージのコピーを
&os; メーリングリストに投稿してください。</para>
<para>ファイルに保存する最も簡単な方法は、<command>script</command>
コマンドを使い、
引数として出力の保存先のファイル名を指定することです。
<filename>/tmp</filename> に出力を保存しないようにしてください。
このディレクトリは、次の再起動で削除されてしまう可能性があります。
出力の保存には、<filename>/var/tmp</filename> が適しています。
次のコマンドを world の構築の直前に行ない、再構築が終了したら
<userinput>exit</userinput> と入力してください。</para>
<screen>&prompt.root; <userinput>script <replaceable>/var/tmp/mw.out</replaceable></userinput>
Script started, output file is /var/tmp/mw.out</screen>
</note>
<procedure>
<title>world の構築プロセスの概要</title>
@ -1638,6 +1657,11 @@ before running "/usr/sbin/freebsd-update install"</screen>
<para>world
の構築プロセスでは、いくつかの設定ファイルが使われます。</para>
<para><filename>/usr/src</filename> に置かれている、
<filename>Makefile</filename> には、
&os; を構成するプログラムの構築方法や、
どういう順番でそれらを構築すべきかといった指示が記述されています。</para>
<para><command>make</command> で利用可能なオプションの説明は
&man.make.conf.5; や、共通の例が
<filename>/usr/share/examples/etc/make.conf</filename> にあります。
@ -1670,152 +1694,69 @@ before running "/usr/sbin/freebsd-update install"</screen>
</sect2>
<sect2 xml:id="make-buildworld">
<title>ベースシステムの再構築</title>
<title>変数とターゲット</title>
<para>実行される &man.make.1; からの出力は、
ファイルに保存すると良いでしょう。
もし、何か障害が発生した場合、エラーメッセージのコピーを
&os; メーリングリストに投稿してください。</para>
<para>ファイルに保存する最も簡単な方法は、&man.script.1;
コマンドを使い、引数に出力を保存したいファイル名を指定することです。
これを make world の直前に行ない、再構築が終了したら
以下のように <userinput>exit</userinput> と入力してください。</para>
<screen>&prompt.root; <userinput>script /var/tmp/mw.out</userinput>
Script started, output file is /var/tmp/mw.out
&prompt.root; <userinput>make TARGET</userinput>
<emphasis>&hellip; compile, compile, compile &hellip;</emphasis>
&prompt.root; <userinput>exit</userinput>
Script done, &hellip;</screen>
<para><filename>/tmp</filename>
に出力を保存しては<emphasis>いけません</emphasis>
このディレクトリは、次の再起動で削除されてしまう可能性があります。
出力の保存には、<filename>/var/tmp</filename>
<systemitem class="username">root</systemitem>
のホームディレクトリが適しています。</para>
<para><filename>/usr/src</filename> にて、
次のように実行してください。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput></screen>
<indexterm>
<primary><command>make</command></primary>
</indexterm>
<para>world を再構築するには、&man.make.1; を使用してください。
このコマンドは、<filename>Makefile</filename> から、
&os; を構成するプログラムの再構築方法や、
どういう順番でそれらを構築すべきかといったような指示を読み込みます。</para>
<para>コマンドラインの一般的な書式は、次のとおりです。</para>
<para><command>make</command> の使用における一般的な書式は、
次のとおりです。</para>
<screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen>
<para>この例では、<option>-<replaceable>x</replaceable></option>
&man.make.1; に渡されるオプションになります。
<command>make</command> に渡されるオプションになります。
どのようなオプションが利用できるかについては、&man.make.1;
を参照してください。</para>
<para><option>-D<replaceable>VARIABLE</replaceable></option>
は、<filename>Makefile</filename> に渡される変数であり、
<para>変数を渡すには、変数の名前を
<option>-D<replaceable>VARIABLE</replaceable></option>
のように指定してください。
この変数は <filename>Makefile</filename> の動作をコントロールします。
また、<filename>/etc/make.conf</filename> で設定される変数も
同様です。これは変数を設定するもう一つの方法として用意されています。
たとえば以下の通りです。</para>
変数の指定は、<filename>/etc/make.conf</filename> で設定するか、
<command>make</command> の実行時に指定するかのどちらかで行います。
たとえば、以下の変数は、プロファイル版のライブラリを構築しないことを指定します。</para>
<screen>&prompt.root; <userinput>make -DNO_PROFILE <replaceable>target</replaceable></userinput></screen>
<para>は、プロファイル版のライブラリを構築しないことを指定する
もう一つの記法で、<filename>/etc/make.conf</filename> 中の</para>
<para>これは、<filename>/etc/make.conf</filename>
の中で以下のように設定することに対応します。</para>
<programlisting>NO_PROFILE= true # Avoid compiling profiled libraries</programlisting>
<para>の行に対応します。</para>
<para><replaceable>target</replaceable> は、&man.make.1;
<para><replaceable>target</replaceable> は、<command>make</command>
どのように動作するのかを指示するためのものです。
<filename>Makefile</filename> には、数多くの異なる
<quote>ターゲット (target)</quote> が定義されていて、
指定されたターゲットによって動作が決まります。</para>
<para><filename>Makefile</filename> に書かれているターゲットには、
<filename>Makefile</filename> は利用可能なターゲットを定義しています。
ターゲットには、
システムの再構築に必要な段階を、
多くのさらに細かい段階に分割するため、
構築の過程で利用されるものがあります。</para>
<para>大抵の場合、&man.make.1;
にパラメータを指定する必要はないでしょうから、
コマンドラインは次のようなものになります。</para>
<screen>&prompt.root; <userinput>make <replaceable>target</replaceable></userinput></screen>
<para>ここで、<replaceable>target</replaceable>
は、多くのビルドオプションのどれかになります。
最初のターゲットはいつも <buildtarget>buildworld</buildtarget>
になるでしょう。</para>
<para>その名前が示すように、<buildtarget>buildworld</buildtarget>
<filename>/usr/obj</filename>
以下に新しい完全なディレクトリツリーを構築し、
<buildtarget>installworld</buildtarget> は、そのツリーを
現在のマシンにインストールします。</para>
<para>選択肢が分けられていることは、二つの理由から有用です。
まず第一に、構築作業は
<quote>何にも依存せず独立して行なわれ</quote>
稼働中のシステムにまったく影響を与えません。
<!-- hrs:2000/02/14: needs good phrase that means "self hosted" -->
そのため、マルチユーザモードで稼働中のシステムでも、何一つ
悪影響を与えずに <buildtarget>buildworld</buildtarget>
実行することができます。
まず第一に、構築作業は稼働中のシステムにまったく影響を与えません。
そのため、マルチユーザモードで稼働中のシステムでも、安全に
<buildtarget>buildworld</buildtarget> を実行できます。
ただし、<buildtarget>installworld</buildtarget>
シングルユーザモードで行なうことをおすすめします。</para>
<para>第二に、NFS マウントを利用することで、
ネットワーク上の複数のマシンをアップグレードすることが可能な点があげられます。
たとえば三台のマシン、
<systemitem>A</systemitem>,
<systemitem>B</systemitem>, <systemitem>C</systemitem>
をアップグレードしたい場合には、まずマシン <systemitem>A</systemitem>
<command>make buildworld</command>
<command>make installworld</command> を実行します。
それから、マシン <systemitem>B</systemitem>
とマシン <systemitem>C</systemitem>
でマシン <systemitem>A</systemitem>
<filename>/usr/src</filename><filename>/usr/obj</filename>
NFS マウントし、<command>make installworld</command>
とすることで構築済みのシステムを各マシンにインストールできます。</para>
<para>第二に、<acronym>NFS</acronym> マウントを利用することで、<xref
linkend="small-lan"/> で説明されているように、
ネットワーク上の複数のマシンをアップグレードすることが可能な点があげられます。</para>
<para><buildtarget>world</buildtarget> ターゲットも利用可能ですが、
このターゲットの利用は推奨されていません。</para>
<para>そのかわり、次のコマンド</para>
<screen>&prompt.root; <userinput>make buildworld</userinput></screen>
<para>を実行してください。ここで <command>make</command>
<para><command>make</command>
<option>-j</option> をつけると、
同時に複数のプロセスを生成できます。
この機能はマルチ CPU マシンで特に効果を発揮します。
構築過程の大部分では CPU 性能の限界より
I/O 性能の限界の方が問題となるため、シングル CPU
マシンに効果があります。</para>
構築過程の大部分では <acronym>CPU</acronym> 性能の限界より
<acronym>I/O</acronym> 性能の限界の方が問題となるため、
シングル <acronym>CPU</acronym> とマルチ <acronym>CPU</acronym>
マシンの両方に効果があります。</para>
<para>普通のシングル CPU マシンで以下のコマンド</para>
<screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
<para>を実行すると、&man.make.1;
は最大 4 個までのプロセスを同時に実行します。
<para>普通のシングル <acronym>CPU</acronym> マシンで以下のコマンド
を実行すると、最大 4 個までのプロセスを同時に実行します。
メーリングリストに投稿された経験的な報告によると、
4 個という指定が最も良いパフォーマンスを示すようです。</para>
<para>もし、複数の CPU を備えたマシンで SMP
設定が行なわれたカーネルを利用しているなら、
6 から 10 の間の値を設定し、
<screen>&prompt.root; <userinput>make -j4 buildworld</userinput></screen>
<para>マルチ <acronym>CPU</acronym> マシンでは、
<literal>6</literal> から <literal>10</literal> の間の値を設定し、
速度がどれくらい向上するか確認してみてください。</para>
<indexterm>
@ -1823,20 +1764,15 @@ Script done, &hellip;</screen>
<secondary>時間</secondary>
</indexterm>
<para>構築時間を決める要素はさまざまありますが、
十分新しいマシンであれば、
トリックや近道を使わずに普通に構築した場合、&os.stable;
の構築には 1, 2 時間しかかからないでしょう。
&os.current; の構築は、もう少し時間がかかります。</para>
<note>
<para><command>make buildworld</command>
に変数を指定した場合は、同じ指定を
<command>make installworld</command> にも指定しなければなりません。
ただし <option>-j</option>
<buildtarget>installworld</buildtarget> で絶対に使ってはいけません。</para>
ただし <buildtarget>installworld</buildtarget>
では、<option>-j</option>
<emphasis>絶対に使ってはいけません</emphasis></para>
<para>たとえば以下のように実行したなら、</para>
<para>たとえば、以下のコマンドを実行したなら、</para>
<screen>&prompt.root; <userinput>make -DNO_PROFILE buildworld</userinput></screen>
@ -1844,9 +1780,9 @@ Script done, &hellip;</screen>
<screen>&prompt.root; <userinput>make -DNO_PROFILE installworld</userinput></screen>
<para>もしそうしなかった場合、
<command>make buildworld</command> の段階で構築されていない
プロファイル版ライブラリをインストールしようとしてしまうでしょう。</para>
<para>もしそうしなかった場合、2 番目のコマンドは、
<command>make buildworld</command>
の段階で構築されていないプロファイル版ライブラリをインストールしようとしてしまうでしょう。</para>
</note>
</sect2>