Merge the following from the English version:

1.236 -> 1.240	doc/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml

Reference:	[doc-jp-work 2251]
This commit is contained in:
Ryusuke SUZUKI 2012-04-17 14:30:48 +00:00
parent 572f86bbe2
commit 3ba177b363
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=38687

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.236
Original revision: 1.240
$FreeBSD$
-->
@ -174,7 +174,7 @@
<command>freebsd-update</command> の機能が含まれていたら、
以下の作業を行うまでは無効にしておいてください。</para>
<sect2>
<sect2 id="freebsdupdate-config-file">
<title>設定ファイル</title>
<para>設定ファイル <filename>/etc/freebsd-update.conf</filename>
@ -262,7 +262,7 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
リストに属するファイルをアップデートします。</para>
</sect2>
<sect2>
<sect2 id="freebsdupdate-security-patches">
<title>セキュリティパッチ</title>
<para>セキュリティパッチはリモートマシンに保存されており、
@ -570,7 +570,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
これでアップグレードのプロセスは完了です。</para>
</sect2>
<sect2>
<sect2 id="freebsdupdate-system-comparison">
<title>システムの状態の比較</title>
<para><command>freebsd-update</command> ユーティリティを用いて、
@ -1651,14 +1651,204 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
ここで説明されている手順を用いるべきです。</para>
</warning>
<sect2>
<sect2 id="canonical-build">
<title>システムを更新する正式な方法</title>
<para>システムを更新する前に、
<filename>/usr/src/UPDATING</filename> を確認してください。
<filename>/usr/src/UPDATING</filename> を読んでください。
このファイルには、用意したソースコードで buildworld
を行う前に必要な手順が書かれています。
その後、次の手順を踏んでください。</para>
その後、以下の手順を踏んでください。</para>
<para>この節で説明するアップデートのプロセスは、古いコンパイラ、
古いカーネル、古い world、そして古いコンフィグレーションファイルからなる、
古いバージョンの &os; をアップデートすることを想定しています。
ここで <quote>world</quote> は、コアシステムのバイナリ、ライブラリ、
プログラミングファイルを意味します。
コンパイラは <quote>world</quote> の一部ですが、
いくつか特別に気をつけなければならないことがあります。</para>
<para>また、新しいシステムのソースをすでに入手していることも仮定しています。
もしシステムのソースコードが古いようでしたら、
<xref linkend="synching"> を読んで、
ソースコードを新しいバージョンへ同期する方法の詳細を理解してください。</para>
<para>ソースからのシステムのアップデートは、
当初予想していたものよりとらえがたいものです。
長い年月において避けられない依存問題が判明したため、
&os; の開発者達は、推奨されるアプローチを大きく変更しました。
この節では、現在推奨されているアップグレードの手順の背後にある、
理論的根拠について説明します。</para>
<para>連続したアップデートの手順は、以下の問題に対応している必要があります。</para>
<itemizedlist>
<listitem>
<para>古いコンパイラは、
新しいカーネルをコンパイルできない可能性があります
(古いコンパイラはときどきバグを含んでいます)。
そのため、新しいカーネルの構築には、
新しいコンパイラを使う必要があります。
特に、新しいカーネルを構築する前に、
新しいコンパイラが構築されていなければなりません。
必ずしも、新しいカーネルを構築する前に、新しいコンパイラが
<emphasis>インストールされている</emphasis>
必要があることを意味しているわけではありません。</para>
</listitem>
<listitem>
<para>新しい world は、
新しいカーネルの機能に依存している可能性があるため、
新しい world をインストールする前に、
新しいカーネルがインストールされていなければなりません。</para>
</listitem>
</itemizedlist>
<para>これら 2 つの重要事項は、
以下の説明で中心となる <maketarget>buildworld</maketarget>,
<maketarget>buildkernel</maketarget>,
<maketarget>installkernel</maketarget>,
<maketarget>installworld</maketarget> の基本です。
現在推奨されているアップグレードプロセスを採用したほうが良いという理由をすべて含んでいるわけではありません。
以下では、もう少し明確ではない点についてリストアップします。</para>
<itemizedlist>
<listitem>
<para>古い world は、新しいカーネルでは正しく動かないかも知れません。
そのため、新しいカーネルをインストールしたら、
直ちに新しい world をインストールしてください。</para>
</listitem>
<listitem>
<para>設定の中には、新しい world
をインストールする前に変更すべきものがありますが、
古い world を壊す可能性があります。
そのため、一般的に設定のアップデートは、
2 つの手順が必要です。</para>
</listitem>
<listitem>
<para>多くの場合、アップデートのプロセスは、ファイルを置き換えたり、
追加のみを行い、古いファイルを削除しません。
このことが問題を引き起こす可能性があります。
そのため、アップデートにおいては、
手動で削除すべきファイルがあることを、
特定のステップで指定することもあります。
これは将来自動化されるかもしれないし、されないかもしれません。</para>
</listitem>
</itemizedlist>
<para>これらを配慮し、以下の推奨手順が作られました。
アップデートの細かい手順においては、追加の手順が必要になるかもしれませんが、
この中心となるプロセスは、しばらくの間変わっていません。</para>
<orderedlist>
<listitem>
<para><command>make <maketarget>buildworld</maketarget></command></para>
<para>新しいコンパイラと関連ツールを最初にコンパイルし、
その後、新しいコンパイラで、
新しい world の残りの部分をコンパイルします。
コンパイルされたものは、
<filename class="directory">/usr/obj</filename> に格納されます。</para>
</listitem>
<listitem>
<para><command>make <maketarget>buildkernel</maketarget></command></para>
<para>&man.config.8; と &man.make.1; を用いた古い方法とは異なり、
<filename class="directory">/usr/obj</filename> にある
<emphasis>新しい</emphasis> コンパイラが用いられます。
これにより、コンパイラとカーネルのミスマッチを防ぐことができます。</para>
</listitem>
<listitem>
<para><command>make <maketarget>installkernel</maketarget></command></para>
<para>新しくアップデートされたカーネルで起動できるように、
新しいカーネルとカーネルモジュールをディスク上に配置します。
</para>
</listitem>
<listitem>
<para>シングルユーザモードで再起動</para>
<para>シングルユーザモードは、
すでに実行されているソフトウェアをアップデートする際の問題を最小限にします。
また、新しいカーネル上で古い world が実行される際の問題も最小限にします。</para>
</listitem>
<listitem>
<para><command>mergemaster <option>-p</option></command></para>
<para>新しい world における最初の設定ファイルのアップデートを行います。
たとえば、新しいユーザグループをシステムに追加したり、
パスワードデータベースに対し、新しいユーザ名を追加するかもしれません。
前回のアップデート後に、
新しいグループや特別のシステムのユーザアカウントが追加された場合に、
<maketarget>installworld</maketarget> のステップで、
新しくインストールされたシステムのユーザまたはシステムのグループ名を問題なく使うことができるように、
この作業がときどき必要となります。</para>
</listitem>
<listitem>
<para><command>make <maketarget>installworld</maketarget></command></para>
<para>world を <filename class="directory">/usr/obj</filename> からコピーします。
これで、ディスクには新しいカーネルと world が置かれたことになります。</para>
</listitem>
<listitem>
<para><command>mergemaster</command></para>
<para>ディスクに新しい world が置かれたので、
残りの設定ファイルをアップデートします。</para>
</listitem>
<listitem>
<para>再起動</para>
<para>新しいカーネル、world そして設定ファイルがロードされたので、
再起動が必要です。</para>
</listitem>
</orderedlist>
<para>もし、&os; のあるブランチのあるリリースから、
同じブランチの最新リリースにアップデートするのであれば
(たとえば 7.0 から 7.1)、
この手順にしたがわなくても良いでしょう。
なぜならば、コンパイラ、カーネル、ユーザランド、そして設定ファイルの間で、
重度のミスマッチが起きることはあまり考えられないためです。
マイナーなアップデートでは、新しいカーネルの構築とインストール後に、
古いアプローチである
<command>make <maketarget>world</maketarget></command>
を用いてもうまくいくでしょう。</para>
<para>しかしながら、メジャーリリースをまたいだアップデートでは、
この方法を用いないと、何らかの問題にぶつかるでしょう。</para>
<para>大きなアップグレード
(たとえば &nbsp;4.<replaceable>X</replaceable> から 5.0 へのアップデート)
においては、(たとえば installworld の前に特定のファイルの名前の変更や削除などの)
特別な追加のステップも必要となるでしょう。
<filename>/usr/src/UPDATING</filename> ファイルを注意深く読んでください。
特にファイルの最後には、
現在推奨されているアップグレードの手順が詳しく正確に説明されています。</para>
<para>この手続きは、
開発者たちがある種のミスマッチを完全に避けるために、長い年月をかけて進化してきました。
願わくば、この現在の手順が長い間安定してほしいものです。</para>
<note>
<para>&os; 3.<replaceable>X</replaceable>
やそれ以前のリリースからのアップグレードは、
さらにもう少しトリッキーです。
このようなアップグレードを行う必要がある場合には、
<filename>UPDATING</filename> を注意深く読んでください。</para>
</note>
<para>まとめると、現在、ソースからの &os;
のアップグレードにおいて推奨されている方法は以下となります。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildworld</userinput>
@ -1681,7 +1871,8 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
シングルユーザモードで立ち上げましょう。
それから、以下を実行してください。</para>
<screen>&prompt.root; <userinput>mount -a -t ufs</userinput>
<screen>&prompt.root; <userinput>adjkerntz -i</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput>
&prompt.root; <userinput>mergemaster -p</userinput>
&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make installworld</userinput>
@ -1699,7 +1890,7 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
</warning>
</sect2>
<sect2>
<sect2 id="src-updating">
<title><filename>/usr/src/UPDATING</filename> を読む</title>
<para>何を始めるにしろ、まず最初に
@ -1718,7 +1909,7 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
</important>
</sect2>
<sect2>
<sect2 id="make-conf">
<title><filename>/etc/make.conf</filename> の確認</title>
<indexterm>
@ -1745,7 +1936,7 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
</para>
</sect2>
<sect2>
<sect2 id="updating-etc">
<title><filename>/etc</filename> にあるファイルの更新</title>
<para>
@ -1866,7 +2057,7 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
</sect2>
<sect2>
<sect2 id="cleaning-usr-obj">
<title><filename>/usr/obj</filename> の削除</title>
<para>システムが再構築される時、構築されたものは (デフォルトで)
@ -2080,7 +2271,7 @@ Script done, &hellip;</screen>
</sect3>
</sect2>
<sect2>
<sect2 id="new-kernel">
<title>新しいカーネルの構築とインストール</title>
<indexterm>
<primary>カーネル (kernel)</primary>
@ -2131,7 +2322,7 @@ Script done, &hellip;</screen>
&man.chflags.1; をご覧ください。</para>
</sect2>
<sect2>
<sect2 id="new-kernel-singleuser">
<title>シングルユーザモードで再起動する</title>
<indexterm><primary>single-user mode</primary></indexterm>
@ -2179,7 +2370,7 @@ Script done, &hellip;</screen>
</note>
</sect2>
<sect2>
<sect2 id="post-installworld-updates">
<title><command>make installworld</command> で更新されないファイルの更新</title>
<para>
@ -2521,7 +2712,7 @@ Script done, &hellip;</screen>
&prompt.root; <userinput>make all install</userinput></screen>
</sect2>
<sect2>
<sect2 id="updating-questions">
<title>質問ですか?</title>
<qandaset>
@ -2888,7 +3079,7 @@ Building everything..
に持っていなければなりません。</para>
</sect2>
<sect2>
<sect2 id="small-lan-base-system">
<title>ベースシステム</title>
<para>さて、準備は整ったので、ビルドしましょう。
@ -2914,7 +3105,7 @@ Building everything..
同じ手順でビルドセットの他のマシンにも新しいソフトウェアをインストールします。</para>
</sect2>
<sect2>
<sect2 id="small-lan-ports">
<title>Ports</title>
<para>ports ツリーにも同じアイデアが使えます。