- Merge the following from the English version:

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

- Related change:

	doc/ja_JP.eucJP/books/handbook/config/chapter.sgml
	doc/ja_JP.eucJP/books/handbook/kernelconfig/chapter.sgml
	doc/ja_JP.eucJP/books/handbook/ports/chapter.sgml
	doc/ja_JP.eucJP/books/handbook/preface/preface.sgml

References :	[doc-jp-work 2234, 2236, 2239]
This commit is contained in:
Ryusuke SUZUKI 2012-02-26 13:15:48 +00:00
parent fc44f4a0f1
commit de9219c70c
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=38537
5 changed files with 639 additions and 30 deletions
ja_JP.eucJP/books/handbook
config
cutting-edge
kernelconfig
ports
preface

View file

@ -84,7 +84,7 @@
</listitem>
<listitem>
<para>FreeBSD のソースコードを最新に保つこと
(<xref linkend="cutting-edge">) と、
(<xref linkend="updating-upgrading">) と、
カーネルコンフィグレーションおよび構築の基礎
(<xref linkend="kernelconfig">) に親しんでおく。</para>
</listitem>

View file

@ -2,11 +2,11 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.229
Original revision: 1.236
$FreeBSD$
-->
<chapter id="cutting-edge">
<chapter id="updating-upgrading">
<chapterinfo>
<authorgroup>
<author>
@ -38,33 +38,51 @@
<!-- with feedback from various others -->
</chapterinfo>
<title>開発の最前線</title>
<title>&os; のアップデートとアップグレード</title>
<sect1 id="cutting-edge-synopsis">
<sect1 id="updating-upgrading-synopsis">
<title>この章では</title>
<para>あるリリースから次のリリースまでの期間にも、
&os; の開発は休みなく続けられています。
この開発の最前線に興味を持っている人のために、
手元のシステムを最新の開発ツリーに同期させておくための、
とても使いやすい仕掛けが何種類も用意されています。
注意: 開発の最前線は、
誰もが扱えるという性質のものではありません!
最新の開発ツリーと同期することを好む人もいますし、
公式のリリース版を好んで使う方もいます。
しかしながら、公式のリリースといえども、
セキュリティや他の重要な修正のため、時にはアップデートを行う必要があります。
使用しているバージョンに関わらず、&os; は、
手元のシステムを最新の開発ツリーと同期するために必要なツールをすべて用意しています。
そして、これらのツールは、&os; のバージョンをアップグレードするためにも使えます。
もしもあなたが、開発途中のシステムを追いかけようか、
それともリリースバージョンのどれかを使い続けようかと迷っているのなら、
きっとこの章が参考になるでしょう。</para>
きっとこの章が参考になるでしょう。
手元のシステムをアップデートする基本的なツールについても解説しています。</para>
<para>この章を読んで分かるのは:</para>
<itemizedlist>
<listitem><para>2つの開発ブランチ、&os.stable; と &os.current; の違い</para>
<listitem>
<para>システムと Ports Collection
のアップデートに用いるユーティリティについて</para>
</listitem>
<listitem><para><application>CVSup</application>、
<application>CVS</application>、もしくは
<listitem>
<para><application>freebsd-update</application>,
<application>CVSup</application>,
<application>CVS</application> もしくは
<application>CTM</application>
を使ったシステム更新方法</para>
</listitem>
<listitem><para><command>make buildworld</command> (等)
<listitem>
<para>インストールされているシステムと、変更が行われていない状態との比較方法。</para>
</listitem>
<listitem>
<para>2 つの開発ブランチ、&os.stable; と &os.current; の違い</para>
</listitem>
<listitem>
<para><command>make buildworld</command> (等)
を使ってベースシステム全体を再構築しインストールする方法</para>
</listitem>
@ -84,8 +102,9 @@
<para>この章を通じて、
&os; のソースコードをダウンロードしたりアップデートするのに
<command>cvsup</command> コマンドが用いられます。
このコマンドを使うには、<filename
role="package">net/cvsup-without-gui</filename> のような port や package
このコマンドを使うには、
<filename role="package">net/cvsup-without-gui</filename>
のような port、または package
をインストールしておく必要があります。
&os;&nbsp;6.2-RELEASE 以降を使っているのであれば、
代わりに &man.csup.1; を使うと良いでしょう。
@ -93,8 +112,601 @@
</note>
</sect1>
<sect1 id="updating-upgrading-freebsdupdate">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Colin</firstname>
<surname>Percival</surname>
<contrib>ベースとなったノートの提供: </contrib>
</author>
</authorgroup>
</sect1info>
<title>FreeBSD Update</title>
<indexterm><primary>Updating and Upgrading</primary></indexterm>
<indexterm>
<primary>freebsd-update</primary>
<see>updating-upgrading</see>
</indexterm>
<para>セキュリティパッチを適用することは、コンピュータソフトウェア、
特にオペレーティングシステムを管理する上で重要な役割を果たします。
&os; にとって長い間、このプロセスは簡単なものではありませんでした。
パッチをソースコードに当てた後、コードからバイナリを再構築し、
バイナリを再びインストールする必要がありました。</para>
<para>現在では &os; に <command>freebsd-update</command>
と呼ばれるユーティリティが追加され、状況は変わりました。
このユーティリティは 2 つの機能を持っています。
第一に、&os; ベースシステムのビルドやインストールを行うことなく、
バイナリによってセキュリティおよび eratta アップデートできます。
第二に、このユーティリティはマイナーおよびメジャーリリースのアップグレードに対応しています。</para>
<note>
<para>バイナリアップデートは、
セキュリティチームがサポートしているすべてのアーキテクチャとリリースで利用できます。
しかしながら、&os;
オペレーティングシステムのアップグレードなどいくつかの機能については、
最新の &man.freebsd-update.8; と &os; 6.3 以降を必要とします。
新しいリリースにアップデートする前に、現在のリリースのアナウンスに目を通し、
アップデートしようとしているリリースに対して重要な情報がないかどうかを確認してください。
これらのアナウンスは
<ulink url="http://www.FreeBSD.org/ja/releases/"></ulink>
で確認できます。</para>
</note>
<para>もし <command>crontab</command> の中に
<command>freebsd-update</command> の機能が含まれていたら、
以下の作業を行うまでは無効にしておいてください。</para>
<sect2>
<title>設定ファイル</title>
<para>設定ファイル <filename>/etc/freebsd-update.conf</filename>
をきめ細かく調整して、アップデートプロセスを制御するユーザもいます。
この作業は良く文書化されていますが、
以下のいくつかの項目については説明が必要でしょう。</para>
<programlisting># Components of the base system which should be kept updated.
Components src world kernel</programlisting>
<para>このパラメータは、&os; のどの部分を最新に維持するかを設定します。
デフォルトではソースコード、ベースシステム全体、そしてカーネルをアップデートします。
Components に設定できる項目は、インストール時に選択できるものと同じです。
たとえば、ここで "world/games" を追加すると、
game にパッチが当たるようになります。
"src/bin" を追加すると、<filename class="directory">src/bin</filename>
ソースコードのアップデートを許可します。</para>
<para>この部分についてはデフォルトのままにしておき、
アップデートしたい項目をユーザがリストに加える形にするのがベストでしょう。
ソースコードとバイナリが同期していないと、
悲惨な結果をもたらす可能性があります。</para>
<programlisting># Paths which start with anything matching an entry in an IgnorePaths
# statement will be ignored.
IgnorePaths</programlisting>
<para>アップデートで変更されてはいけない特定のディレクトリ、
<filename class="directory">/bin</filename> や
<filename class="directory">/sbin</filename> 等のパスを追加してください。
このオプションは、ローカルの変更点を <command>freebsd-update</command>
が上書きすることを防ぐ目的にも利用できます。</para>
<programlisting># Paths which start with anything matching an entry in an UpdateIfUnmodified
# statement will only be updated if the contents of the file have not been
# modified by the user (unless changes are merged; see below).
UpdateIfUnmodified /etc/ /var/ /root/ /.cshrc /.profile</programlisting>
<para>指定したディレクトリにある設定ファイルが、
ローカルで変更されていない場合のみアップデートします。
ユーザがこれらのファイルを変更していると、
これらのファイルの自動アップデートは無効になります。
他に、<literal>KeepModifiedMetadata</literal>
という別のオプションが存在します。
このオプションは、<command>freebsd-update</command>
がマージ中に変更点を保存するようにします。</para>
<programlisting># When upgrading to a new &os; release, files which match MergeChanges
# will have any local changes merged into the version from the new release.
MergeChanges /etc/ /var/named/etc/</programlisting>
<para><command>freebsd-update</command>
がマージすべきファイルが存在するディレクトリの一覧です。
ファイルのマージのプロセスは、
&man.mergemaster.8; と同様 &man.diff.1; パッチの連続です。
マージを承認するか、エディタを起動するか、
<command>freebsd-update</command>
を中断するかどうかを選んでください。
もし、心配な点があれば、
<filename class="directory">/etc</filename>
をバックアップしてからマージを承認してください。
<command>mergemaster</command> コマンドの詳細な情報については、
<xref linkend="mergemaster"> で確認してください。</para>
<programlisting># Directory in which to store downloaded updates and temporary
# files used by &os; Update.
# WorkDir /var/db/freebsd-update</programlisting>
<para>ここではすべてのパッチや一次ファイルを置くディレクトリを指定しています。
バージョンをアップグレードするのであれば、
この場所には少なくともギガバイトの空き容量が必要です。</para>
<programlisting># When upgrading between releases, should the list of Components be
# read strictly (StrictComponents yes) or merely as a list of components
# which *might* be installed of which &os; Update should figure out
# which actually are installed and upgrade those (StrictComponents no)?
# StrictComponents no</programlisting>
<para><literal>yes</literal> に設定すると、
<command>freebsd-update</command> は
<literal>Components</literal> のリストが完全に正しいと判断し、
このリスト以外の変更点については取り扱いません。
<command>freebsd-update</command> は、効率的に
<literal>Components</literal>
リストに属するにファイルをアップデートします。</para>
</sect2>
<sect2>
<title>セキュリティパッチ</title>
<para>セキュリティパッチはリモートマシンに保存されており、
以下のコマンドを実行すると、ダウンロードしてインストールします。</para>
<screen>&prompt.root; <userinput>freebsd-update fetch</userinput>
&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>カーネルにパッチが当たった場合には、システムを再起動する必要があります。
すべてがうまく実行でき、システムにパッチが当たるようであれば、
毎晩の &man.cron.8; ジョブとして <command>freebsd-update</command>
を実行してもよいでしょう。
このタスクを実行できるようにするには、
以下のエントリを <filename>/etc/crobntab</filename> に追加してください。</para>
<programlisting>@daily root freebsd-update cron</programlisting>
<para>このエントリは、毎日一度
<command>freebsd-update</command> を実行することを意味します。
このように <option>cron</option> に記述すると、
<command>freebsd-update</command>
はアップデートが存在するときだけ確認します。
パッチが存在すると、
自動的にローカルディスクにダウンロードされますが、適用はされません。
ダウンロードされたパッチを手動でインストールすることが必要で、このことは
<username>root</username> 宛てにメールで通知されます。</para>
<para>うまく行かなかった場合には、<command>freebsd-update</command>
を以下のように実行することで最後の変更までロールバックできます。</para>
<screen>&prompt.root; <userinput>freebsd-update rollback</userinput></screen>
<para>カーネルまたはカーネルモジュールがアップデートされた場合には、
完了後にシステムを再起動してください。
この作業によって、&os; がバイナリをメモリに読み込みます。</para>
<para><command>freebsd-update</command>
ユーティリティが自動的にアップデートするカーネルは
<literal>GENERIC</literal> のみです。
カスタムカーネルを使っている場合には、<command>freebsd-update</command>
が他の部分をアップデートした後、
カーネルを再構築し、もう一度インストールする必要があります。
<literal>GENERIC</literal> カーネルが <filename
class="directory">/boot/GENERIC</filename>
に存在する場合には、
<command>freebsd-update</command> により
(現在のシステムで実行されているカーネルでなくとも)
アップデートされます。</para>
<note>
<para><literal>GENERIC</literal> カーネルを、常に <filename
class="directory">/boot/GENERIC</filename>
に置いておくことは良い考えです。
さまざまな問題を解決する際や
<xref linkend="freebsdupdate-upgrade"> に説明されているように、
<command>freebsd-update</command>
を用いたバージョンのアップグレードの際に助けとなります。</para>
</note>
<para><filename>/etc/freebsd-update.conf</filename>
のデフォルトの設定を変更しない限り、
<command>freebsd-update</command> は、
他の更新と共にカーネルソースをアップデートします。
新しいカスタムカーネルの再構築と再インストールは、
通常通り行うことができます。</para>
<note>
<para><command>freebsd-update</command> は、
常にカーネルをアップデートするとは限りません。
<command>freebsd-update install</command>
によってカーネルソースが変更されなかった場合には、
カスタムカーネルを再構築する必要はありません。
しかしながら <command>freebsd-update</command> は、
<filename>/usr/src/sys/conf/newvers.sh</filename>
ファイルを常にアップデートします。
これは、現在のシステムのパッチレベル (<command>uname -r</command> が
<literal>-p</literal> で表示する番号) を示す際に参照されるファイルです。
そのため、何も変更されていない場合でも、カスタムカーネルを再構築することにより、
&man.uname.1; がシステムの正確なパッチレベルを報告するようになります。
各システムにインストールされているアップデートをすばやく把握できるようになるので、
特に複数のシステムを管理するときに助けとなります。</para>
</note>
</sect2>
<sect2 id="freebsdupdate-upgrade">
<title>メジャーおよびマイナーアップグレード</title>
<para>このプロセスでは、古いオブジェクトファイルやライブラリが削除され、
これらに依存する多くのサードパーティ製アプリケーションに影響を与える可能性があります。
インストールされているすべての ports を削除して再インストールするか、
後で、<filename role="package">ports-mgmt/portupgrade</filename>
ユーティリティを使ってアップグレードすることが推奨されています。
試験的にビルドを行いたいと思っているユーザは、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>portupgrade -af</userinput></screen>
<para>このコマンドは、すべての ports を適切に再インストールしようとします。
<makevar>BATCH</makevar> 環境変数を
<literal>yes</literal> に設定しておくと、
アップデートプロセスの途中の質問に対し
<literal>yes</literal> と答えるようになるので、
ビルドプロセスでの手動操作を省略できます。</para>
<para>カスタムカーネルを使用している場合には、
アップグレードのプロセスは幾分複雑となります。
<literal>GENERIC</literal> カーネルが <filename
class="directory">/boot/GENERIC</filename>
に置かれている必要があります。
もし <literal>GENERIC</literal>
カーネルがシステムに存在しない場合には、
以下のどれかの方法で用意してください。</para>
<itemizedlist>
<listitem>
<para>ただ一度だけカスタムカーネルを構築したのであれば、
<filename class="directory">/boot/kernel.old</filename>
カーネルは <literal>GENERIC</literal> そのものです。
ただ単にこのディレクトリの名前を
<filename class="directory">/boot/GENERIC</filename>
へと変更してください。</para>
</listitem>
<listitem>
<para>コンピュータへの物理的なアクセスが可能であれば、
CD-ROM から <literal>GENERIC</literal>
カーネルをインストールできます。
インストールディスクを挿入して、以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>mount /cdrom</userinput>
&prompt.root; <userinput>cd /cdrom/<replaceable>X.Y-RELEASE</replaceable>/kernels</userinput>
&prompt.root; <userinput>./install.sh GENERIC</userinput></screen>
<para>ここで <filename
class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
を実際のリリース番号に置き換えてください。
<literal>GENERIC</literal> は、デフォルトで <filename
class="directory">/boot/GENERIC</filename>
にインストールされます。</para>
</listitem>
<listitem>
<para>上記の方法が失敗するのであれば、
<literal>GENERIC</literal> カーネルをソースから再構築して、
インストールしてください。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>env DESTDIR=/boot/GENERIC make kernel</userinput>
&prompt.root; <userinput>mv /boot/GENERIC/boot/kernel/* /boot/GENERIC</userinput>
&prompt.root; <userinput>rm -rf /boot/GENERIC/boot</userinput></screen>
<para><command>freebsd-update</command> は、このカーネルを
<literal>GENERIC</literal> として扱います。
<literal>GENERIC</literal> コンフィグレーションファイルは、
とにかく変更してはいけません。
また、特別なオプションを指定しない
(<filename>/etc/make.conf</filename> が空であることが望ましい)
で構築してください。</para>
</listitem>
</itemizedlist>
<para>この時点で <literal>GENERIC</literal>
カーネルで再起動する必要はありません。</para>
<para><command>freebsd-update</command>
によるメジャー、またはマイナーバージョンのアップデートでは、
リリースバージョンをターゲットにして実行します。
たとえば、&os;&nbsp;6.4 にアップデートするには以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>freebsd-update -r 6.4-RELEASE upgrade</userinput></screen>
<para>コマンドを実行すると、<command>freebsd-update</command>
は設定ファイルと現在のシステムを評価し、
システムをアップデートするために必要な情報を収集します。
画面には、どのコンポーネントが認識され、
どのコンポーネントが認識されていないかといったリストが表示されます。
たとえば以下のように表示されます。</para>
<screen>Looking up update.FreeBSD.org mirrors... 1 mirrors found.
Fetching metadata signature for 6.3-RELEASE from update1.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
The following components of FreeBSD seem to be installed:
kernel/smp src/base src/bin src/contrib src/crypto src/etc src/games
src/gnu src/include src/krb5 src/lib src/libexec src/release src/rescue
src/sbin src/secure src/share src/sys src/tools src/ubin src/usbin
world/base world/info world/lib32 world/manpages
The following components of FreeBSD do not seem to be installed:
kernel/generic world/catpages world/dict world/doc world/games
world/proflibs
Does this look reasonable (y/n)? y</screen>
<para>ここで、<command>freebsd-update</command>
はアップグレードに必要なすべてのファイルをダウンロードします。
何をインストールし、どのように進むかといった質問をされることもあります。</para>
<para>カスタムカーネルを使っていると、
上記のステップで以下のような警告が表示されます。</para>
<screen>WARNING: This system is running a "<replaceable>MYKERNEL</replaceable>" kernel, which is not a
kernel configuration distributed as part of FreeBSD 6.3-RELEASE.
This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"</screen>
<para>この時点ではこの警告を無視してもかまいません。
アップデートされた <literal>GENERIC</literal> カーネルは、
アップグレードプロセスの途中で利用されます。</para>
<para>ローカルシステムへすべてのパッチがダウンロードされたら、
次にパッチが適用されます。
このプロセスにかかる時間はコンピュータの性能とワークロードに依存します。
その後、設定ファイルがマージされます。
このプロセスでは、ファイルをマージするか、
画面上にエディタを立ち上げて手動でマージするかを尋ねられます。
プロセスごとに、マージに成功した情報がユーザに示されます。
マージに失敗したり、無視した場合には、プロセスが中断します。
<filename class="directory">/etc</filename> のバックアップを取り、
<filename>master.passwd</filename> や <filename>group</filename>
のような重要なファイルを後で手動でマージするユーザもいるでしょう。</para>
<note>
<para>すべてのパッチは別のディレクトリでマージされており、
まだ、システムには反映されていません。
ユーザによる変更点のコミットは必要ありません。</para>
</note>
<para>このプロセスが終わったら、
以下のコマンドを用いて、アップグレードをディスクに反映してください。</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para>パッチは最初にカーネルとカーネルモジュールに対して当てられます。
ここでコンピュータを再起動する必要があります。
システムがカスタムカーネルを実行していた場合には、
&man.nextboot.8; コマンドを使って次回の再起動時のカーネルを
(アップデートされた) <filename
class="directory">/boot/GENERIC</filename> に変更してください。</para>
<screen>&prompt.root; <userinput>nextboot -k GENERIC</userinput></screen>
<warning>
<para><literal>GENERIC</literal> カーネルで再起動する前に、
システムが適切に起動するために必要な
(もしコンピュータにリモートでアクセスしてアップデートしていたのであれば、
ネットワーク接続に必要な)
すべてのドライバが含まれていることを確認してください。
特に、これまでに実行していたカスタムカーネルが
(通常はカーネルモジュールとして提供されている)
ビルド済みの機能を含んでいるのであれば、
これらのモジュールを一時的に <filename>/boot/loader.conf</filename>
の機能を用いて、
<literal>GENERIC</literal> へと読み込んでください。
アップグレードプロセスが終わるまでは、
重要ではないサービスを無効にし、
ディスクやネットワークのマウントなどは避けてください。</para>
</warning>
<para>アップデートされたカーネルでコンピュータを再起動してください。</para>
<screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
<para>システムがオンラインに戻ったら、
<command>freebsd-update</command> を再び実行する必要があります。
アップデートプロセスの状態は保存されているので、
<command>freebsd-update</command> を実行すると、最初からではなく、
古い共有ライブラリとオブジェクトファイルを削除するプロセスから始まります。
このステージを続行するには、以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<note>
<para>使用しているライブラリのバージョン番号の付けられ方によって、
3 つのインストールフェーズが 2 つになる場合もあります。</para>
</note>
<para>すべてのサードパーティ製のソフトウェアを再構築し、
再インストールする必要があります。
この作業が必要なのは、インストールされているソフトウェアが、
アップグレードの際に削除されたライブラリに依存している可能性があるためです。
<filename role="package">ports-mgmt/portupgrade</filename>
コマンドは、このプロセスを自動化します。
以下のコマンドで、このプロセスを開始します。</para>
<screen>&prompt.root; <userinput>portupgrade -f ruby</userinput>
&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db</userinput>
&prompt.root; <userinput>portupgrade -f ruby18-bdb</userinput>
&prompt.root; <userinput>rm /var/db/pkg/pkgdb.db /usr/ports/INDEX-*.db</userinput>
&prompt.root; <userinput>portupgrade -af</userinput></screen>
<para>この作業の終了後、最後にもう一度
<command>freebsd-update</command>
を実行すると、アップグレードのプロセスが完了します。
以下のコマンドですべてのアップグレードプロセスのやり残し作業が行われます。</para>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para><literal>GENERIC</literal>
カーネルを一時的に読み込んでいたのであれば、
ここで、通常の方法を用いて新しいカスタムを構築し、インストールしてください。</para>
<para>コンピュータを再起動し、新しい &os; を立ち上げてください。
これでアップグレードのプロセスは完了です。</para>
</sect2>
<sect2>
<title>システムの状態の比較</title>
<para><command>freebsd-update</command> ユーティリティを用いて、
インストールされている &os; の状態と、
正しく動作することが分かっている状態とを比較できます。
このオプションは、システムのユーティリティ、ライブラリ、
設定ファイルを評価します。
比較を行うには、以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>freebsd-update IDS &gt;&gt; outfile.ids</userinput></screen>
<warning>
<para>コマンドライン名は <acronym>IDS</acronym> ですが、
<filename role="package">security/snort</filename>
のような侵入検知システムの置き換えになるものではありません。
<command>freebsd-update</command> はデータをディスクに保存するので、
明らかに不正な変更が行われる可能性があります。
この不正な変更の可能性は、
<varname>kern.securelevel</varname> の設定と、
<command>freebsd-update</command> のデータを使用しないときに、
読み取りのみの許可属性に設定されているファイルシステムに置くことで低くすることができますが、
よりよい解決方法は、
<acronym>DVD</acronym>
または安全に保存されている外部 <acronym>USB</acronym>
ディスクのような安全なディスクとシステムを比較することです。</para>
</warning>
<para>これで、システムは検査されます。そして、
リリースファイルの &man.sha256.1;
ハッシュ値と現在インストールされているファイルの値がファイルの一覧と共に表示されます。
これが <filename>outfile.ids</filename> ファイルに出力を送る理由です。
目で比較するにはとても早くスクロールし、
コンソールバッファをいっぱいに満たしてしまいます。</para>
<para>これらの行は極めて長いのですが、出力形式は簡単にすぐに解析できます。
たとえば、これらのリリースで異なっているすべてのファイルを知りたいのであれば、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>cat outfile.ids | awk '{ print $1 }' | more</userinput>
/etc/master.passwd
/etc/motd
/etc/passwd
/etc/pf.conf</screen>
<para>上の表示例では出力は切り捨てられており、
実際にはもっと多くのファイルが存在します。
これらのファイルには、運用中に変更されるファイルがあります。
たとえば、<filename>/etc/passwd</filename>
はユーザがシステムに追加されると変更されます。
また、カーネルモジュールのようなファイルがあります。
これらは <command>freebsd-update</command>
によりアップデートされます。
このような特別なファイルやディレクトリを除外するには、
それらを <filename>/etc/freebsd-update.conf</filename> の
<literal>IDSIgnorePaths</literal> オプションに追加してください。</para>
<para>以前に議論した方法とは別に、
このシステムを入念なアップグレード方法の一部として用いることができます。</para>
</sect2>
</sect1>
<sect1 id="updating-upgrading-portsnap">
<sect1info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Colin</firstname>
<surname>Percival</surname>
<contrib>ベースとなったノートの提供: </contrib>
</author>
</authorgroup>
</sect1info>
<title>Portsnap: Ports Collection アップデートツール</title>
<indexterm><primary>アップデートとアップグレード</primary></indexterm>
<indexterm>
<primary>Portsnap</primary>
<see>アップデートとアップグレード</see>
</indexterm>
<para>&os; のベースシステムには、&man.portsnap.8; と呼ばれる
Ports Collection のアップデートユーティリティがあります。
実行すると、リモートサイトに接続し、セキュリティキーを検証し、
Ports Collection をダウンロードします。
セキュリティキーは、
ダウンロードしたすべてのファイルがダウンロード中に変更されていないことの検証に用いられます。
最新の Ports Collection ファイルをダウンロードするには、
以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput>
Looking up portsnap.FreeBSD.org mirrors... 3 mirrors found.
Fetching snapshot tag from portsnap1.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Wed Aug 6 18:00:22 EDT 2008 to Sat Aug 30 20:24:11 EDT 2008.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
Fetching 90 patches.....10....20....30....40....50....60....70....80....90. done.
Applying patches... done.
Fetching 133 new ports or files... done.</screen>
<para>この例では、&man.portsnap.8;
が現在の ports に対するパッチを見つけ、検証したことを示しています。
また、ユーティリティは以前に実行していることも示しています。
もし初めて実行したのであれば、Ports Collection のダウンロードのみが行われます。</para>
<para>&man.portsnap.8; が <command>fetch</command> に成功すると、
検証を通った Ports Collection と、
それに続くパッチがローカルシステムに存在します。
このアップデートファイルをインストールするには以下のように入力してください。</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput>
/usr/ports/.cvsignore
/usr/ports/CHANGES
/usr/ports/COPYRIGHT
/usr/ports/GIDs
/usr/ports/KNOBS
/usr/ports/LEGAL
/usr/ports/MOVED
/usr/ports/Makefile
/usr/ports/Mk/bsd.apache.mk
/usr/ports/Mk/bsd.autotools.mk
/usr/ports/Mk/bsd.cmake.mk
<replaceable>...</replaceable></screen>
<para>これでアップデートプロセスは完了しました。
更新された Ports Collection を使って、
アプリケーションをインストールしたり、
アップグレードできます。</para>
<para>このプロセスを連続して行うには、以下のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>portsnap fetch update</userinput></screen>
</sect1>
<sect1 id="current-stable">
<title>&os.current; vs. &os.stable;</title>
<title>開発ブランチを追いかける</title>
<indexterm><primary>-CURRENT</primary></indexterm>
<indexterm><primary>-STABLE</primary></indexterm>
@ -282,11 +894,11 @@
&os.current; 用ではありません。
このファイルの中にある次の行を</para>
<screen>*default release=cvs tag=RELENG_<replaceable>X</replaceable>_<replaceable>Y</replaceable></screen>
<programlisting>*default release=cvs tag=RELENG_<replaceable>X</replaceable>_<replaceable>Y</replaceable></programlisting>
<para>以下に置き換えてください。</para>
<screen>*default release=cvs tag=.</screen>
<programlisting>*default release=cvs tag=.</programlisting>
<para>使用可能なタグに関する詳細な説明は、
ハンドブックの <link
@ -946,7 +1558,7 @@
&prompt.root; <userinput>rm -rf *</userinput></screen>
</sect2>
<sect2 id="cutting-edge-compilebase">
<sect2 id="updating-upgrading-compilebase">
<title>ベースシステムの再構築</title>
<sect3>
@ -1350,7 +1962,7 @@ Script done, &hellip;</screen>
<para>&man.mergemaster.8; を (勧められた通り)
使っているのであれば、<link
linkend="cutting-edge-rebooting">次の節</link>
linkend="updating-upgrading-rebooting">次の節</link>
まで飛ばしてもかまいません。</para>
<para>
@ -1543,7 +2155,7 @@ Script done, &hellip;</screen>
</sect3>
</sect2>
<sect2 id="cutting-edge-rebooting">
<sect2 id="updating-upgrading-rebooting">
<title>再起動</title>
<para>

View file

@ -355,7 +355,7 @@ following line in &man.loader.conf.5;:
その後で、あなたがカスタマイズしたカーネルコンフィグレーションファイルを消してしまったことに気づくのに時間はかからないでしょう。
また、<filename>GENERIC</filename> ファイルを直接編集しないでください。
なぜなら、編集後に
<link linkend="cutting-edge"><!-- link linkend="cutting-edge" -->ソースツリーをアップデート</link>
<link linkend="updating-upgrading">ソースツリーをアップデート</link>
すると、ファイルが上書きされ、変更点が失われてしまいます。</para>
<para>カーネルコンフィグレーションファイルは他の場所において、
@ -397,7 +397,7 @@ following line in &man.loader.conf.5;:
<note>
<para>&os; プロジェクトの最新のソースファイルと、<link
linkend="cutting-edge"><!-- link linkend="cutting-edge" -->あなたのソースツリーを同期させている</link>
linkend="updating-upgrading">あなたのソースツリーを同期させている</link>
場合、アップデートを行う際には、必ず
<filename>/usr/src/UPDATING</filename>
ファイルをチェックしてください。

View file

@ -724,10 +724,7 @@ docbook =
<para><application>Portsnap</application> は Ports Collection
を配布するための新しいシステムです。
<application>Portsnap</application> の機能についての詳細は
Portsnap を使う
<!-- ryusuke:2009/01/10
should be refer this after updating cutting-edge/chapter.sgml
<link linkend="updating-upgrading-portsnap">Portsnap を使う</link> -->
<link linkend="updating-upgrading-portsnap">Portsnap を使う</link>
を参照してください。</para>
<step>

View file

@ -292,7 +292,7 @@
</listitem>
</varlistentry>
<varlistentry>
<term><emphasis><xref linkend="cutting-edge">, 開発の最前線</emphasis></term>
<term><emphasis><xref linkend="updating-upgrading">, 開発の最前線</emphasis></term>
<listitem>
<para>FreeBSD-STABLE, FreeBSD-CURRENT と FreeBSD のリリースの
違いを説明します。どんなユーザにとって開発システムを追随するのが