diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml index d30bae5258..6600607524 100644 --- a/ja_JP.eucJP/books/handbook/ports/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -1,1694 +1,1693 @@ アプリケーションのインストール - packages と ports この章では ports packages FreeBSD の基本システムには数多くのシステムツールが含まれています。 しかしながら、サードパーティ製のアプリケーションをインストールしないと 実用的にはそれほどたくさんのことはできません。 FreeBSD は、サードパーティ製のソフトウェアをインストールするために Ports Collection と packages という相補的な 2 つの技術を提供しています。 どちらのシステムを用いても、お気に入りのアプリケーションの最新版を ローカルメディアやネットワーク上からインストールできます。 この章を読むと、以下のことがわかります。 packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法 Ports Collection を用いてサードパーティ製のソフトウェアをコンパイルする方法 インストールされた packages や ports を削除する方法 ソフトウェアのインストール すでに Unix システムを使ったことのある人ならば、 サードパーティ製ソフトウェアの典型的なインストール手順が 以下のようになることをご存知でしょう。 ソースコード、またはバイナリ形式で 配布されているソフトウェアをダウンロードする。 配布時のフォーマット (一般的には &man.compress.1; または &man.gzip.1; で圧縮された tarball) からソフトウェアを取り出す。 ドキュメントを探しだし (おそらく README ファイル、あるいは doc/ サブディレクト中のファイル)、 ソフトウェアのインストール方法を調べる。 ソース形式でソフトウェアが配布されている場合はコンパイルを行う。 ここでは、Makefile の編集、 または、configure スクリプトの実行、 あるいは他の作業を伴うことがある。 ソフトウェアの動作を確認し、インストールする。 すべてがうまくいったならば、インストール作業は以上です。 もしインストールしているソフトウェアパッケージが、 FreeBSD を意識して移植されたものでなければ、 適切に動くようコードを調べ、編集する必要があるかもしれません。 あなたが望むのであれば、FreeBSD 上へのソフトウェアのインストールに 従来 の方法を使い続けることができます。 しかしながら、FreeBSD は インストール時にかかるたくさんの労力を軽減する 2 つの技術、 すなわち packages と ports を提供しています。 この文書を書いている時点では、 &os.numports; を越えるサードパーティ製アプリケーションがこれらの方法で 利用可能となっています。 FreeBSD package では、いかなるアプリケーションに対しても ダウンロードする必要のあるファイルはただ一つです。 package には、コンパイル済みのアプリケーションの全コマンド、 各種設定ファイルやドキュメントが含まれています。 FreeBSD に用意されている &man.pkg.add.1;, &man.pkg.delete.1;, &man.pkg.info.1; といった package 管理コマンドで、 ダウンロードした package ファイルを扱うことができます。 新しいアプリケーションをインストールするには、 たった一つのコマンドを実行するだけです。 FreeBSD port は、アプリケーションをソースコードからコンパイルする際の 処理を自動化するように設計されたファイルの集まりです。 プログラムをコンパイルする時のことを思い出して下さい。 通常、とてもたくさんの手順 (展開、パッチ作業、コンパイル、インストール) を踏まなくてはなりません。 port を構成するファイルは、 これらすべての作業をあなたの代わりに行うために必要な情報を含んでいます。 いくつかの簡単なコマンドを実行すると、 自動的にアプリケーションのソースコードがダウンロードされ、展開、 パッチ作業、コンパイル、そして、インストール作業が行われます。 さらに ports システムは、pkg_add コマンドや他の package 管理コマンドで扱うことのできる packages を生成できます。 これらのコマンドについては後の節で簡単に紹介します。 packages と ports は依存関係を理解します。 ある特定のライブラリに依存する アプリケーションをインストールするとします。 また、アプリケーションとライブラリは FreeBSD ports や packages によって 入手可能であるとします。 アプリケーションを追加するために pkg_add コマンドまたは ports システムを用いると、 インストールされていないライブラリが検出され、 先に依存するライブラリがインストールされます。 2 つの技術が非常に類似していて、 なぜ FreeBSD がわざわざ両者を採用しているのか不思議に思うでしょう。 packages と ports にはそれぞれ独自の特徴があり、 どちらを使うかはあなたの好みによります。 package の利点 一般的に、あるアプリケーションの package の tarball は、 ソースコードを含む tarball より小さなサイズとなります。 packages はコンパイル作業を必要としません。 このことは、Mozilla, KDE, または GNOME といった大きなアプリケーションで重要となります。 特にシステムが遅い場合にはなおさら重要です。 packages を用いれば、 ソフトウェアのコンパイルに関する知識は必要ありません。 ports の利点 packages は、通常最も多くのシステムで実行できるように、 非常に保守的な設定で構築されています。 port からインストールすることで、 たとえば Pentium III や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。 アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。 設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。 ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。 バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。 ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。 ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。 ports の更新状況を把握するために、 &a.ports; を購読するとよいでしょう。 この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアの インストール方法や管理方法について説明します。 アプリケーションの探し方 どんなアプリケーションをインストールするにしても、 まずあなたが何を望んで、 またその名前がなんというのかを理解している必要があります。 FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 幸運にも、多くの方法で望むものを探すことができます。 FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で http://www.FreeBSD.org/ports/ において公開しています。 アプリケーションの名前はカテゴリに分類されています。 アプリケーションは、(名前を知っているならば) 名前で検索でき、 あるカテゴリで利用可能な アプリケーションをすべて表示させることもできます。 FreshPorts Dan Langille は http://www.FreshPorts.org/ で FreshPorts を公開しています。 FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。 一つまたはそれ以上の ports を 監視 することができ、 変更があるとメールで更新情報を送ってくれます。 FreshMeat ご希望のアプリケーションの名前がわからなければ、 FreshMeat (http://www.freshmeat.net/) のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。 Chern Lee 寄稿: packages システムの利用 package のインストール packages インストール pkg_add &man.pkg.add.1; は、ローカルファイルやネットワーク上のサーバから FreeBSD ソフトウェア package を インストールするためのユーティリティです。 package をダウンロードしてローカルからインストールする &prompt.root; ftp -a ftp2.FreeBSD.org 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. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz 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) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz (FreeBSD CD-ROM セットのような) ローカルな packages がない場合は、 &man.pkg.add.1; に オプションをつける方が楽でしょう。 このユーティリティは、このオプションを指定して実行すると 自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP サイトからダウンロードしてインストールします。 pkg_add &prompt.root; pkg_add -r lsof 上の例では適当な package がダウンロードされた後、インストールされます。 ユーザはこれ以外に作業をする必要はありません。 &man.pkg.add.1; は、FTP_PASSIVE_MODE, FTP_PROXY および FTP_PASSWORD といった環境変数を参照する &man.fetch.3; を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 完全なリストについては &man.fetch.3; をご覧ください。 また、上の例で lsof-4.56.4 の代わりに lsof を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 package のバージョン番号を取り除く必要があります。 &man.pkg.add.1; は自動的に最新版のアプリケーションを取得します。 package は .tgz という拡張子を持つファイルとして配布されており、 ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ や FreeBSD CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 /packages ディレクトリに packages が あります。packages のレイアウトは、 /usr/ports ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 All ディレクトリにはすべての package があります。 package システムのディレクトリ構造は ports のそれと同一です。 両者が組み合わさって package/port システムが構成されます。 package の削除 pkg_delete packages 削除 インストールされている package を削除するには、 &man.pkg.delete.1; ユーティリティを使ってください。 &prompt.root; pkg_delete xchat-1.7.1 packages の管理 packages 管理 &man.pkg.info.1; は、インストールされている packages の一覧と説明を表示するユーティリティです。 pkg_info &prompt.root; pkg_info 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 ... &man.pkg.version.1; は、インストールされている packages のバージョンを要約して表示するユーティリティです。 package のバージョンを、現在の ports ツリーのバージョンと 比較します。 pkg_version &prompt.root; pkg_version cvsup = docbook = ... 2 列目の記号は、インストールされているバージョンの ローカル ports ツリーのバージョンに対する 新旧を表します。 記号 意味 = インストールされている package のバージョンは、 ローカル ports ツリーのものと一致しています。 < インストールされているバージョンは、 ローカル ports ツリーのものより古いです。 >インストールされているバージョンは、 ローカル ports ツリーのものより新しいです (おそらくローカル ports ツリーは古くなっています)。 ?インストールされた package を ports インデックスの中に見つけることができません。 *複数のバージョンの package が存在します。 その他 package に関するすべての情報は /var/db/pkg ディレクトリ以下に置かれています。 このディレクトリの下にあるファイルの中に、 インストールされたファイルの一覧やインストールされた各 package についての説明が含まれています。 Ports Collection の利用 このセクションでは、Ports Collection を利用してシステムにプログラムをインストールしたり、 システムから削除したりする基本的な手順について説明します。 Ports Collection の準備 ports をインストールするためには、まず Ports Collection を用意しなくてはなりません。 Ports Collection とは、/usr/ports 以下に置かれる Makefile, 修正パッチ、 説明文などの一連のファイルのことです。 FreeBSD のシステムインストール時に、 sysinstall が Ports Collection をインストールするかどうかを尋ねてきたはずです。 No を選んだ場合、以下の作業をおこない Ports Collection をインストールしてください。 sysinstall を利用する方法 ここでは、再び sysinstall を利用して Ports Collection を手動でインストールする方法について説明します。 root ユーザ権限で、以下のように /stand/sysinstall を実行してください。 &prompt.root; /stand/sysinstall スクロールダウンして Configure を選び、 Enter を押してください。 - スクロールダウンして Distributions を選び、 + スクロールダウンして Distributions を選び、 Enter を押してください。 スクロールダウンして ports を選び、 Space キーを押してください。 Exit までスクロールアップして、 Enter を押してください。 CDROM や FTP といったインストールメディアを選択してください。 メニューに従って sysinstall を終了してください。 Ports Collection をインストールしたり、最新の状態にしておくためのもう一つの方法は CVSup を利用する方法です。 ports 用の CVSup ファイル /usr/share/examples/cvsup/ports-supfile をご覧ください。 CVSup を使うための情報や、 このファイルに関する説明は CVSup を使う () にあります。 CVSup を利用する方法 ここでは、CVSup を利用して Ports Collection をインストールする方法について簡単に説明します。 あなたの ports ツリーを最新の状態にしておきたい、または CVSup についてもっと知りたいのであれば、 先ほど紹介したセクションをご覧ください。 まず net/cvsup port をインストールしてください。 インストールについての詳細は、CVSup のインストール () を参照してください。 root ユーザ権限で、 /usr/share/examples/cvsup/ports-supfile/root や、あなたのホームディレクトリなどへコピーしてください。 次に ports-supfile を編集します。 CHANGE_THIS.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト () にあります。 cvsup を実行してください。 &prompt.root; cvsup -g -L 2 /root/ports-supfile この手順を時間をおいて繰り返し実行すると、 最新の変更点がダウンロードされて、あなたの手元の Ports Collection に加えられます。 ports のインストール ports インストール 一番最初に知らなければならないのは、 Ports Collection は スケルトン と呼ばれるもので構成されているという事実です。 port スケルトンは簡単に言うと、アプリケーションを FreeBSD 上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。 それぞれの port スケルトンには、次のファイルが含まれています。 MakefileMakefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、 さまざまな命令文が含まれています。 distinfo ファイル。 このファイルには、その port を構築するために ダウンロードする必要があるファイルのファイル名と、 それらのファイルがダウンロードによって壊れていないか チェックするためのチェックサム情報が含まれています。 files ディレクトリ。 このディレクトリには FreeBSD システム上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 修正パッチ (patch) とは基本的に、 個々のファイルに対する変更点を表した小さなファイル群のことです。 ファイルはプレインテキスト形式で、 10 行目を削除26 行目を ... に変更 などと書かれています。 修正パッチは、diff (差分) とも呼ばれます。 これは、修正パッチが &man.diff.1; プログラムで作成されるからです。 このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。 pkg-comment ファイル。 これにはプログラムの一行説明文が含まれています。 pkg-descr ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。 pkg-plist ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。 これらの他に pkg-message といったファイルを含む ports もあります。 ports システムは、 このようなファイルを用いて特殊な状況にも対応しています。 これらのファイルについての詳細および ports の一般的な説明については、port 作成者のためのハンドブック をご覧下さい。 さて、Ports Collection が何のために使われるものなのか、 それを理解するための予備知識はこれで十分なので、 最初の port をインストールする準備ができました。 それには二つの方法があり、以下でそれぞれについて説明しています。 実際の作業に入る前に、 インストールする port を選ぶ必要があります。 選ぶ方法はいくつかありますが、最も簡単なのは FreeBSD ウェブサイトの ports リスト を利用することでしょう。 そこにリストされている ports や、 サイトの検索機能を使って閲覧することができます。 各々の port には説明文が含まれていますので、 インストールを決める前にその port に関する説明を読むこともできます。 もう一つの方法は、&man.whereis.1; コマンドを使うことです。 単に whereis file と入力してください。file の部分にはインストールしたいプログラム名を入れます。 もし、あなたのシステム上でプログラムが見つかれば、 それがどこにあるのかが次のように表示されます。 &prompt.root; whereis lsof lsof: /usr/ports/sysutils/lsof この表示は、lsof (システムユーティリティの一つ) が /usr/ports/sysutils/lsof というディレクトリに見つかったことを示しています。 また、Ports Collection の持つ検索機能を利用して port を検索する方法もあります。 この検索機能を利用するには、カレントディレクトリが /usr/ports である必要があります。 そのディレクトリに移動したら、 make search key=プログラム名 と入力してください。 プログラム名の部分には検索したいプログラム名を入れます。 たとえば、lsof を探したい場合には次のようにします。 &prompt.root; cd /usr/ports &prompt.root; make search name=lsof 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: 出力のうち特に注意して見なければならないのは Path という行です。 この行は xchat がどこにあるかを示しています。 出力される他の情報は port をインストールする際には直接必要となるものではありませんので、 ここでは触れないでおきます。 もっと詳細な検索をするには、 make search key=string と入力してください。 string の部分には検索したいテキストを入れます。 port 名、コメント、説明文および依存情報が検索されます。 探しているプログラムの名前を知らない場合でも、 ある目的に関連した ports の検索に利用できます。 どちらの場合でも、 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 LSOF を検索した結果は、 lsof と同じ検索結果になります。 ports をインストールするには、 root ユーザにならなければなりません。 インストールしたい port が見つかったら、 実際のインストールに移ることができます。 port はソースコードからアプリケーションを構築する方法を提供しますが、 実際のソースコードは含んでいません。 ソースコードは CD-ROM やインターネットから入手できます。 ソースコードはソフトウェア作者のお気に入りの形式で配布されます。 たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、 他のツールで圧縮されていたり、圧縮されずに配布されることもあります。 どのような形式で配布されているかに関わらず、 これらのプログラムのソースコードは distfile と呼ばれています。 distfile は CD-ROM もしくはインターネット経由で入手できます。 CD-ROM からの ports のインストール ports CD-ROM からのインストール FreeBSD プロジェクトの公式 CDROM イメージには もう distfiles は収録されていません。 あらかじめコンパイルされた packages が CDROM の大部分を占めています。 一方、FreeBSD PowerPak のような CDROM 製品は distfiles を収録しています。 FreeBSD Mall といったベンダからこれらの製品を注文できます。 このセクションではこのような FreeBSD の CDROM セットを持っていることを前提としています。 FreeBSD CDROM をドライブに入れ、 /cdrom にマウントしてください (ほかのマウントポイントを指定すると、インストールに失敗します)。 まず、インストールしたい port のディレクトリに移動してください。 &prompt.root; cd /usr/ports/sysutils/lsof lsof ディレクトリに移動すると、 port スケルトンがあるのが確認できると思います。 次に行なうのは、port のコンパイル (構築、ビルド (build) とも呼ばれます) です。 これは、プロンプトから単に make と入力するだけで行なえます。 そうすると、次のような出力が現われるはずです。 &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... &prompt.root; コンパイルが終了してプロンプトに戻ることを確認してください。 次に port のインストールを行ないます。 port をインストールするのに必要なのは、 make コマンドに一つの単語、 install を指定することだけです。 &prompt.root; make install ===> Installing for lsof-4.57 ... -[install output snipped] +[installation output snipped] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; プロンプトに戻ったら、 インストールしたプログラムは実行できるようになっています。 lsof は高い権限で動作するプログラムなので、 セキュリティに関する警告が表示されます。 ports のコンパイルや インストール中に表示されるこれらの警告に注意してください。 makemake install と二つに分けられた手順の代わりに、 最初から make install と実行することで、 手順の二番目の操作を省くことができます。 シェルによってはコマンドの実行ファイルを探す時間を短縮するために、 環境変数 PATH に登録されている ディレクトリのコマンド一覧をキャッシュするものがあります。 このようなシェルを使っているのであれば、 port をインストールしたあとで、 新しくインストールされたコマンドを用いる前に、 rehash コマンドを実行する必要があります。 基本システム付属のシェル (たとえば tcsh) や ports から利用可能なシェル (たとえば shells/zsh) の両方で、このコマンドを実行する必要が起きます。 - port には CDROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CDROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります (次のセクションをご覧ください)。 インターネット経由での ports のインストール 前セクションと同じように、このセクションでは、 インターネットへの接続が可能であることを前提としています。 もしインターネット接続が不可能な場合は、 CDROM からのインストールが必要になるでしょう。 インターネット経由で port をインストールする方法は、 CDROM からインストールする場合と完全に同じです。 唯一異なる部分は distfile を CDROM からではなく、 インターネット経由でダウンロードするということです。 次のように、必要な手順は同じです。 &prompt.root; make install >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 ... [extraction output snipped] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure output snipped] ... ===> Building for lsof-4.57 ... [compilation output snipped] ... ===> Installing for lsof-4.57 ... -[install output snipped] +[installation output snipped] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; ご覧のとおり、 出力の違いはシステムがどこから distfile を入手したか示す行だけです。 ports は、FTP_PASSIVE_MODE, FTP_PROXY および FTP_PASSWORD といった環境変数を参照する &man.fetch.1; を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することなります。 完全なリストについては &man.fetch.3; をご覧ください。 インストールされた ports の削除 ports 削除 ports のインストール方法について知ればおそらく、 インストールした後になって間違っていたことに気付いた時などに備えて、 それらを削除するにはどうすれば良いのか疑問に感じることでしょう。 さて、前の例 (例のまま何も変更していない人は lsof) を削除してみましょう。ports のインストールと同じように、 まず最初にやらなければならないのは port のディレクトリ /usr/ports/sysutils/lsof に移動することです。 ディレクトリを移動したら、lsof を削除するのに必要な準備は終わりです。 削除するには、make deinstall コマンド を実行します。 &prompt.root; cd /usr/ports/sysutils/lsof &prompt.root; make deinstall ===> Deinstalling for lsof-4.57 極めて簡単な作業です。 これでうまく lsof をシステムから削除できました。 もう一度再インストールしたい場合には、 /usr/ports/sysutils/lsof ディレクトリから make reinstall を実行することで行なうことができます。 一度 make clean を実行してしまうと、 make deinstall および make reinstall の一連の作業はできません。 make clean を実行した後で インストールした port を削除したいのであれば、 ハンドブックの packages のセクション で説明されているように &man.pkg.delete.1; を使ってください。 インストール後の作業 新しいアプリケーションのインストールが終わったら、 次に付属のドキュメントを読みたいと思うでしょう。 また、必要な設定ファイルを編集したり、 (デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。 port のインストール後に追加で行わなければならない作業の詳細は、 アプリケーションごとに異なります。 しかしながら、新しいアプリケーションをインストールしたばかりで、 次は何 ? と思っているのであれば、 以下の tips は役に立つでしょう。 どのようなファイルがインストールされているか、 そしてそれらがどこにインストールされているかを知りたいのであれば、 &man.pkg.info.1; を使ってください。 たとえば、FooPackage の 1.0.0 バージョンをインストールしたのであれば、 以下を実行してください。 &prompt.root; pkg_info -L foopackage-1.0.0 | less 上のコマンドを実行すると package としてインストールされているすべてのファイルが表示されます。 特に、man/, etc/, doc/ ディレクトリのファイルに注目してください。 それぞれ、マニュアルページ、 設定ファイル、より包括的なドキュメントが設置されています。 もし、アプリケーションのバージョンがわからなければ、 次のコマンドを実行してください。 &prompt.root; pkg_info | grep foopackage インストールされた packages の中から、名前に foopackage を含む package が表示されます。 必要に応じてコマンドラインの foopackage を置き換えてください。 アプリケーションのマニュアルページがインストールされているのであれば、 &man.man.1; を使ってマニュアルを読んでください。 同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。 アプリケーションのウェブサイトがあれば、 そのサイトに更なるドキュメントや FAQ がないかを調べてください。 ウェブサイトのアドレスがわからなければ、 次のコマンドで表示されるかもしれません。 &prompt.root; pkg_info foopackage-1.0.0 通常、ウェブサイトの URL は WWW: を含む行に表示されます。 トラブルシューティング このセクションでは、Ports Collection について良く質問される質問と、 いくつかの基本的なトラブルシューティングテクニック、 そして port がうまく動かない場合にできることについて扱います。 質問と回答集 私はモデムについての議論を しているのかと思っていました??! なるほど。 あなたはきっと、 コンピュータの背面についているシリアルポートのことだと思ってしまったのでしょう。 あるバージョンの Unix から、 別のバージョンの Unix へとプログラムを移植することを porting というのですが、 ここでわたしたちは porting の結果という意味で port を使っています。 パッチ (patch) とは何ですか? パッチとは、 あるバージョンから他のバージョンへどのように変更するかを 示す、(通常は) 小さなファイルです。 23 行目を削除468 行目の後にこれらの 2 行を追加、 または 197 行目をこのように変更 というような内容を含んでいます。 これは、&man.diff.1; という名前のプログラムで生成されます。 tarball tarball とは一体何ですか? .tar または .tar.gz という拡張子を持つファイルです (.tar.Z のようなバリエーションもありますし、 DOS のファイルシステム用に .tgz と短縮される場合もあります)。 これは基本的にファイルを一つにまとめた (.tar) ディレクトリツリーです。 圧縮されている (.gz) 場合もあります。 元々 Tape ARchives (訳注: テープアーカイブ) (このため tar という名前なのです) で使われていたものなのですが、 インターネット上でプログラムのソースコードを配布するために 広く使われている方法です。 これらのファイルの中身を見たり、 展開したりすることもできます。FreeBSD の基本システムに付属する Unix 標準の &man.tar.1; コマンドを使ってみると次のようになります。 &prompt.user; tar tvzf foobar.tar.gz &prompt.user; tar xzvf foobar.tar.gz &prompt.user; tar tvf foobar.tar &prompt.user; tar xvf foobar.tar チェックサム チェックサムとは何ですか? これは、 チェックしたいファイル中のすべてのデータを加えて生成した 数値です。何か文字が書き換わっていたら、 チェックサムが一致しなくなります。そのため、 単純な比較だけで違いを見つけることができるのです。 今まで「CD-ROM からの ports のコンパイル」にあるようにして ports をインストールできていたのですが、 kermit のインストールをしようとするとうまくいきません。 &prompt.root; make install >> cku190.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. なぜ cku190.tar.gz が見つからないのでしょうか? 不良品の CDROM を買ってしまったのでしょうか? CD-ROM からの ports のインストールのセクションで説明されているとおり、 ports の一部にライセンス上の制限から CDROM には収録できない種類のものが存在します。 kermit はその一例です。 kermit のライセンス条件は tarball を CDROM に収録することを禁じているため、 申し訳ありませんが手動で tarball を取得してください。 質問にあるようなエラーメッセージが表示されるのは、 あなたがそのときにインターネットへ接続していなかったことによります。 一度 MASTER_SITES のいずれかから (Makefile の中に書いてあります) ダウンロードしておけば、プロセスを再開することができます。 kermit の tarball を入手しましたが、 /usr/ports/distfiles に ファイルを置こうとすると、 書き込み権がないというエラーがでます。 ports はダウンロードした tarball を /usr/ports/distfiles に置こうとしますが、システム管理者の多くはこのディレクトリに リモートのファイルサーバやローカルの読み出し専用の CDROM に対するシンボリックリンクを作成しています。 このような場合には、以下のようにして distfiles を格納するディレクトリを変更してください。 &prompt.root; make DISTDIR=/local/dir/with/write/permission install ports は、すべてを /usr/ports に置いたときだけ動作するのでしょうか? システムの管理者によると、私の個人的なファイルは /u/people/guests/wurzburger に入れなければならないのですが、 これではうまくいかないように思います。 PORTSDIR 変数と PREFIX 変数を変更することで、 違うディレクトリを 使用することができます。 たとえば、 &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install とすると、ports は /u/people/guests/wurzburger/ports でコンパイルされ、すべて /usr/local 以下にインストールされます。 &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install この場合、コンパイルは /usr/ports でおこない、 /u/people/guests/wurzburger/local にインストールします。 もちろん、 &prompt.root; make PORTSDIR=../ports PREFIX=../local install とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが、 考え方は理解していただけたと思います)。 imake (X Window System に含まれる) &man.imake.1; を使用する ports の場合は PREFIX が機能せず、 /usr/X11R6 の下へインストールしようとします。 また、Perl 関連の ports も同様に PREFIX を無視して Perl ツリーにインストールします。 これらの ports で PREFIX がきちんと参照されるように変更するのは、ほとんど不可能です。 もし ports をインストールするたびにこれらを毎回タイプするのが気に入らないのであれば、 これらを環境変数にセットしてしまうという手があります。 どのようにすれば良いかについては、 あなたの使っているシェルのマニュアルページを参照してください。 わたしは FreeBSD の CDROM を持っていませんが、 すべての tarball を システムに置いておきたいのです。 そうすれば ports をインストール するたびに毎回ダウンロードが終わるのを待たなくてすむでしょう。 これを一度におこなう簡単な方法はありませんか? Ports Collection 全体の tarball を持ってくるには、 次のようにします。 &prompt.root; cd /usr/ports &prompt.root; make fetch ports の下の一つのディレクトリの tarball を持ってくるには、次のようにします。 &prompt.root; cd /usr/ports/directory &prompt.root; make fetch ports を一つだけ持ってくる方法は、 もうお分かりでしょう。 近くにある FreeBSD のミラーサイトから tarball を持ってくる方がおそらく速いはずです。 MASTER_SITES に書かれているサイト以外から持ってくるように ports に指示する方法はありませんか? もちろんあります。たとえば ftp.FreeBSD.orgMASTER_SITES に書かれている サイトより近いとしたら、以下のようにしてください。 &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE=ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch make がダウンロードしようとする前に、 どんなファイルが必要とするか知りたいのですが。 make fetch-list とすると、ports に必要なファイルの一覧を表示できます。 ports のコンパイルを途中で止める方法はありますか? 私はインストールをする前に いろいろとソースコードを解析したいのですが、毎回 Ctrl C を打たなければならないのが少し面倒です。 make extract を実行すると、 ファイル転送とソースコードの展開まで行なったところで停止します。 自分で ports を作ろうとしています。 わたしの作ったパッチが正しく処理できることを確認できるように、 コンパイルを止めたいのです。 パッチのための make extract のようなものはありませんか? あります。make patch があなたの望むものです。 おそらく PATCH_DEBUG オプションも同様に役に立つことでしょう。 あなたの努力に感謝いたします!! あるコンパイルオプションはバグの原因になるという話を聞きました。 本当なのでしょうか? どうやったら正しい設定で ports をコンパイルできますか? 本当です。 gcc の バージョン 2.6.3 (FreeBSD 2.1.0 と 2.1.5 に付属している バージョン) では、 オプションを オプションなしで 使うと、バグのあるコードを出力します (ほとんどの ports は オプションを使いません)。 コンパイルオプションは次のように定義すべきです。 &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install これを /etc/make.conf に書いておくこともできますが、 残念なことにすべての ports がこの指定を尊重してくれるわけではありません。 もっとも確実なのは make configure を実行し、ソースディレクトリの Makefile を見て、手で修正することですが、 ソースが多くのサブディレクトリに分かれていて、 各々に Makefile がある場合は大変な仕事になります。 FreeBSD の標準コンパイルオプションは非常に保守的ですので、 変更していなければ問題となることはないでしょう。 ports がたくさんありすぎて、 わたしの欲しいものがなかなか見つけられません。 どんな ports が使えるのか、リストはどこかにありませんか? /usr/ports の中にある INDEX ファイルを見てみましょう。 また、あるキーワードで ports コレクションを検索することも可能です。 たとえば以下のようにすれば、プログラミング言語 LISP に関連した ports を探すことができます。 &prompt.user; cd /usr/ports &prompt.user; make search key=lisp foo ports をインストールしたいのですが、それのコンパイルは すぐに停止して、bar ports のコンパイルが始まってしまいます。一体どうして? foo ports が、 bar ports の提供する何らかの機能を必要としているからです。 たとえば foo が画像を扱うもので bar がその画像処理に必要なライブラリを持っている場合などです。 もしくは barfoo をコンパイルするのに必要なツールなのかもしれません。 ports から grizzle プログラムをインストールしましたが、まったく ディスクスペースの浪費です。削除したいのですが、 すべてのファイルがどこへインストールされたのかわかりません。 何か手がかりはありませんか? 大丈夫、次のように入力してください。 &prompt.root; pkg_delete grizzle-6.5 もしくは、次のよう入力します。 &prompt.root; cd /usr/ports/somewhere/grizzle &prompt.root; make deinstall ちょっと待ってください。 削除しようとするコマンドのバージョン番号を 知っていなくてはならないのでしょうか? あなたは、わたしがバージョン番号を 覚えていると本気で思っているのですか? そんなことはありません。 バージョン番号は次のようにすればわかります。 &prompt.root; pkg_info -I 'grizzle*' Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. バージョン番号は、pkg_info または ls /var/db/pkg と入力してもわかります。 ディスク容量のことなのですが、ports のディレクトリは非常に膨大な容量を使うように見えます。 残しておいた方がよいのでしょうか? それとも削除してしまって構わないのでしょうか? はい。インストールが首尾よく終わり、 もうソースコードが必要でないと思うなら、 それらを残しておく理由はないでしょう。 一番確実な方法は、次のとおりです。 &prompt.root; cd /usr/ports &prompt.root; make clean これはすべての ports のサブディレクトリを調べ、 各 ports のスケルトン以外の削除をおこないます。 各サブディレクトリの Makefile を再帰的に読み込まなくても削除をおこなえます。 たとえば、次のようにすると work/ サブディレクトリを直接削除できます。 &prompt.root; find /usr/ports -depth -name work -exec rm -rf {} \; これを試してみたのですが、tarball や ports で使われたファイルが distfiles ディレクトリに残っています。 これも削除してしまっても大丈夫ですか? はい。それを使った作業が終わったのであれば、 削除してしまっても大丈夫です。 手動でファイルを操作するか、 もしくは make distclean を使えば削除することができます。 わたしはとてもとてもたくさんのプログラムを楽しみたいのです。 一度にすべての ports をインストールする方法はありませんか? 次のようにしてください。 &prompt.root; cd /usr/ports &prompt.root; make install ports の中には、 同じ名前でインストールを行なうものがあるということに注意してください。 二つのグラフィック ports をインストールして、 それらが両方とも /usr/local/bin/plot をインストールする場合などは明らかに問題となるでしょう。 やってみました。 時間がとてもかかるだろうと思ったので、 そのまま実行を続けさせて、わたしは寝ました。 翌朝コンピュータを見てみると、 三つ半の ports しか処理が終わっていませんでした。 何か悪かったのでしょうか? ports の中には、 わたしたちの決められないこと (たとえば、あなたが A4 の 用紙に印刷したいのか、US レターサイズの用紙に印刷したいのかなど) について質問してくるものがあるからです。 それらの質問には手動で答える必要があります。 一日中モニタの前に座って過ごしたりしたくないのですが、 何か良いアイディアはありませんか? では、あなたが寝に / 仕事に / 公園にいく前に以下を実行してください。 &prompt.root; cd /usr/ports &prompt.root; make -DBATCH install これでユーザの入力を要求しないすべての ports をインストールします。 そして戻ってきてから次のように実行してください。 &prompt.root; cd /usr/ports &prompt.root; make -DINTERACTIVE install そして残りの作業を実行してください。 わたしたちは Ports Collection にある frobble を使っています。 ですが、わたしたちの必要に応じて ports を変更したところがあるのです。 自分で package を作って、 それをわたしたちのサイトのまわりに簡単に配布できるような方法がありますか? もちろんあります。 変更点をパッチにする方法は知っていますよね? &prompt.root; cd /usr/ports/somewhere/frobble &prompt.root; make extract &prompt.root; cd work/frobble-2.8 [あなたのパッチをあててください] &prompt.root; cd ../.. &prompt.root; make package この ports の技術は本当に賢いですね。 わたしはこれがどのようにして動いているのか知りたいのですが、 その秘密とは何ですか? 秘密なんて一切ありません。 /usr/ports/Mk/ ディレクトリにある bsd.port.mkbsd.port.subdir.mk ファイルを見てください。 (複雑なシェルスクリプトを嫌う読者は、 このディレクトリにあるファイルを見ない方が良いでしょう。) たすけて! port がうまく動かない! port がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。 自分で直しましょう! "Ports" システムに関する詳細な情報は port 作成者のためのハンドブック にあります。 このセクションを読むと、壊れてしまった port を直したり、 自分で作った port を提出したりできるようになります! 苦情を言いましょう — ただし電子メールで! まず port の保守担当者に電子メールを送ってください。 make maintainer と入力するか、 Makefile を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (Makefile$FreeBSD: 行)、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。 保守担当者から返信がなければ、&man.send-pr.1; を使ってバグレポートを提出しても構いません。 近くの FTP サイトから package を入手しましょう。 マスタ package コレクションは、 ftp.FreeBSD.orgpackage のディレクトリにありますが、 まずはあなたの地域のミラーサイトを最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、&man.pkg.add.1; を使います。