doc/ja_JP.eucJP/books/handbook/ports/chapter.sgml
Ryusuke SUZUKI c378f9175c o Refine translation.
o Rewrap lines.
o Change a link to www/ports page, to translated page.
2012-02-24 13:06:31 +00:00

1633 lines
62 KiB
Text

<!--
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.297
$FreeBSD$
-->
<chapter id="ports">
<title>アプリケーションのインストール - packages と ports</title>
<sect1 id="ports-synopsis">
<title>この章では</title>
<indexterm><primary>ports</primary></indexterm>
<indexterm><primary>packages</primary></indexterm>
<para>FreeBSD の基本システムには数多くのシステムツールが含まれています。
しかしながら、サードパーティ製のアプリケーションをインストールしないと、
実用的にはそれほどたくさんのことはできません。
FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、
ソースコードをコンパイルしてインストールする Ports Collection と、
コンパイル済みのバイナリをインストールする packages
という相補的な 2 つの技術を提供しています。
どちらのシステムを用いても、ローカルメディアやネットワーク上からお気に入りのアプリケーションの最新版をインストールできます。</para>
<para>この章を読むと、以下のことがわかります。</para>
<itemizedlist>
<listitem>
<para>packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法</para>
</listitem>
<listitem>
<para>Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法</para>
</listitem>
<listitem>
<para>インストールした packages や ports を削除する方法</para>
</listitem>
<listitem>
<para>Ports Collection が用いるデフォルトの設定を変更する方法</para>
</listitem>
<listitem>
<para>お望みのソフトウェア package を探しだす方法</para>
</listitem>
<listitem>
<para>アプリケーションをアップグレードする方法</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-overview">
<title>ソフトウェアのインストール</title>
<para>&unix; システムを使ったことのある人なら、
サードパーティ製ソフトウェアの典型的なインストール手順が以下のようになることをご存知でしょう。</para>
<procedure>
<step>
<para>ソースコード、
またはバイナリ形式で配布されているソフトウェアをダウンロードする。</para>
</step>
<step>
<para>配布時のフォーマット (一般的には
&man.compress.1;, &man.gzip.1; または &man.bzip2.1;
で圧縮された tarball) からソフトウェアを取り出す。</para>
</step>
<step>
<para>ドキュメント (<filename>INSTALL</filename> または
<filename>README</filename> ファイル、あるいは
<filename>doc/</filename> サブディレクト中のファイル) を探しだし、
ソフトウェアのインストール方法を調べる。</para>
</step>
<step>
<para>ソース形式でソフトウェアが配布されている場合はコンパイルを行う。
ここでは、<filename>Makefile</filename> の編集、
または、<command>configure</command> スクリプトの実行、
あるいは他の作業を伴うことがある。 </para>
</step>
<step>
<para>ソフトウェアの動作を確認し、インストールする。</para>
</step>
</procedure>
<para>すべてがうまくいったならば、インストール作業は以上です。
もしインストールしているソフトウェアパッケージが、
FreeBSD を意識して移植されたものでなければ、
適切に動くようコードを調べ、編集する必要があるかもしれません。</para>
<para>あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに
<quote>従来</quote> の方法を使い続けることができます。
しかしながら、FreeBSD は
インストール時にかかるたくさんの労力を軽減する 2 つの技術、
すなわち packages と ports を提供しています。
この文書を書いている時点では、&os.numports;
を越えるサードパーティ製アプリケーションがこれらの方法で利用可能となっています。</para>
<para>FreeBSD package では、いかなるアプリケーションに対しても
ダウンロードする必要のあるファイルはただ一つです。
package には、コンパイル済みのアプリケーションの全コマンド、
各種設定ファイルやドキュメントが含まれています。
FreeBSD に用意されている
&man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1;
といった package 管理コマンドで、
ダウンロードした package ファイルを扱うことができます。
新しいアプリケーションをインストールするには、
たった一つのコマンドを実行するだけです。</para>
<para>FreeBSD port は、
アプリケーションをソースコードからコンパイルする際の処理を自動化するように設計されたファイルの集まりです。</para>
<para>プログラムをコンパイルする時のことを思い出して下さい。
通常、とてもたくさんの手順
(ダウンロード、展開、パッチ作業、コンパイル、インストール)
を踏まなくてはなりません。
port を構成するファイルは、
これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。
いくつかの簡単なコマンドを実行すると、
自動的にアプリケーションのソースコードがダウンロードされ、展開、
パッチ作業、コンパイル、そして、インストール作業が行われます。</para>
<para>さらに ports システムは、<command>pkg_add</command>
コマンドや他の package 管理コマンドで扱うことのできる
packages を生成できます。
これらのコマンドについては後の節で簡単に紹介します。</para>
<para>packages と ports は<emphasis>依存関係</emphasis>を理解します。
ある特定のライブラリに依存する
アプリケーションをインストールするとします。
また、アプリケーションとライブラリは FreeBSD ports や packages によって
入手可能であるとします。
アプリケーションを追加するために
<command>pkg_add</command> コマンドまたは ports システムを用いると、
インストールされていないライブラリが検出され、
先に依存するライブラリが自動的にインストールされます。</para>
<para>2 つの技術が非常に類似していて、
なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。
packages と ports にはそれぞれ独自の特徴があり、
どちらを使うかはあなたの好みによります。</para>
<itemizedlist>
<title>package の利点</title>
<listitem>
<para>一般的に、あるアプリケーションの package の tarball は、
ソースコードを含む tarball より小さなサイズとなります。</para>
</listitem>
<listitem>
<para>packages はコンパイル作業を必要としません。
このことは、<application>Mozilla</application>,
<application>KDE</application>,
または <application>GNOME</application>
といった大きなアプリケーションで重要となります。
特にシステムが遅い場合にはなおさら重要です。</para>
</listitem>
<listitem>
<para>packages を用いれば、
ソフトウェアのコンパイルに関する知識は必要ありません。</para>
</listitem>
</itemizedlist>
<itemizedlist>
<title>ports の利点</title>
<listitem>
<para>packages は、通常最も多くのシステムで実行できるように、
非常に保守的な設定で構築されています。
port からインストールすることで、
たとえば Pentium 4 や Athlon
プロセッサに特化したコードを生成するような
コンパイルオプションを指定できます。 </para>
</listitem>
<listitem>
<para>アプリケーションのなかには、コンパイル時に
プログラムの機能を決めるようなオプションを設定するものがあります。
たとえば、<application>Apache</application> は多種多様な
ビルトインオプションを設定できます。
port から構築することで、デフォルトオプションではなく、
自分でオプションを設定することができます。</para>
<para>設定を区別するために、同じアプリケーションに対して
複数の packages が存在することがあります。
たとえば、<application>Ghostscript</application> は
X11 サーバーがインストールされているかどうかにより、
<filename>ghostscript</filename> package と
<filename>ghostscript-nox11</filename> package
が選択可能となっています。
packages でもこのような方法が可能ですが、
アプリケーションのコンパイルオプションがさらに用意されている場合は困難となります。</para>
</listitem>
<listitem>
<para>ライセンス条項で、
バイナリでの配布を禁止しているソフトウェアがあります。
それらはソースコードで配布されなくてはいけません。</para>
</listitem>
<listitem>
<para>バイナリ配布を信用していない人もいます。
ソースコードがあれば、少なくともソースコードを読んで
(理論的には) 潜在的な問題点を自分で見つけ出すことができます。</para>
</listitem>
<listitem>
<para>ローカルなパッチがある場合、
それを適用するためにソースコードが必要になります。</para>
</listitem>
<listitem>
<para>ソースコードを手元に置いておきたい人たちもいます。
彼らは、退屈したときに眺めたり、あちこち解析してみたり、
ソースコードを借用したり (もちろん、
ライセンスが許せばの話ですが) するのです。</para>
</listitem>
</itemizedlist>
<para>ports の更新状況を把握するために、
&a.ports; や &a.ports-bugs; を購読するとよいでしょう。</para>
<warning>
<para>アプリケーションをインストールする前に、
そのアプリケーションに関連したセキュリティ上の問題がないことを
<ulink url="http://vuxml.freebsd.org/"></ulink>
で確認してください。</para>
<para>また、
インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる
<filename role="package">ports-mgmt/portaudit</filename>
をインストールしてもよいでしょう。
このコマンドは、ビルド前の port についても調査します。
インストールされている packages を確認する場合には、
<command>portaudit -F -a</command> コマンドを使ってください。</para>
</warning>
<para>この章では、packages と ports を用いた FreeBSD 上での
サードパーティ製ソフトウェアのインストール方法や管理方法について説明します。</para>
</sect1>
<sect1 id="ports-finding-applications">
<title>アプリケーションの探し方</title>
<para>どんなアプリケーションをインストールするにしても、
まずあなたが何を望んで、
またその名前がなんというのかを理解している必要があります。</para>
<para>FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。
幸運にも、多くの方法で望むものを探すことができます。</para>
<itemizedlist>
<listitem>
<para>FreeBSD ウェブサイトは、
利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で
<ulink url="&url.base;/ja/ports/index.html">http://www.FreeBSD.org/ja/ports/</ulink>
において公開しています。
ports はカテゴリに分類されています。
アプリケーションは、(名前を知っているならば) 名前で検索でき、
あるカテゴリで利用可能な
アプリケーションをすべて表示させることもできます。</para>
</listitem>
<indexterm><primary>FreshPorts</primary></indexterm>
<listitem>
<para>Dan Langille は
<ulink url="http://www.FreshPorts.org/"></ulink>
で FreshPorts を公開しています。
FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。
一つまたはそれ以上の ports を <quote>監視</quote> することができ、
変更があるとメールで更新情報を送ってくれます。</para>
</listitem>
<indexterm><primary>FreshMeat</primary></indexterm>
<listitem>
<para>ご希望のアプリケーションの名前がわからなければ、
FreshMeat (<ulink url="http://www.freshmeat.net/"></ulink>)
のようなサイトでアプリケーションを探して下さい。
その後、そのアプリケーションが ports で利用可能かどうかを
FreeBSD サイトで調べて下さい。</para>
</listitem>
<listitem>
<para>port の正確な名前を知っていて、
どのカテゴリに分類されているのかを知りたいだけなら、
&man.whereis.1; コマンドで調べることができます。
単に <command>whereis <replaceable>file</replaceable></command>
と入力してください。<replaceable>file</replaceable>
の部分にはインストールしたいプログラム名を入れます。
システム上でプログラムが見つかったら、
そのプログラムのパスが次のように表示されます。</para>
<screen>&prompt.root; <userinput>whereis lsof</userinput>
lsof: /usr/ports/sysutils/lsof</screen>
<para>この表示は、<command>lsof</command> (システムユーティリティの一つ) が
<filename>/usr/ports/sysutils/lsof</filename>
というディレクトリにあることを示しています。</para>
</listitem>
<listitem>
<para>さらに、以下の例のように &man.echo.1; を使って
port が存在するかどうかを簡単に調べることもできます。</para>
<screen>&prompt.root; <userinput>echo /usr/ports/*/*lsof*</userinput>
/usr/ports/sysutils/lsof</screen>
<para>この方法では <filename class="directory">/usr/ports/distfiles</filename>
以下にダウンロードされたファイル名にもマッチします。</para>
</listitem>
<listitem>
<para>また、Ports Collection に備わっている検索機能を利用して
port を検索する方法もあります。
この検索機能を利用するには、カレントディレクトリが
<filename>/usr/ports</filename> である必要があります。
そのディレクトリに移動したら、
<command>make <maketarget>search</maketarget>
name=<replaceable>プログラム名</replaceable></command>
と入力してください。
<replaceable>プログラム名</replaceable>の部分には検索したいプログラム名を入れます。
たとえば、<command>lsof</command>
を探したい場合には次のようにします。</para>
<screen>&prompt.root; <userinput>cd /usr/ports</userinput>
&prompt.root; <userinput>make search name=lsof</userinput>
Port: lsof-4.56.4
Path: /usr/ports/sysutils/lsof
Info: Lists information about open files (similar to fstat(1))
Maint: obrien@FreeBSD.org
Index: sysutils
B-deps:
R-deps: </screen>
<para>出力のうち特に注意して見なければならないのは
<quote>Path:</quote> という行です。
この行は port がどこにあるかを示しています。
出力される他の情報は port
をインストールする際には必要となるものではありませんので、
ここでは触れないでおきます。</para>
<para>もっと詳しく検索するには、
<command>make <maketarget>search</maketarget> key=<replaceable>string</replaceable></command>
と入力してください。
<replaceable>string</replaceable>
の部分には検索したいテキストを入れます。
port 名、コメント、説明文および依存情報が検索されます。
探しているプログラムの名前を知らない場合でも、
ある目的に関連した ports の検索に利用できます。</para>
<para>どちらの場合でも、
検索文字列中の大文字と小文字を区別せずに検索が行われるので、
<quote>LSOF</quote> を検索した結果は、
<quote>lsof</quote> と同じ検索結果になります。</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="packages-using">
<sect1info>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<!-- 30 Mar 2001 -->
</sect1info>
<title>packages システムの利用</title>
<para>FreeBSD には packages を管理するツールが複数あります。</para>
<itemizedlist>
<listitem><para><command>sysinstall</command>
からシステムに packages をインストールしたり削除できます。
また、インストールされた packages や利用可能な packages の一覧を表示できます。
詳細については、<xref linkend="packages">
を参照してください。</para></listitem>
<listitem><para>この章では、コマンドラインの
package 管理ツールについて説明します。</para></listitem>
</itemizedlist>
<sect2>
<title>package のインストール</title>
<indexterm>
<primary>packages</primary>
<secondary>インストール</secondary>
</indexterm>
<indexterm>
<primary><command>pkg_add</command></primary>
</indexterm>
<para>&man.pkg.add.1; は、ローカルファイルやネットワーク上のサーバから
FreeBSD ソフトウェア package を
インストールするためのユーティリティです。</para>
<example>
<title>手動で package をダウンロードしてローカルからインストールする</title>
<screen>&prompt.root; <userinput>ftp -a <replaceable>ftp2.FreeBSD.org</replaceable></userinput>
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
<prompt>ftp></prompt> <userinput>cd /pub/FreeBSD/ports/packages/sysutils/</userinput>
250 CWD command successful.
<prompt>ftp></prompt> <userinput>get lsof-4.56.4.tgz</userinput>
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
<prompt>ftp></prompt> <userinput>exit</userinput>
&prompt.root; <userinput>pkg_add <replaceable>lsof-4.56.4.tgz</replaceable></userinput></screen>
</example>
<para>(FreeBSD CD-ROM セットのような)
ローカルな packages がない場合は、
&man.pkg.add.1; に <option>-r</option> オプションをつける方が楽でしょう。
このユーティリティは、このオプションを指定して実行すると
自動的に適切なオブジェクトの形式とリリースを判断し、
package を FTP サイトからダウンロードしてインストールします。
</para>
<indexterm>
<primary><command>pkg_add</command></primary></indexterm>
<screen>&prompt.root; <userinput>pkg_add -r <replaceable>lsof</replaceable></userinput></screen>
<para>上の例では適当な package がダウンロードされた後、インストールされます。
ユーザはこのほかに何もする必要はありません。
メインの配布サイトではなく
&os; Package ミラーサイトの package を使うには、
<envar>PACKAGESITE</envar>
環境変数に利用したいサイトを設定してください。
&man.pkg.add.1; は、<envar>FTP_PASSIVE_MODE</envar>,
<envar>FTP_PROXY</envar>, <envar>FTP_PASSWORD</envar>
といった環境変数を参照する &man.fetch.3;
を用いてファイルをダウンロードします。
ファイアウォールの内側であったり、
FTP/HTTP プロキシを使う場合には、
これらの環境変数を設定することになります。
環境変数の一覧については &man.fetch.3; をご覧ください。
また、上の例で <literal>lsof-4.56.4</literal> の代わりに
<literal>lsof</literal> を使っていることに注意してください。
リモートフェッチ機能を使用する場合には、
package のバージョン番号を取り除かなければなりません。
&man.pkg.add.1; は自動的に最新版のアプリケーションを取得します。</para>
<note>
<para>&os.current; または、&os.stable; を使用している場合、
&man.pkg.add.1; は最新版のアプリケーションをダウンロードします。
-RELEASE を使用している場合には、
そのバージョンのリリース時にビルドされた package がダウンロードされます。
この設定は <envar>PACKAGESITE</envar> を上書きすることで変更できます。
たとえば、&os;&nbsp;8.1-RELEASE を使用している場合には、
&man.pkg.add.1; を実行するとデフォルトで
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/</literal>
から packages をダウンロードします。
もし、&man.pkg.add.1; を使って
&os;&nbsp;8-STABLE の packages をダウンロードしたければ、
<envar>PACKAGESITE</envar> 環境変数を
<literal>ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/</literal>
に設定してください。</para>
</note>
<para>package は <filename>.tgz</filename> や <filename>.tbz</filename>
という拡張子を持つファイルとして配布されており、
<ulink
url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/"></ulink>
や FreeBSD CD-ROM にあります。
FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、
<filename>/packages</filename> ディレクトリに packages
があります。packages のレイアウトは、
<filename>/usr/ports</filename> ツリーのものと同様です。
カテゴリごとにディレクトリがあり、
<filename>All</filename> ディレクトリにはすべての package
があります。
</para>
<para>package システムのディレクトリ構造は ports のレイアウトと同一です。
両者が組み合わさって package/port システムが構成されます。
</para>
</sect2>
<sect2>
<title>packages の管理</title>
<indexterm>
<primary>packages</primary>
<secondary>管理</secondary>
</indexterm>
<para>&man.pkg.info.1; は、インストールされている
packages の一覧と説明を表示するユーティリティです。
</para>
<indexterm>
<primary><command>pkg_info</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_info</userinput>
cvsup-16.1 A general network file distribution system optimized for CV
docbook-1.2 Meta-port for the different versions of the DocBook DTD
...</screen>
<para>&man.pkg.version.1; は、インストールされている
packages のバージョンを要約して表示するユーティリティです。
package のバージョンを、現在の ports ツリーのバージョンと
比較します。
</para>
<indexterm>
<primary><command>pkg_version</command></primary>
</indexterm>
<screen>&prompt.root; <userinput>pkg_version</userinput>
cvsup =
docbook =
...</screen>
<para>2 列目の記号は、インストールされているバージョンの
ローカル ports ツリーのバージョンに対する
新旧を表します。</para>
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<thead>
<row>
<entry>記号</entry>
<entry>意味</entry>
</row>
</thead>
<tbody>
<row>
<entry>=</entry> <entry>インストールされている
package のバージョンは、
ローカル ports ツリーのものと一致しています。</entry>
</row>
<row><entry>&lt;</entry>
<entry>インストールされているバージョンは、
ローカル ports ツリーのものより古いです。</entry>
</row>
<row><entry>&gt;</entry><entry>インストールされているバージョンは、
ローカル ports ツリーのものより新しいです
(おそらくローカル ports ツリーは古くなっています)。</entry></row>
<row><entry>?</entry><entry>インストールされた package を
ports インデックスの中に見つけることができません
(インストールされた port が Ports Collection から削除されたり、
名前が変更された場合などに起こります)。</entry></row>
<row><entry>*</entry><entry>複数のバージョンの
package が存在します。</entry></row>
<row><entry>!</entry><entry>インストールされた package
はインデックス中に存在しますが、何らかの理由で、
インストールされた package
のバージョン番号をインデックス中のエントリと比較できません。</entry></row>
</tbody>
</tgroup>
</informaltable>
</sect2>
<sect2>
<title>package の削除</title>
<indexterm>
<primary><command>pkg_delete</command></primary>
</indexterm>
<indexterm>
<primary>packages</primary>
<secondary>削除</secondary>
</indexterm>
<para>インストールされている package を削除するには、
&man.pkg.delete.1; ユーティリティを使ってください。
</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat-1.7.1</replaceable></userinput></screen>
<para>&man.pkg.delete.1; は package 名とバージョン番号の両方を必要とします。
すなわち、先ほどの例において
<replaceable>xchat-1.7.1</replaceable> を
<replaceable>xchat</replaceable> とした場合には動作しません。
インストールされている package のバージョンは、
&man.pkg.version.1; を使うと簡単に調べることができます。
バージョン番号のかわりにワイルドカードも使えます。</para>
<screen>&prompt.root; <userinput>pkg_delete <replaceable>xchat\*</replaceable></userinput></screen>
<para>上の例では、名前が <literal>xchat</literal> で始まるすべての packages が削除されます。</para>
</sect2>
<sect2>
<title>その他</title>
<para>package に関するすべての情報は
<filename>/var/db/pkg</filename> ディレクトリ以下に置かれています。
このディレクトリの下にあるファイルの中に、
インストールされたファイルの一覧やインストールされた各 package
についての説明が含まれています。
</para>
</sect2>
</sect1>
<sect1 id="ports-using">
<title>Ports Collection の利用</title>
<para>このセクションでは、Ports Collection
を利用してシステムにプログラムをインストールしたり、
システムから削除したりする基本的な手順について説明します。
利用可能な <command>make</command> のターゲットや環境変数についての詳細は
&man.ports.7; をご覧ください。</para>
<sect2 id="ports-tree">
<title>Ports Collection の準備</title>
<para>ports をインストールするためには、まず Ports Collection
を用意しなくてはなりません。
Ports Collection とは、<filename>/usr/ports</filename>
以下に置かれる <filename>Makefile</filename>, 修正パッチ、
説明文などの一連のファイルのことです。</para>
<para>FreeBSD のシステムインストール時に、
<application>sysinstall</application>
が Ports Collection をインストールするかどうかを尋ねてきたはずです。
No を選んだ場合、以下の作業をおこない
Ports Collection をインストールしてください。</para>
<procedure>
<title>CVSup を利用する方法</title>
<para>ここでは、<application>CVSup</application> プロトコルを利用して
Ports Collection をインストールする方法や最新の状態に保つ方法を簡単に説明します。
<application>CVSup</application> についてもっと知りたいのであれば、
<link linkend="cvsup">CVSup を使う</link> をご覧ください。</para>
<note>
<para><application>csup</application> は、
&os; システムにおける <application>CVSup</application>
プロトコルの実装です。</para>
</note>
<para>はじめて <application>csup</application> を使う際には、
<filename class="directory">/usr/ports</filename>
が空であることを確認してください!
他の方法により Ports Collection がすでに用意されていると、
<application>csup</application> は削除されたパッチを
Ports Collection から取り除かないでしょう。</para>
<step>
<para><command>csup</command> を実行してください。</para>
<screen>&prompt.root; <userinput>csup -L 2 -h <replaceable>cvsup.FreeBSD.org</replaceable> /usr/share/examples/cvsup/ports-supfile</userinput></screen>
<para><replaceable>cvsup.FreeBSD.org</replaceable> を最寄りの
<application>CVSup</application> サーバに変更してください。
ミラーサイトの完全なリストは <link
linkend="cvsup-mirrors">CVSup サイト</link> (<xref
linkend="cvsup-mirrors">) にあります。</para>
<note>
<para>
自分用の <filename>ports-supfile</filename> を使って、
コマンドラインから <application>CVSup</application>
サーバを指定することを省略したいと思う方もいるでしょう。</para>
<procedure>
<step>
<para>そのような場合には、
まず <username>root</username> ユーザ権限で、
<filename>/usr/share/examples/cvsup/ports-supfile</filename>
を <filename>/root</filename>
や、あなたのホームディレクトリなどへコピーしてください。</para>
</step>
<step>
<para>次に <filename>ports-supfile</filename> を編集します。</para>
</step>
<step>
<para><replaceable>CHANGE_THIS.FreeBSD.org</replaceable> を最寄りの
<application>CVSup</application> サーバに変更してください。
ミラーサイトの完全なリストは <link
linkend="cvsup-mirrors">CVSup サイト</link> (<xref
linkend="cvsup-mirrors">) にあります。</para>
</step>
<step>
<para>その後、以下のように
<command>csup</command> を実行してください。</para>
<screen>&prompt.root; <userinput>csup -L 2 <replaceable>/root/ports-supfile</replaceable></userinput></screen>
</step>
</procedure>
</note>
</step>
<step>
<para>&man.csup.1; コマンドを時間をおいて実行すると、
最新の変更点がダウンロードされて、あなたの手元の
Ports Collection に加えられます。
Ports Collection 全体が再度ダウンロードされることはありません。
</para>
</step>
</procedure>
<procedure>
<title>Portsnap を利用する方法</title>
<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> -->
を参照してください。</para>
<step>
<para>圧縮された Ports Collection のスナップショットを
<filename class="directory">/var/db/portsnap</filename>
にダウンロードしてください。
この作業が終われば、ネットワークへの接続を終了してもかまいません。</para>
<screen>&prompt.root; <userinput>portsnap fetch</userinput></screen>
</step>
<step>
<para>初めて <application>Portsnap</application> を使う時は、
スナップショットをまず <filename
class="directory">/usr/ports</filename> に展開してください。
</para>
<screen>&prompt.root; <userinput>portsnap extract</userinput></screen>
<para>すでに <filename
class="directory">/usr/ports</filename> が用意されていて、
アップデートだけを行ないたいのであれば、
代わりに以下のコマンドを実行してください。
</para>
<screen>&prompt.root; <userinput>portsnap update</userinput></screen>
</step>
</procedure>
<procedure>
<title>sysinstall を利用する方法</title>
<para>ここでは、<application>sysinstall</application>
を利用してインストールメディアから Ports Collection
をインストールする方法について説明します。
この方法では、リリース時の古い Ports Collection
がインストールされることに注意してください。
もし、インターネットへの接続が可能であれば、
これまでに説明した方法を使ってください。</para>
<step>
<para><username>root</username> ユーザ権限で、以下のように
<command>sysinstall</command> を実行してください。</para>
<screen>&prompt.root; <userinput>sysinstall</userinput></screen>
</step>
<step>
<para>スクロールダウンして <guimenuitem>Configure</guimenuitem> を選び、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>スクロールダウンして <guimenuitem>Distributions</guimenuitem> を選び、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>スクロールダウンして <guimenuitem>ports</guimenuitem> を選び、
<keycap>Space</keycap> キーを押してください。</para>
</step>
<step>
<para><guimenuitem>Exit</guimenuitem> までスクロールアップして、
<keycap>Enter</keycap> を押してください。</para>
</step>
<step>
<para>CDROM や FTP といったインストールメディアを選択してください。</para>
</step>
<step>
<para><guimenuitem>Exit</guimenuitem> までスクロールアップして、<keycap>Enter</keycap>
を押してください。</para>
</step>
<step>
<para><keycap>X</keycap> を押して、
<application>sysinstall</application> を終了してください。</para>
</step>
</procedure>
</sect2>
<sect2 id="ports-skeleton">
<title>ports のインストール</title>
<indexterm>
<primary>ports</primary>
<secondary>インストール</secondary>
</indexterm>
<para>一番最初に知らなければならないのは、
Ports Collection は <quote>スケルトン</quote>
と呼ばれるもので構成されているという事実です。
port スケルトンは簡単に言うと、アプリケーションを FreeBSD
上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。
それぞれの port スケルトンには、次のファイルが含まれています。
</para>
<itemizedlist>
<listitem>
<para><filename>Makefile</filename>。
<filename>Makefile</filename>
にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、
さまざまな命令文が含まれています。</para>
</listitem>
<listitem>
<para><filename>distinfo</filename> ファイル。
このファイルには、その port
を構築するためにダウンロードする必要があるファイルのファイル名と、
それらのファイルがダウンロードによって壊れていないかを
(&man.sha256.1; を使って)
確認するためのチェックサム情報が含まれています。</para>
</listitem>
<listitem>
<para><filename>files</filename> ディレクトリ。
このディレクトリには FreeBSD
システム上でプログラムをコンパイルし、
インストールするための修正パッチが含まれています。
修正パッチ (patch) とは基本的に、
個々のファイルに対する変更点を表した小さなファイル群のことです。
ファイルはプレインテキスト形式で、
<quote>10 行目を削除</quote> や
<quote>26 行目を ... に変更</quote> などと書かれています。
修正パッチは、<quote>diff (差分)</quote> とも呼ばれます。
これは、修正パッチが &man.diff.1;
プログラムで作成されるからです。</para>
<para>このディレクトリには、その port の構築に必要な
その他のファイルが入る場合もあります。</para>
</listitem>
<listitem>
<para><filename>pkg-descr</filename> ファイル。
これにはプログラムの、複数行にわたる詳しい説明文が含まれます。</para>
</listitem>
<listitem>
<para><filename>pkg-plist</filename> ファイル。
これは、その port によってインストールされる全ファイルのリストです。
これにはプログラムを削除する際に、
どのファイルを削除すれば良いのかを ports
システムに伝える役割もあります。</para>
</listitem>
</itemizedlist>
<para>これらの他に <filename>pkg-message</filename>
といったファイルを含む ports もあります。
ports システムは、
このようなファイルを用いて特殊な状況にも対応しています。
これらのファイルについての詳細および
ports の一般的な説明については、<ulink
url="&url.books.porters-handbook/index.html">port
作成者のためのハンドブック</ulink> をご覧下さい。</para>
<para>port はソースコードからアプリケーションを構築する方法を提供しますが、
実際のソースコードを含んではいません。
ソースコードは CD-ROM やインターネットから入手できます。
ソースコードはソフトウェア作者のお気に入りの形式で配布されます。
たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、
他のツールで圧縮されていたり、圧縮されずに配布されることもあります。
どのような形式で配布されているかに関わらず、
これらのプログラムのソースコードは <quote>distfile</quote>
と呼ばれています。
以下では &os; port をインストールする 2 つの方法について説明します。</para>
<note>
<para>ports をインストールするには、
<username>root</username> としてログインする必要があります。</para>
</note>
<warning>
<para>port をインストールする前に、
Ports Collection が最新であることを確認してください。
また、そのアプリケーションに関連したセキュリティ上の問題がないことを
<ulink url="http://vuxml.freebsd.org/"></ulink>
で確認してください。</para>
<para>
アプリケーションをインストールする前に、
<application>portaudit</application> を使って
セキュリティに関する脆弱性を自動的に調べることができます。
このツールは Ports Collection (<filename
role="package">ports-mgmt/portaudit</filename>) に用意されています。
新しく port をインストールする前に、
<command>portaudit -F</command> コマンドを実行すると、
最新の脆弱性に関するデータベースがダウンロードされます。
セキュリティの検査およびデータベースの更新は、
日々のセキュリティチェックで行なわれます。
詳しくは、&man.portaudit.1; および &man.periodic.8;
のマニュアルページを参照してください。</para>
</warning>
<para>Ports Collection は、ネットワークに接続できることを想定しています。
もし接続できなければ、distfile のコピーを
<filename>/usr/ports/distfiles</filename>
に手動で置いてください。</para>
<para>まず、インストールしたい port のディレクトリに移動してください。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/sysutils/lsof</userinput></screen>
<para><filename>lsof</filename> ディレクトリに移動すると、
port スケルトンがあるのが確認できると思います。
次に行なうのは、port のコンパイルまたは
<quote>ビルド (build)</quote> です。
これは、プロンプトから単に
<command>make</command> と入力するだけで行なえます。
そうすると、次のような出力が現われるはずです。</para>
<screen>&prompt.root; <userinput>make</userinput>
&gt;&gt; lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
&gt;&gt; Attempting to fetch from ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/.
===&gt; Extracting for lsof-4.57
...
[extraction output snipped]
...
&gt;&gt; Checksum OK for lsof_4.57D.freebsd.tar.gz.
===&gt; Patching for lsof-4.57
===&gt; Applying FreeBSD patches for lsof-4.57
===&gt; Configuring for lsof-4.57
...
[configure output snipped]
...
===&gt; Building for lsof-4.57
...
[compilation output snipped]
...
&prompt.root;</screen>
<para>コンパイルが終了してプロンプトに戻ることを確認してください。
次に port のインストールを行ないます。
port をインストールするのに必要なのは、
<command>make</command> コマンドに一つの単語、
<maketarget>install</maketarget> を指定することだけです。</para>
<screen>&prompt.root; <userinput>make install</userinput>
===&gt; Installing for lsof-4.57
...
[installation output snipped]
...
===&gt; Generating temporary packing list
===&gt; Compressing manual pages for lsof-4.57
===&gt; Registering installation for lsof-4.57
===&gt; SECURITY NOTE:
This port has installed the following binaries which execute with
increased privileges.
&prompt.root;</screen>
<para>プロンプトに戻ったら、
インストールしたプログラムは実行できるようになっています。
<command>lsof</command> は高い権限で動作するプログラムなので、
セキュリティに関する警告が表示されます。
ports のコンパイルや
インストール中に表示されるこれらの警告に注意してください。</para>
<para>コンパイル時に作成される作業用ディレクトリを削除すると良いでしょう。
このディレクトリにはコンパイル時に使用されるすべての一時ファイルが含まれています。
このディレクトリを残しておくと、ディスク容量を消費するだけでなく、
port を新しいバージョンへアップデートする際に問題を引き起こす可能性があります。</para>
<screen>&prompt.root; <userinput>make clean</userinput>
===&gt; Cleaning for lsof-4.57
&prompt.root;</screen>
<note>
<para><command>make</command>、<command>make <maketarget>install</maketarget></command>
および <command>make <maketarget>clean</maketarget></command>
と三つに分けられた手順の代わりに、
最初から <command>make <maketarget>install clean</maketarget></command> と実行することで、
余分な手順を二つ省くことができます。</para>
</note>
<note>
<para>シェルによってはコマンドの実行ファイルを探す時間を短縮するために、
環境変数 <envar>PATH</envar> に登録されている
ディレクトリのコマンド一覧をキャッシュするものがあります。
このようなシェルを使っているのであれば、
port をインストールしたあとで、
新しくインストールされたコマンドを用いる前に、
<command>rehash</command> コマンドを実行する必要があります。
このコマンドは <command>tcsh</command> などのシェルで動作します。
<command>sh</command> のようなシェルを使っているのであれば
<command>hash -r</command> を実行してください。
詳細については、
あなたの使っているシェルのドキュメントをご覧ください。</para>
</note>
<para><ulink url="http://www.freebsdmall.com/">FreeBSD
Mall</ulink> の FreeBSD Toolkit のようなサードパーティ製の DVD-ROM
製品の中には distfiles を収録しているものがあります。
これらを Ports Collection で使うことができます。
DVD-ROM を <filename>/cdrom</filename> にマウントしてください。
ほかのマウントポイントを使用したければ、
<makevar>CD_MOUNTPTS</makevar> 変数を設定してください。
ディスク上に必要な distfiles が存在すると、
自動的に利用されます。</para>
<note>
<para>port には CD-ROM
への収録を許可しないライセンス条項を持つものがあることに
注意してください。
これにはダウンロード前に登録を必要としたり、
再配布が禁止されているなどという理由があります。
CD-ROM に含まれていない port をインストールしたい場合には、
ネットワークに接続する必要があります。</para>
</note>
<para>ports は、<envar>FTP_PASSIVE_MODE</envar>,
<envar>FTP_PROXY</envar>, <envar>FTP_PASSWORD</envar>
といった環境変数を参照する &man.fetch.1;
を用いてファイルをダウンロードします。
ファイアウォールの内側であったり、
FTP/HTTP プロキシを使う場合には、
これらの環境変数を設定することなります。
環境変数の一覧については &man.fetch.3; をご覧ください。</para>
<para>ネットワークに常時接続できないユーザのために
<command>make <maketarget>fetch</maketarget></command>
コマンドが用意されています。
(ネットワークに接続している時に) このコマンドを
ports のトップディレクトリ
(<filename>/usr/ports</filename>) で実行してください。
必要なファイルがダウンロードされます。
このコマンドは <filename>/usr/ports/net</filename>
といった、より下の階層のカテゴリにおいても使うことができます。
ある port がライブラリやその他の ports に依存している場合には、
それらの distfiles
はダウンロードされ<emphasis>ない</emphasis>ことに注意してください。
port が依存しているものもダウンロードしたければ
<maketarget>fetch</maketarget> の代わりに
<maketarget>fetch-recursive</maketarget> を使って下さい。</para>
<note>
<para>前述した <command>make <maketarget>fetch</maketarget></command>
と同じように、トップディレクトリで <command>make</command>
を実行するとすべての port がビルドされます。
しかしながら ports の中には同時に存在できないものがあったり、
異なる ports の別のファイルが同じ名前で
インストールされる場合があることに注意してください。</para>
</note>
<para>めったにないことかもしれませんが、
<makevar>MASTER_SITES</makevar> (ファイルをダウンロードしてくる場所)
に書かれているサイト以外から tarball
を持ってくることが必要になる場合があります。
そのような場合には以下のように
<makevar>MASTER_SITES</makevar> を変更してください。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/<replaceable>directory</replaceable></userinput>
&prompt.root; <userinput>make MASTER_SITE_OVERRIDE= \
ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch</userinput></screen>
<para>上の例では <makevar>MASTER_SITES</makevar> を
<hostid role="fqdn">ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/</hostid>
に変更しています。</para>
<note>
<para>ports の中にはビルドオプションを指定できる
(または要求してくる) ものがあります。
このオプションを指定することで、
アプリケーションの機能の一部を有効もしくは無効にできます。
また、セキュリティオプションを設定したり、
その他のカスタマイズを行うことができます。
このようなアプリケーションには
<filename role="package">www/firefox</filename>,
<filename role="package">security/gpgme</filename> や
<filename role="package">mail/sylpheed-claws</filename>
などがあります。
利用可能なオプションがある場合にはメッセージが表示されます。</para>
</note>
<sect3>
<title>ports ディレクトリの変更</title>
<para>作業ディレクトリやターゲットディレクトリを
デフォルトのものから変更したほうが有用な場合
(もしくは変更しなければならない場合) があります。
<makevar>WRKDIRPREFIX</makevar> 変数と
<makevar>PREFIX</makevar> 変数を変更することで、
違うディレクトリを使用することができます。
たとえば、</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=/usr/home/example/ports install</userinput></screen>
<para>とすると、ports は <filename>/usr/home/example/ports</filename>
でコンパイルされ、すべて <filename>/usr/local</filename>
以下にインストールされます。</para>
<screen>&prompt.root; <userinput>make PREFIX=/usr/home/example/local install</userinput></screen>
<para>この場合、コンパイルは <filename>/usr/ports</filename>
でおこない、
<filename>/usr/home/example/local</filename>
にインストールします。</para>
<para>もちろん、</para>
<screen>&prompt.root; <userinput>make WRKDIRPREFIX=../ports PREFIX=../local install</userinput></screen>
<para>とすれば両者を組み合わせることが可能です
(省略せずに記述したらこのページに収めるには長すぎるのですが、
考え方は理解していただけたと思います)。</para>
<para>あるいは、これらを環境変数に設定する方法もあります。
どのようにすれば良いかについては、
あなたの使っているシェルのマニュアルページを参照してください。</para>
</sect3>
<sect3>
<title><command>imake</command> の使用</title>
<para>(X Window System に含まれる) <command>imake</command> を使用する
ports の場合は <makevar>PREFIX</makevar> が機能せず、
<filename>/usr/X11R6</filename> にインストールしようとします。
また、Perl 関連の ports も同様に <makevar>PREFIX</makevar> を無視して
Perl ツリーにインストールします。
これらの ports で <makevar>PREFIX</makevar>
がきちんと参照されるように変更するのは、ほとんど不可能です。</para>
</sect3>
<sect3>
<title>ports の再構築</title>
<para>
ports をコンパイルする際、ビルドオプションを設定するために
ncurses ベースのメニューが表示されることがあります。
port の構築後、再びこのメニューを表示させてオプションの追加や削除、設定の変更を行いたいと思うことがあるでしょう。
このための方法はたくさんあります。
一つ目の方法は port のディレクトリに移動し、
<command>make <maketarget>config</maketarget></command> と入力する方法です。
現在の設定を反映させたメニューが再び表示されます。
別の方法は <command>make <maketarget>showconfig</maketarget></command>
を使う方法です。
port の設定可能なオプションがすべて表示されます。
他の方法は <command>make <maketarget>rmconfig</maketarget></command>
の実行です。
このコマンドを実行すると選択されているすべてのオプションが削除され、
設定をもう一度やり直すことができます。
これらの方法や他の方法についての詳細は、
&man.ports.7; マニュアルで説明されています。</para>
</sect3>
</sect2>
<sect2 id="ports-removing">
<title>インストールした ports の削除</title>
<indexterm>
<primary>ports</primary>
<secondary>削除</secondary>
</indexterm>
<para>ports のインストール方法について知ればおそらく、
インストールした後になって間違っていたことに気付いた時などに備えて、
それらを削除するにはどうすれば良いのか疑問に感じることでしょう。
<!-- 2000/07/16:hrs - why "decide"? -->
さて、前の例 (例のまま何も変更していない人は
<command>lsof</command>)
を削除してみましょう。
packages を削除する時とまったく同じく (<link
linkend="packages-using">packages の章</link> で説明したように)
&man.pkg.delete.1; コマンドで ports を削除できます。</para>
<screen>&prompt.root; <userinput>pkg_delete lsof-4.57</userinput></screen>
</sect2>
<sect2 id="ports-upgrading">
<title>ports のアップグレード</title>
<indexterm>
<primary>ports</primary>
<secondary>アップグレード</secondary>
</indexterm>
<para>まず最初に &man.pkg.version.1; コマンドを使って、
古くなってしまった ports
の中で新しいバージョンにアップデート可能なものを
Ports Collection からリストアップしてください。</para>
<screen>&prompt.root; <userinput>pkg_version -v</userinput></screen>
<sect3 id="ports-file-updating">
<title><filename>/usr/ports/UPDATING</filename></title>
<para>Ports Collection を更新したら、port をアップグレードする前に
<filename>/usr/ports/UPDATING</filename>
ファイルに目を通してください。
このファイルには
port をアップグレードする際にユーザが遭遇するであろう問題や、
追加で必要な作業などが記述されています。
例えば、ファイル形式の変更や設定ファイルの場所の変更、
前のバージョンと互換性がなくなったことなどが書かれています。 </para>
<para>もし、この節に書いてあることと
<filename>UPDATING</filename> に書かれていることが矛盾している場合には、
<filename>UPDATING</filename> を優先してください。</para>
</sect3>
<sect3 id="portupgrade">
<title>portupgrade を用いた ports のアップグレード</title>
<indexterm>
<primary>portupgrade</primary>
</indexterm>
<para><application>portupgrade</application> は、
インストールした ports
のアップグレードを簡単に行なうためのユーティリティです。
<filename role="package">ports-mgmt/portupgrade</filename>
port から利用できます。
他の port と同じように <command>make <maketarget>install
clean</maketarget></command> コマンドでインストールしてください。</para>
<screen>&prompt.root; <userinput>cd /usr/ports/ports-mgmt/portupgrade</userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para><command>pkgdb -F</command> コマンドを使って、
インストールされている ports を調べてください。
矛盾が検出された場合には修復してください。
アプリケーションをアップデートする前には、
この作業を定期的に行なうとよいでしょう。</para>
<para><command>portupgrade -a</command> を実行すると、
<application>portupgrade</application>
はシステムにインストールされている port
の中で古くなったものをすべてアップデートします。
もし、すべての ports
に対して個別にアップグレードするかどうかを確認したいのであれば、
<option>-i</option> オプションを使ってください。</para>
<screen>&prompt.root; <userinput>portupgrade -ai</userinput></screen>
<para>ports で利用可能なすべてのアプリケーションではなく、
ある特定のアプリケーションだけを更新したいのであれば、
<command>portupgrade <replaceable>pkgname</replaceable></command>
を実行してください。
アップグレードするアプリケーションが依存しているすべての
ports をまず先に更新したい場合には、
<option>-R</option> オプションを使ってください。</para>
<screen>&prompt.root; <userinput>portupgrade -R firefox</userinput></screen>
<para>ports ではなく packages を用いてインストールを行ないたい場合には、
<option>-P</option> オプションを使ってください。
このオプションを使うと、<application>portupgrade</application> は
<envar>PKG_PATH</envar> に登録されているローカルディレクトリを検索します。
ローカルに packages が見つからなければ、
リモートサイトからダウンロードを試みます。
packages をローカルに見つけることができず、
リモートサイトからもダウンロードできない場合には、
<application>portupgrade</application>
は ports からインストールを行ないます。
ports を使用したくなければ、<option>-PP</option>
オプションを指定してください。</para>
<screen>&prompt.root; <userinput>portupgrade -PP gnome2</userinput></screen>
<para>また、ビルドやインストールを行なわず、
distfiles (<option>-P</option> が指定されている場合は packages)
だけをダウンロードしたければ、
<option>-F</option> オプションを指定してください。
詳細は &man.portupgrade.1; を参照してください。</para>
</sect3>
<sect3 id="portmanager">
<title>Portmanager を用いた ports のアップグレード</title>
<indexterm>
<primary>portmanager</primary>
</indexterm>
<para>インストールした ports
のアップグレードを簡単に行なうためのもうひとつのユーティリティが
<application>Portmanager</application> です。
<filename role="package">ports-mgmt/portmanager</filename> port
から利用できます。</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/ports-mgmt/portmanager</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para>インストールされているすべての ports
を次のような簡単なコマンドでアップグレードできます。</para>
<screen>&prompt.root; <userinput>portmanager -u</userinput></screen>
<para><application>Portmanager</application>
の作業を確認しながら行いたい場合には、
<option>-ui</option> フラグを追加して上記のコマンドを実行
(<userinput>portmanager -u -ui</userinput>)
してください。
<application>Portmanager</application> を使って、
システムに新しい ports をインストールすることもできます。
通常の <command>make <maketarget>install clean</maketarget></command> コマンドと異なり、
選択した port をビルドしインストールする前に、
依存している port をすべてアップグレードします。</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>x11/gnome2</replaceable></userinput></screen>
<para>選択した port の依存関係について問題が発生した場合には、
<application>Portmanager</application>
を使って修復することができます。
修正が終ったら、問題を含んでいた port は再構築されます。</para>
<screen>&prompt.root; <userinput>portmanager <replaceable>graphics/gimp</replaceable> -f</userinput></screen>
<para>詳細については &man.portmanager.1; を参照してください。</para>
</sect3>
<sect3 id="portmaster">
<title>Portmaster を用いた ports のアップグレード</title>
<indexterm>
<primary>portmaster</primary>
</indexterm>
<para>インストールした ports
のアップグレードを行うためのもう一つのユーティリティが
<application>Portmaster</application> です。
<application>Portmaster</application> は、
どの ports をアップグレードすべきかの判断を、
(他の ports に依存せずに) <quote>base</quote> システムのツールと
<filename class="directory">/var/db/pkg/</filename>
の情報から行うよう設計されています。
<filename role="package">ports-mgmt/portmaster</filename>
から利用できます。</para>
<screen>&prompt.root; <userinput>cd <filename class="directory">/usr/ports/ports-mgmt/portmaster</filename></userinput>
&prompt.root; <userinput>make install clean</userinput></screen>
<para><application>Portmaster</application> は、ports を 4 つのカテゴリに分類します。</para>
<itemizedlist>
<listitem>
<para>Root ports (他の port に依存しません。他の port からも依存されません。)</para>
</listitem>
<listitem>
<para>Trunk ports (他の port に依存しませんが、他の port から依存されます。)</para>
</listitem>
<listitem>
<para>Branch ports (他の port に依存し、他の port からも依存されます。)</para>
</listitem>
<listitem>
<para>Leaf ports (他の port に依存しますが、他の port からは依存されません。)</para>
</listitem>
</itemizedlist>
<para><option>-L</option> オプションを使うと、
インストールした ports やアップデート可能な port の一覧が表示されます。</para>
<screen>&prompt.root; <userinput>portmaster -L</userinput>
===>>> Root ports (No dependencies, not depended on)
===>>> ispell-3.2.06_18
===>>> screen-4.0.3
===>>> New version available: screen-4.0.3_1
===>>> tcpflow-0.21_1
===>>> 7 root ports
...
===>>> Branch ports (Have dependencies, are depended on)
===>>> apache-2.2.3
===>>> New version available: apache-2.2.8
...
===>>> Leaf ports (Have dependencies, not depended on)
===>>> automake-1.9.6_2
===>>> bash-3.1.17
===>>> New version available: bash-3.2.33
...
===>>> 32 leaf ports
===>>> 137 total installed ports
===>>> 83 have new versions available
</screen>
<para>以下のコマンドを使って、インストールされているすべての ports を簡単にアップデートできます。</para>
<screen>&prompt.root; <userinput>portmaster -a</userinput></screen>
<note><para><application>Portmaster</application> のデフォルトの設定では、
インストールされている port を削除する前にバックアップ用の package が作成されます。
このバックアップは、新しいバージョンのインストールに成功すると削除されます。
<option>-b</option> オプションを使うと、
<application>Portmaster</application> はバックアップを自動的に削除しません。
<option>-i</option> オプションを追加すると、
<application>Portmaster</application> をインタラクティブモードで使用できます。
このモードでは、各 port をアップグレードするかどうかの選択を対話的に行うことがでます。</para></note>
<para>アップグレードの過程でエラーに遭遇した場合には、
<option>-f</option> オプションを使ってすべての ports のアップグレードや再構築をできます。</para>
<screen>&prompt.root; <userinput>portmaster -af</userinput></screen>
<para><application>Portmaster</application> を使ってシステムに新しい ports
をインストールしたり、新しい port のコンパイルやインストール前に依存するすべての port をアップグレードできます。</para>
<screen>&prompt.root; <userinput>portmaster <replaceable>shells/bash</replaceable></userinput></screen>
<para>詳細については &man.portmaster.8; を参照してください。</para>
</sect3>
</sect2>
<sect2 id="ports-disk-space">
<title>ports とディスク容量</title>
<indexterm>
<primary>ports</primary>
<secondary>ディスク容量</secondary>
</indexterm>
<para>Ports Collection を使い続けていると、
そのうちディスクを食いつぶしてしまうでしょう。
ports からソフトウェアをビルドしてインストールした後には、
常に作業用の <filename class="directory">work</filename>
ディレクトリを <command>make <maketarget>clean</maketarget></command>
コマンドで削除するようにしましょう。
以下のコマンドで Ports Collection を掃除することができます。</para>
<screen>&prompt.root; <userinput>portsclean -C</userinput></screen>
<para><filename class="directory">distfiles</filename>
ディレクトリには、たくさんのソースファイルがたまっていきます。
手動でそれらのファイルを削除してもよいのですが、
どの ports からも使われていない
distfiles を次のコマンドで削除できます。</para>
<screen>&prompt.root; <userinput>portsclean -D</userinput></screen>
<para>また、システムにインストールされている port から使われていない
distfiles をすべて削除するには、以下のコマンドを使ってください。</para>
<screen>&prompt.root; <userinput>portsclean -DD</userinput></screen>
<note>
<para><command>portsclean</command> ユーティリティは
<application>portupgrade</application> ツール群の一部です。</para>
</note>
<para>インストールした ports のうちで、
必要なくなったものは削除してください。
<filename role="package">ports-mgmt/pkg_cutleaves</filename> port は、
この作業を自動化するツールです。</para>
</sect2>
</sect1>
<sect1 id="ports-nextsteps">
<title>インストール後の作業</title>
<para>新しいアプリケーションのインストールが終わったら、
次に付属のドキュメントを読みたいと思うでしょう。
また、必要な設定ファイルを編集したり、
(デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。</para>
<para>port のインストール後に追加で行わなければならない作業の詳細は、
アプリケーションごとに異なります。
しかしながら、新しいアプリケーションをインストールしたばかりで、
<quote>次は何 ?</quote> と思っているのであれば、
以下の tips は役に立つでしょう。</para>
<itemizedlist>
<listitem>
<para>どのようなファイルがどこにインストールされているのかを知りたければ、
&man.pkg.info.1; を使ってください。
たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、
以下を実行してください。</para>
<screen>&prompt.root; <userinput>pkg_info -L foopackage-1.0.0 | less</userinput></screen>
<para>上のコマンドを実行すると package
としてインストールされているすべてのファイルが表示されます。
特に、<filename>man/</filename>, <filename>etc/</filename>,
<filename>doc/</filename> ディレクトリのファイルに注目してください。
それぞれ、マニュアルページ、
設定ファイル、より包括的なドキュメントが設置されています。</para>
<para>もし、アプリケーションのバージョンがわからなければ、
次のコマンドを実行してください。</para>
<screen>&prompt.root; <userinput>pkg_info | grep -i <replaceable>foopackage</replaceable></userinput></screen>
<para>インストールされた packages の中から、名前に
<replaceable>foopackage</replaceable> を含む package が表示されます。
必要に応じてコマンドラインの <replaceable>foopackage</replaceable>
を置き換えてください。</para>
</listitem>
<listitem>
<para>アプリケーションのマニュアルページがインストールされているのであれば、
&man.man.1; を使ってマニュアルを読んでください。
同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。</para>
</listitem>
<listitem>
<para>アプリケーションのウェブサイトがあれば、
そのサイトに更なるドキュメントや FAQ がないかを調べてください。
ウェブサイトのアドレスがわからなければ、
次のコマンドで表示されるかもしれません。
</para>
<screen>&prompt.root; <userinput>pkg_info <replaceable>foopackage-1.0.0</replaceable></userinput></screen>
<para>ウェブサイトが存在すると、 URL が
<literal>WWW:</literal> を含む行に表示されます。</para>
</listitem>
<listitem>
<para>(インターネットサーバのように)
システム起動時に立ち上げる必要のある port は、
サンプルスクリプトを通常
<filename>/usr/local/etc/rc.d</filename> にインストールします。
このスクリプトを調べ、
必要があれば編集したりスクリプトの名前を変更してください。
詳細は <link
linkend="configtuning-starting-services">サービスの起動</link>
をご覧ください。</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="ports-broken">
<title>うまく動作しない ports に遭遇した場合には</title>
<para>port がうまく動作しない状況に遭遇したら、
あなたにできることは次のようなことしかありません。</para>
<orderedlist>
<listitem>
<para>その port に対する修正案が提出されていないかどうかを
<ulink url="&url.base;/ja/support.html#gnats">障害報告
(Problem Report) データベース</ulink> で調べてください。
もし提案されていれば、
その修正を使うことができるかもしれません。</para>
</listitem>
<listitem>
<para>port の保守担当者に対応してもらいましょう。
<command>make <maketarget>maintainer</maketarget></command> と入力するか、
<filename>Makefile</filename> を直接読み、
保守担当者の電子メールアドレスを調べます。
メールを送る際には、port 名とバージョン番号
(<filename>Makefile</filename> の
<literal>&dollar;FreeBSD:</literal> 行)、
そしてエラーが出力されるまでの出力ログを忘れずに添付してください。</para>
<note>
<para>特定の保守担当者が存在せず、かわりに <ulink
url="&url.articles.mailing-list-faq.en;/article.html">メーリングリスト
</ulink> が保守している ports があります。
そのような場合には、メールアドレスは
<email role="nolink">freebsd-listname@FreeBSD.org</email>
のようになります。
質問する際には、このことに気をつけてください。</para>
<para>特に <email role="nolink">ports@FreeBSD.org</email>
が保守している ports には、保守担当者が本当にいません。
そのメーリングリストを購読する人々からなるコミュニティが、
修正や対応をおこなっています。
もっとボランティアが必要です!</para>
</note>
<para>
保守担当者から返信がなければ、&man.send-pr.1;
を使ってバグレポートを提出しても構いません (<ulink
url="&url.articles.problem-reports;/article.html">
FreeBSD 障害報告の書き方</ulink> をご覧ください)。</para>
</listitem>
<listitem>
<para>自分で直しましょう!
<quote>Ports</quote> システムに関する詳細な情報は <ulink
url="&url.books.porters-handbook/index.html">
port 作成者のためのハンドブック</ulink> にあります。
このセクションを読むと、壊れてしまった port を直したり、
自分で作った port を提出したりできるようになります!</para>
</listitem>
<listitem>
<para>近くの FTP サイトから package を入手しましょう。
<quote>マスタ</quote> package コレクションは、
<hostid role="fqdn">ftp.FreeBSD.org</hostid> の
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/">
package のディレクトリ</ulink> にありますが、
まずはあなたの地域の <link
linkend="mirrors-ftp">ミラーサイト</link>
を<emphasis>最初に</emphasis>調べてください。
ソースからコンパイルすることを試みるより確実ですし、
時間もかかりません。
package をシステムにインストールするには、&man.pkg.add.1; を使います。
</para>
</listitem>
</orderedlist>
</sect1>
</chapter>
<!--
Local Variables:
mode: sgml
sgml-declaration: "../chapter.decl"
sgml-indent-data: t
sgml-omittag: nil
sgml-always-quote-attributes: t
sgml-parent-document: ("../book.sgml" "part" "chapter")
End:
-->