- Merge the following from the English version:

r36653 -> r38879	head/ja_JP.eucJP/books/handbook/cutting-edge/chapter.sgml

Reference: [doc-jp-work 2263]
This commit is contained in:
Ryusuke SUZUKI 2012-06-17 08:04:57 +00:00
parent 0efa193a77
commit a630313808
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=39052

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r36653
Original revision: r38879
$FreeBSD$
-->
@ -189,9 +189,10 @@ Components src world kernel</programlisting>
<para>このパラメータは、&os; のどの部分を最新に維持するかを設定します。
デフォルトではソースコード、ベースシステム全体、そしてカーネルをアップデートします。
Components に設定できる項目は、インストール時に選択できるものと同じです。
たとえば、ここで "world/games" を追加すると、
たとえば、ここで <literal>world/games</literal> を追加すると、
game にパッチが当たるようになります。
"src/bin" を追加すると、<filename class="directory">src/bin</filename>
<literal>src/bin</literal> を追加すると、
<filename class="directory">src/bin</filename>
ソースコードのアップデートを許可します。</para>
<para>この部分についてはデフォルトのままにしておき、
@ -302,11 +303,11 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<para><command>freebsd-update</command>
ユーティリティが自動的にアップデートするカーネルは
<literal>GENERIC</literal> のみです。
<filename>GENERIC</filename> のみです。
カスタムカーネルを使っている場合には、<command>freebsd-update</command>
が他の部分をアップデートした後、
カーネルを再構築し、もう一度インストールする必要があります。
<literal>GENERIC</literal> カーネルが <filename
<filename>GENERIC</filename> カーネルが <filename
class="directory">/boot/GENERIC</filename>
に存在する場合には、
<command>freebsd-update</command> により
@ -314,7 +315,7 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
アップデートされます。</para>
<note>
<para><literal>GENERIC</literal> カーネルを、常に <filename
<para><filename>GENERIC</filename> カーネルを、常に <filename
class="directory">/boot/GENERIC</filename>
に置いておくことは良い考えです。
さまざまな問題を解決する際や、
@ -370,10 +371,10 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<para>カスタムカーネルを使用している場合には、
アップグレードのプロセスは幾分複雑となります。
<literal>GENERIC</literal> カーネルが <filename
<filename>GENERIC</filename> カーネルが <filename
class="directory">/boot/GENERIC</filename>
に置かれている必要があります。
もし <literal>GENERIC</literal>
もし <filename>GENERIC</filename>
カーネルがシステムに存在しない場合には、
以下のどれかの方法で用意してください。</para>
@ -381,7 +382,7 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<listitem>
<para>ただ一度だけカスタムカーネルを構築したのであれば、
<filename class="directory">/boot/kernel.old</filename>
カーネルは <literal>GENERIC</literal> そのものです。
カーネルは <filename>GENERIC</filename> そのものです。
ただ単にこのディレクトリの名前を
<filename class="directory">/boot/GENERIC</filename>
へと変更してください。</para>
@ -389,7 +390,7 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<listitem>
<para>コンピュータへの物理的なアクセスが可能であれば、
CD-ROM から <literal>GENERIC</literal>
CD-ROM から <filename>GENERIC</filename>
カーネルをインストールできます。
インストールディスクを挿入して、以下のコマンドを実行してください。</para>
@ -400,14 +401,14 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
<para>ここで <filename
class="directory"><replaceable>X.Y-RELEASE</replaceable></filename>
を実際のリリース番号に置き換えてください。
<literal>GENERIC</literal> は、デフォルトで <filename
<filename>GENERIC</filename> は、デフォルトで <filename
class="directory">/boot/GENERIC</filename>
にインストールされます。</para>
</listitem>
<listitem>
<para>上記の方法が失敗するのであれば、
<literal>GENERIC</literal> カーネルをソースから再構築して、
<filename>GENERIC</filename> カーネルをソースから再構築して、
インストールしてください。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
@ -416,8 +417,8 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
&prompt.root; <userinput>rm -rf /boot/GENERIC/boot</userinput></screen>
<para><command>freebsd-update</command> は、このカーネルを
<literal>GENERIC</literal> として扱います。
<literal>GENERIC</literal> コンフィグレーションファイルは、
<filename>GENERIC</filename> として扱います。
<filename>GENERIC</filename> コンフィグレーションファイルは、
とにかく変更してはいけません。
また、特別なオプションを指定しない
(<filename>/etc/make.conf</filename> が空であることが望ましい)
@ -425,7 +426,7 @@ MergeChanges /etc/ /var/named/etc/</programlisting>
</listitem>
</itemizedlist>
<para>この時点で <literal>GENERIC</literal>
<para>この時点で <filename>GENERIC</filename>
カーネルで再起動する必要はありません。</para>
<para><command>freebsd-update</command>
@ -473,7 +474,7 @@ This kernel will not be updated: you MUST update the kernel manually
before running "/usr/sbin/freebsd-update install"</screen>
<para>この時点ではこの警告を無視してもかまいません。
アップデートされた <literal>GENERIC</literal> カーネルは、
アップデートされた <filename>GENERIC</filename> カーネルは、
アップグレードプロセスの途中で利用されます。</para>
<para>すべてのパッチがローカルシステムへダウンロードされたら、
@ -509,7 +510,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
<screen>&prompt.root; <userinput>nextboot -k GENERIC</userinput></screen>
<warning>
<para><literal>GENERIC</literal> カーネルで再起動する前に、
<para><filename>GENERIC</filename> カーネルで再起動する前に、
システムが適切に起動するために必要な
(もしコンピュータにリモートでアクセスしてアップデートしていたのであれば、
ネットワーク接続に必要な)
@ -519,7 +520,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
ビルド済みの機能を含んでいるのであれば、
これらのモジュールを一時的に <filename>/boot/loader.conf</filename>
の機能を用いて、
<literal>GENERIC</literal> へと読み込んでください。
<filename>GENERIC</filename> へと読み込んでください。
アップグレードプロセスが終わるまでは、
重要ではないサービスを無効にし、
ディスクやネットワークのマウントなどは避けてください。</para>
@ -564,7 +565,7 @@ before running "/usr/sbin/freebsd-update install"</screen>
<screen>&prompt.root; <userinput>freebsd-update install</userinput></screen>
<para><literal>GENERIC</literal>
<para><filename>GENERIC</filename>
カーネルを一時的に読み込んでいたのであれば、
ここで、通常の方法を用いて新しいカスタムを構築し、インストールしてください。</para>
@ -669,10 +670,10 @@ before running "/usr/sbin/freebsd-update install"</screen>
以下のコマンドを実行してください。</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.
Looking up portsnap.FreeBSD.org mirrors... 9 mirrors found.
Fetching snapshot tag from geodns-1.portsnap.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.
Updating from Tue May 22 02:12:15 CEST 2012 to Wed May 23 16:28:31 CEST 2012.
Fetching 3 metadata patches.. done.
Applying metadata patches... done.
Fetching 3 metadata files... done.
@ -2123,8 +2124,9 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
シングルユーザモードで立ち上げましょう。
それから、以下を実行してください。</para>
<screen>&prompt.root; <userinput>adjkerntz -i</userinput>
<screen>&prompt.root; <userinput>mount -u /</userinput>
&prompt.root; <userinput>mount -a -t ufs</userinput>
&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>
@ -2228,13 +2230,7 @@ DOCSUPFILE?= /usr/share/examples/cvsup/doc-supfile</programlisting>
オプションをつけて &man.mergemaster.8; を実行することです。
これを実行すると、<maketarget>buildworld</maketarget> や
<maketarget>installworld</maketarget>
が成功するために必要なファイルだけを比較します。
古いバージョンの <command>mergemaster</command>
を使っていて、<option>-p</option> がサポートされていない場合、
最初に実行するときソースツリーにある新しいバージョンのものを使ってください。</para>
<screen>&prompt.root; <userinput>cd /usr/src/usr.sbin/mergemaster</userinput>
&prompt.root; <userinput>./mergemaster.sh -p</userinput></screen>
が成功するために必要なファイルだけを比較します。</para>
<tip>
<para>もし、あなたがもっと神経質な人なら、あなたが名前を変更したり、
@ -3260,6 +3256,113 @@ Building everything..
</sect2>
</sect1>
<sect1 id="make-delete-old">
<sect1info>
<authorgroup>
<author>
<firstname>Anton</firstname>
<surname>Shterenlikht</surname>
<contrib>ベースとなったノートの提供: </contrib>
</author>
</authorgroup>
</sect1info>
<title>使われなくなったファイル、ディレクトリ、ライブラリの削除</title>
<indexterm>
<primary>Deleting obsolete files, directories and libraries</primary>
</indexterm>
<para>&os; の開発サイクルにおいて、
ファイルやシステムの一部が使われなくなることがあります。
それらの機能が別の場所で実装されたり、
ライブラリのバージョン番号が変わったり、
システムから完全に削除されることがあるためです。
システムのアップデート時に削除が必要になるのは、
古いファイル、ライブラリそしてディレクトリです。
これらのファイルを削除すると、記憶媒体 (およびバックアップ媒体)
において不必要な容量を占めている古いファイルが、
システム上に散乱することがなくなります。
また、古いライブラリのセキュリティや安定性に問題があると、
ライブラリを新しくしてシステムを安定な状態にし、
古いライブラリの実装からシステムがクラッシュすることを防がなければなりません。
使われなくなったファイル、ディレクトリ、ライブラリは
<filename>/usr/src/ObsoleteFiles.inc</filename>
にまとめられています。この節では、
アップグレードの過程でこれらのファイルを削除する方法について説明します。</para>
<para>システムは、<xref linkend="canonical-build">
で説明した方法で構築されていると仮定します。
<command>make <maketarget>installworld</maketarget></command> と、
その後の <command>mergemaster</command> コマンドが無事に終わったら、
以下の方法で使われなくなったファイルやライブラリを確認してください。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make check-old</userinput></screen>
<para>見つかった古いファイルは、以下のコマンドで削除できます。</para>
<screen>&prompt.root; <userinput>make delete-old</userinput></screen>
<tip>
<para>その他のターゲットについては <filename>/usr/src/Makefile</filename>
をご覧ください。</para>
</tip>
<para>使われなくなったファイルを削除する際、ファイルごとに確認が求められます。
以下のように make の <makevar>BATCH_DELETE_OLD_FILES</makevar>
環境変数を設定すると、
確認が省略され、自動的にファイルが削除されます。</para>
<screen>&prompt.root; <userinput>make -DBATCH_DELETE_OLD_FILES delete-old</userinput></screen>
<para><command>yes</command>
をコマンドへパイプでつなげても省略できます。</para>
<screen>&prompt.root; <userinput>yes|make delete-old</userinput></screen>
<warning>
<title>Warning</title>
<para>使われなくなったファイルを削除すると、
削除したファイルに依存していたアプリケーションは壊れてしまいます。
特に、古いライブラリを削除する場合に起こり得ます。
通常、<command>make
<maketarget>delete-old-libs</maketarget></command>
を実行する前に、
これらの古いライブラリを使っているプログラム、ports、
ライブラリを再構築する必要があります。</para>
</warning>
<para>共有ライブラリをチェックするユーティリティとして、
Ports Collection の <filename
role="package">sysutils/libchk</filename> や <filename
role="package">sysutils/bsdadminscripts</filename>
を利用できます。</para>
<para>使われなくなった共有ライブラリは、
新しいライブラリと競合し、以下のようなメッセージを表示することがあります。</para>
<screen>/usr/bin/ld: warning: libz.so.4, needed by /usr/local/lib/libtiff.so, may conflict with libz.so.5
/usr/bin/ld: warning: librpcsvc.so.4, needed by /usr/local/lib/libXext.so, may conflict with librpcsvc.so.5</screen>
<para>この問題を解決するには、
まずライブラリがどの port によってインストールされたかを調べて下さい。</para>
<screen>&prompt.root; <userinput>pkg_info -W /usr/local/lib/libtiff.so</userinput>
/usr/local/lib/libtiff.so was installed by package tiff-3.9.4
&prompt.root; <userinput>pkg_info -W /usr/local/lib/libXext.so</userinput>
/usr/local/lib/libXext.so was installed by package libXext-1.1.1,1</screen>
<para>見つかった port をアンインストールし、
再構築、再インストールしてください。
この過程は <filename role="package">ports-mgmt/portmaster</filename>
や <filename role="package">ports-mgmt/portupgrade</filename>
ユーティリティで自動化できます。
すべての ports が再構築され、
古いライブラリがどこにも使われていないことを確認したら、
以下のコマンドで古いライブラリを削除してください。</para>
<screen>&prompt.root; <userinput>make delete-old-libs</userinput></screen>
</sect1>
<sect1 id="small-lan">
<sect1info>
<authorgroup>