- Merge the following from the English version:

r43795 -> r43796	head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.xml
This commit is contained in:
Ryusuke SUZUKI 2014-03-14 10:38:26 +00:00
parent 2f3d1b5db2
commit 06b8b76e09
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=44233

View file

@ -3,7 +3,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r43795
Original revision: r43796
$FreeBSD$
-->
<chapter xmlns="http://docbook.org/ns/docbook"
@ -1558,7 +1558,8 @@ before running "/usr/sbin/freebsd-update install"</screen>
に書かれている手順で入手したソースを用いて、
古い &os; のバージョンをアップデートしてください。</para>
<para><quote>world</quote> は、&os; のカーネル、コアシステムのバイナリ、
<para>&os; では、<quote>world</quote> は、
カーネル、コアシステムのバイナリ、
ライブラリ、プログラミングファイル、組み込みのコンパイラを意味します。
これらのコンポーネントの構築およびインストールの順番は重要です。</para>
@ -1582,179 +1583,130 @@ before running "/usr/sbin/freebsd-update install"</screen>
をインストールする前に変更すべきものがありますが、
古い world を壊す可能性があります。
そのため、一般的に設定のアップデートは、
2 つの手順が必要です。
2 つの手順が使われます。
多くの場合、アップデートのプロセスは、ファイルを置き換えたり、
追加のみを行い、古いファイルを削除しません。
このことが問題を引き起こす可能性があります。
そのため、アップデートにおいては、
手動で削除すべきファイルがあることを、
特定のステップで指定することもあります。</para>
このことが問題を引き起こす可能性があるため、
<filename>/usr/src/UPDATING</filename> には、
手動で削除すべきファイルをどのステップで削除すべきかが書かれています。</para>
<para>これらを配慮し、以下のアップグレードの推奨手順が作られました。</para>
<para>これらを配慮し、アップグレードの推奨手順が作られました。</para>
<procedure>
<title>world の構築プロセスの概要</title>
<para>world の構築プロセスで用いられるコマンドは、
ここで示されている順番で実行してください。
この節では各コマンドの機能についてまとめます。</para>
<step>
<step>
<para>新しいコンパイラと関連ツールを最初にコンパイルし、
その後、新しいコンパイラで、
新しい world の残りの部分をコンパイルします。
コンパイルされたものは、
<filename>/usr/obj</filename> に格納されます。</para>
<filename class="directory">/usr/obj</filename>
に格納されます。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput></screen>
</step>
<step>
<para><command>make
buildkernel</command></para>
<para>コンパイラとカーネルのミスマッチを防ぐため、
<filename class="directory">/usr/obj</filename>
にある新しいコンパイラを用いて新しいカーネルを構築します。</para>
<para>ここでは、
<filename>/usr/obj</filename> にある
<emphasis>新しい</emphasis> コンパイラが用いられます。
これにより、コンパイラとカーネルのミスマッチを防ぐことができます。</para>
<screen>&prompt.root; <userinput>make buildkernel</userinput></screen>
</step>
<step>
<para><command>make installkernel</command></para>
<para>新しくアップデートされたカーネルで起動できるように、
新しいカーネルとカーネルモジュールをディスク上に配置します。
</para>
新しいカーネルとカーネルモジュールをディスク上に配置します。</para>
<screen>&prompt.root; <userinput>make installkernel</userinput></screen>
</step>
<step>
<para>シングルユーザモードで再起動</para>
<step>
<para>すでに実行されているソフトウェアをアップデートする際の問題を最小限にするため、シングルユーザモードに移行します。
また、新しいカーネル上で古い world
が実行される際の問題も最小限にします。</para>
<para>シングルユーザモードは、
すでに実行されているソフトウェアをアップデートする際の問題を最小限にします。
また、新しいカーネル上で古い world が実行される際の問題も最小限にします。</para>
</step>
<screen>&prompt.root; <userinput>shutdown now</userinput></screen>
<step>
<para><command>mergemaster -p</command></para>
<para>新しい world における最初の設定ファイルのアップデートを行います。
たとえば、新しいユーザグループをシステムに追加したり、
パスワードデータベースに対し、新しいユーザ名を追加するかもしれません。
前回のアップデート後に、
新しいグループや特別のシステムのユーザアカウントが追加された場合に、
<buildtarget>installworld</buildtarget> のステップで、
新しくインストールされたシステムのユーザまたはシステムのグループ名を問題なく使うことができるように、
この作業がときどき必要となります。</para>
</step>
<step>
<para><command>make installworld</command></para>
<para>world を <filename>/usr/obj</filename> からコピーします。
これで、ディスクには新しいカーネルと world が置かれたことになります。</para>
</step>
<step>
<para><command>mergemaster</command></para>
<para>ディスクに新しい world が置かれたので、
残りの設定ファイルをアップデートします。</para>
</step>
<step>
<para><command>make
delete-old</command></para>
<para>このターゲットは (使われなくなった) ファイルを削除します。
もし使われなくなったファイルがディスクに残っていると、
問題が起きる可能性があるため重要な作業です。
たとえば、古い <filename>utmp.h</filename> が残っていると、
新しい <filename>utmpx.h</filename> をインストールしたときに、
問題が起きる ports があります。</para>
</step>
<step>
<para>再起動</para>
<para>新しいカーネル、world そして設定ファイルがロードされたので、
再起動が必要です。</para>
</step>
<step>
<para><command>make
delete-old-libs</command></para>
<para>使われなくなったライブラリが新しいライブラリと競合することを避けるため削除します。
古いライブラリを削除する前にすべての ports を再構築する必要があります。</para>
</step>
</procedure>
<para>もし、&os; のあるブランチのあるリリースから、
同じブランチの最新リリースにアップデートするのであれば
(たとえば 9.0 から 9.1)、
この手順にしたがわなくても良いでしょう。
なぜならば、コンパイラ、カーネル、ユーザランド、そして設定ファイルの間で、
重度のミスマッチが起きることはあまり考えられないためです。
マイナーなアップデートでは、新しいカーネルの構築とインストール後に、
古いアプローチである
<command>make world</command>
を用いてもうまくいくでしょう。</para>
<para>メジャーリリースをまたいだアップデートでは、
この方法を用いないと、何らかの問題にぶつかるでしょう。</para>
<para>この手続きは、
開発者たちがある種のミスマッチを完全に避けるために、長い年月をかけて進化してきました。
願わくば、この現在の手順が長い間安定してほしいものです。</para>
<para>まとめると、現在、ソースからの &os;
のアップグレードにおいて推奨されている方法は以下となります。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>
&prompt.root; <userinput>make buildkernel</userinput>
&prompt.root; <userinput>make installkernel</userinput>
&prompt.root; <userinput>shutdown -r now</userinput></screen>
<note>
<para>まれに <buildtarget>buildworld</buildtarget>
の前に <command>mergemaster -p</command>
を余分に実行することが必要な場合があります。その場合は
<filename>UPDATING</filename> にそう書かれています。
&os; のメジャーバージョンをまたいで更新するのでなければ、
通常はこの手順を省略してもなんら問題ないでしょう。</para>
</note>
<para><buildtarget>installkernel</buildtarget>
が無事に終了したら、ローダのプロンプトから
<command>boot -s</command>
を使ってシングルユーザモードで立ち上げてください。</para>
<para>UFS を使っているのなら、以下を実行してください。</para>
<para>シングルユーザモードに移行したら、UFS
でフォーマットされているシステムでは、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>mount -u /</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput></screen>
<para>ZFS を使っている場合には、以下を実行してください
(zpool の名前を zroot としています)。</para>
<para>もしシステムが ZFS でフォーマットされている場合には、
以下の 2 つのコマンドを実行してください。
この例では、zpool の名前は <literal>zroot</literal>
であると仮定します。</para>
<screen>&prompt.root; <userinput>zfs set readonly=off zroot</userinput>
&prompt.root; <userinput>zfs mount -a</userinput></screen>
</step>
<para>その後、以下を実行してください。:</para>
<step>
<para>その後、どちらのファイルシステムでも、
以下を実行してください。</para>
<screen>&prompt.root; <userinput>adjkerntz -i</userinput>
&prompt.root; <userinput>mergemaster -p</userinput>
&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make installworld</userinput>
&prompt.root; <userinput>mergemaster</userinput>
&prompt.root; <userinput>make delete-old</userinput>
&prompt.root; <userinput>reboot</userinput>
&prompt.root; <userinput>make delete-old-libs</userinput></screen>
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
</step>
<warning>
<title>この後の説明を読んでください</title>
<step>
<para>次に、新しい world
における最初の設定ファイルのアップデートを行います。たとえば、
このステップでは、最後のアップデート後に &os; に追加された、
新しいグループや新しいシステムアカウントををシステムに追加されることがあります。
<buildtarget>installworld</buildtarget> のステップで、
新しくインストールされたシステムのユーザおよびシステムのグループ名を問題なく使うことができるように、
この作業が必要となることがあります。</para>
<para>この後の節ではそれぞれのステップについて詳しく説明しています。
特にカスタムカーネルを利用する場合について説明しています。</para>
</warning>
<screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
</step>
<step>
<para><filename class="directory">/usr/obj</filename>
にある新しい world をインストールします。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make installworld</userinput></screen>
</step>
<step>
<para>残りの設定ファイルをアップデートします。</para>
<screen>&prompt.root; <userinput>mergemaster -p</userinput></screen>
</step>
<step>
<para>使われなくなったファイルを削除します。
もし使われなくなったファイルがディスクに残っていると、
問題が起きる可能性があるため重要な作業です。</para>
<screen>&prompt.root; <userinput>make delete-old</userinput></screen>
</step>
<step>
<para>再起動を行い、新しいカーネル、
world そして設定ファイルをロードします。</para>
<screen>&prompt.root; <userinput>reboot</userinput></screen>
</step>
<step>
<para>古いライブラリを削除する前に、
<xref linkend="ports-upgrading"/>
に書かれている手順にしたがって、
すべての ports を再構築する必要があります。
再構築が終わったら、新しいライブラリと競合することを避けるため、
使われなくなったライブラリを削除します。</para>
<screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
</step>
</procedure>
</sect2>
<sect2 xml:id="src-updating">
@ -1764,6 +1716,9 @@ before running "/usr/sbin/freebsd-update install"</screen>
<primary><filename>make.conf</filename></primary>
</indexterm>
<para>この後の節ではそれぞれのステップについて詳しく説明しています。
特にカスタムカーネルを利用する場合について説明しています。</para>
<para>&man.make.1; のオプションの説明は、&man.make.conf.5;
<filename>/usr/share/examples/etc/make.conf</filename> にあります。
これらの設定を <filename>/etc/make.conf</filename> に追加して、