diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml index b9335f44c2..18061d6504 100644 --- a/ja_JP.eucJP/books/handbook/ports/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -1,1756 +1,1466 @@ アプリケーションのインストール - packages と ports この章では ports packages FreeBSD の基本システムには数多くのシステムツールが含まれています。 しかしながら、サードパーティ製のアプリケーションをインストールしないと 実用的にはそれほどたくさんのことはできません。 - FreeBSD は、サードパーティ製のソフトウェアをインストールするために - Ports Collection と packages + FreeBSD は、サードパーティ製のソフトウェアの導入を支援するために、 + ソースコードをコンパイルしてインストールする Ports Collection と + コンパイル済みのバイナリをインストールする packages という相補的な 2 つの技術を提供しています。 どちらのシステムを用いても、お気に入りのアプリケーションの最新版を ローカルメディアやネットワーク上からインストールできます。 この章を読むと、以下のことがわかります。 packages を用いてサードパーティ製のソフトウェアをバイナリからインストールする方法 - Ports Collection を用いてサードパーティ製のソフトウェアをコンパイルする方法 + Ports Collection を用いてサードパーティ製のソフトウェアをソースコードからコンパイルする方法 - インストールされた packages や ports を削除する方法 + インストールした packages や ports を削除する方法 + + + Ports Collection が用いるデフォルトの設定を変更する方法 + + + お望みのソフトウェア package を探しだす方法 + + + アプリケーションをアップグレードする方法 ソフトウェアのインストール - すでに Unix システムを使ったことのある人ならば、 + &unix; システムを使ったことのある人なら、 サードパーティ製ソフトウェアの典型的なインストール手順が 以下のようになることをご存知でしょう。 ソースコード、またはバイナリ形式で 配布されているソフトウェアをダウンロードする。 配布時のフォーマット (一般的には - &man.compress.1; または &man.gzip.1; で圧縮された tarball) - からソフトウェアを取り出す。 + &man.compress.1;, &man.gzip.1; または &man.bzip2.1; + で圧縮された tarball) からソフトウェアを取り出す。 ドキュメント (INSTALL または 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 ファイルを扱うことができます。 - - 新しいアプリケーションをインストールするには、 + ダウンロードした 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 + たとえば Pentium IV や Athlon プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。 アプリケーションのなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。 設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。 ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。 バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。 ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。 ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。 ports の更新状況を把握するために、 &a.ports; や &a.ports-bugs; を購読するとよいでしょう。 + + アプリケーションをインストールする前に、 + そのアプリケーションに関連したセキュリティ上の問題がないことを + + で確認してください。 + + また、 + インストールされているアプリケーションに既知の脆弱性がないことを自動的に調べる + security/portaudit + をインストールしてもよいでしょう。 + このコマンドは、ビルド前の port についても調査します。 + インストールされている packages を確認する場合には、 + portaudit -F -a コマンドを使ってください。 + + この章では、packages と ports を用いた FreeBSD 上での サードパーティ製ソフトウェアの インストール方法や管理方法について説明します。 アプリケーションの探し方 どんなアプリケーションをインストールするにしても、 まずあなたが何を望んで、 またその名前がなんというのかを理解している必要があります。 FreeBSD 上で利用可能なアプリケーションのリストは常に増えています。 幸運にも、多くの方法で望むものを探すことができます。 FreeBSD ウェブサイトは、 利用可能なすべてのアプリケーションの最新の一覧を、検索できる形で - http://www.FreeBSD.org/ports/ + http://www.FreeBSD.org/ports/ において公開しています。 ports はカテゴリに分類されています。 アプリケーションは、(名前を知っているならば) 名前で検索でき、 あるカテゴリで利用可能な アプリケーションをすべて表示させることもできます。 FreshPorts Dan Langille は で FreshPorts を公開しています。 FreshPorts は ports ツリー中のアプリケーションの変更を追跡します。 一つまたはそれ以上の ports を 監視 することができ、 変更があるとメールで更新情報を送ってくれます。 FreshMeat ご希望のアプリケーションの名前がわからなければ、 FreshMeat () のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが ports で利用可能かどうかを FreeBSD サイトで調べて下さい。 + + + 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: という行です。 + この行は port がどこにあるかを示しています。 + 出力される他の情報は port + をインストールする際には必要となるものではありませんので、 + ここでは触れないでおきます。 + + もっと詳しく検索するには、 + make search key=string + と入力してください。 + string + の部分には検索したいテキストを入れます。 + port 名、コメント、説明文および依存情報が検索されます。 + 探しているプログラムの名前を知らない場合でも、 + ある目的に関連した ports の検索に利用できます。 + + どちらの場合でも、 + 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 + LSOF を検索した結果は、 + lsof と同じ検索結果になります。 + + 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 がダウンロードされた後、インストールされます。 - ユーザはこれ以外に作業をする必要はありません。 + ユーザはこのほかに何もする必要はありません。 + メインの配布サイトではなく + &os; Package ミラーサイトの package を使うには、 + PACKAGESITE + 環境変数に利用したいサイトを設定してください。 &man.pkg.add.1; は、FTP_PASSIVE_MODE, - FTP_PROXY および FTP_PASSWORD + FTP_PROXY, FTP_PASSWORD といった環境変数を参照する &man.fetch.3; を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することになります。 - 完全なリストについては &man.fetch.3; をご覧ください。 + 環境変数の一覧については &man.fetch.3; をご覧ください。 また、上の例で lsof-4.56.4 の代わりに lsof を使っていることに注意してください。 リモートフェッチ機能を使用する場合には、 - package のバージョン番号を取り除く必要があります。 + package のバージョン番号を取り除かなければなりません。 &man.pkg.add.1; は自動的に最新版のアプリケーションを取得します。 - package は .tgz + + &os.current; または、&os.stable; を使用している場合、 + &man.pkg.add.1; は最新版のアプリケーションをダウンロードします。 + -RELEASE を使用している場合には、 + そのバージョンのリリース時にビルドされた package がダウンロードされます。 + この設定は + PACKAGESITE 環境変数を上書きすることで変更できます。 + たとえば、&os; 5.4-RELEASE を使用している場合には、 + &man.pkg.add.1; を実行するとデフォルトで + ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5.4-release/Latest/ + から packages をダウンロードします。 + もし、&man.pkg.add.1; を使って + &os; 5-STABLE の packages をダウンロードしたければ、 + PACKAGESITE 環境変数を + ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-5-stable/Latest/ + に設定してください。 + + + package は .tgz.tbz という拡張子を持つファイルとして配布されており、 や FreeBSD CD-ROM にあります。 FreeBSD 4-CD セット (または PowerPak など) の CD はすべて、 /packages ディレクトリに packages が あります。packages のレイアウトは、 /usr/ports ツリーのものと同様です。 カテゴリごとにディレクトリがあり、 All ディレクトリにはすべての package があります。 package システムのディレクトリ構造は ports のレイアウトと同一です。 両者が組み合わさって package/port システムが構成されます。 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 インデックスの中に見つけることができません。 + ports インデックスの中に見つけることができません + (インストールされた port が Ports Collection から削除されたり、 + 名前が変更された場合などに起こります)。 *複数のバージョンの package が存在します。 package の削除 pkg_delete packages 削除 インストールされている package を削除するには、 &man.pkg.delete.1; ユーティリティを使ってください。 &prompt.root; pkg_delete xchat-1.7.1 その他 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 を実行してください。 + sysinstall + (5.2 より前の &os; では /stand/sysinstall) + を実行してください。 - &prompt.root; /stand/sysinstall + &prompt.root; sysinstall スクロールダウンして Configure を選び、 Enter を押してください。 スクロールダウンして Distributions を選び、 Enter を押してください。 スクロールダウンして ports を選び、 Space キーを押してください。 Exit までスクロールアップして、 Enter を押してください。 CDROM や FTP といったインストールメディアを選択してください。 Exit までスクロールアップして、Enter を押してください。 X を押して、 sysinstall を終了してください。 Ports Collection をインストールしたり、最新の状態にしておくためのもう一つの方法は CVSup を利用する方法です。 ports 用の CVSup ファイル /usr/share/examples/cvsup/ports-supfile をご覧ください。 CVSup を使うための情報や、 このファイルに関する説明は CVSup を使う () にあります。 CVSup を利用する方法 ここでは、CVSup を利用して Ports Collection をインストールする方法について簡単に説明します。 あなたの ports ツリーを最新の状態にしておきたい、または CVSup についてもっと知りたいのであれば、 先ほど紹介したセクションをご覧ください。 - まず net/cvsup - port をインストールしてください。 - インストールについての詳細は、まず net/cvsup-without-gui + package をインストールしてください。 + + &prompt.root; pkg_add -r cvsup-without-gui + + インストールについての詳細は、CVSup のインストール () を参照してください。 - root ユーザ権限で、 - /usr/share/examples/cvsup/ports-supfile - を /root - や、あなたのホームディレクトリなどへコピーしてください。 - + cvsup を実行してください。 - - 次に ports-supfile を編集します。 - + &prompt.root; cvsup -L 2 -h cvsup.FreeBSD.org /usr/share/examples/cvsup/ports-supfile - - CHANGE_THIS.FreeBSD.org を最寄りの + cvsup.FreeBSD.org を最寄りの CVSup サーバに変更してください。 ミラーサイトの完全なリストは CVSup サイト () にあります。 - - - - cvsup を実行してください。 - &prompt.root; cvsup -g -L 2 /root/ports-supfile + + + 自分用の ports-supfile を使って、 + コマンドラインから CVSup + サーバを指定することを省略したいと思う方もいるでしょう。 + + + + そのような場合には、 + まず root ユーザ権限で、 + /usr/share/examples/cvsup/ports-supfile + を /root + や、あなたのホームディレクトリなどへコピーしてください。 + + + + 次に ports-supfile を編集します。 + + + + CHANGE_THIS.FreeBSD.org を最寄りの + CVSup サーバに変更してください。 + ミラーサイトの完全なリストは CVSup サイト () にあります。 + + + + その後、以下のように + cvsup を実行してください。 + + &prompt.root; cvsup -L 2 /root/ports-supfile + + + - このコマンドを時間をおいて実行すると、 + &man.cvsup.1; コマンドを時間をおいて実行すると、 最新の変更点がダウンロードされて、あなたの手元の Ports Collection に加えられます。 Ports Collection 全体が再度ダウンロードされることはありません。 ports のインストール ports インストール 一番最初に知らなければならないのは、 Ports Collection は スケルトン と呼ばれるもので構成されているという事実です。 port スケルトンは簡単に言うと、アプリケーションを FreeBSD 上で正しくコンパイルしインストールする方法を提供する最小限のファイルのセットのことです。 それぞれの port スケルトンには、次のファイルが含まれています。 MakefileMakefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する、 さまざまな命令文が含まれています。 distinfo ファイル。 - このファイルには、その port を構築するために - ダウンロードする必要があるファイルのファイル名と、 - それらのファイルがダウンロードによって壊れていないか - チェックするためのチェックサム情報が含まれています。 + このファイルには、その port + を構築するためにダウンロードする必要があるファイルのファイル名と、 + それらのファイルがダウンロードによって壊れていないかを + (&man.md5.1; を使って) + 確認するためのチェックサム情報が含まれています。 files ディレクトリ。 このディレクトリには FreeBSD システム上でプログラムをコンパイルし、 インストールするための修正パッチが含まれています。 修正パッチ (patch) とは基本的に、 個々のファイルに対する変更点を表した小さなファイル群のことです。 ファイルはプレインテキスト形式で、 10 行目を削除26 行目を ... に変更 などと書かれています。 修正パッチは、diff (差分) とも呼ばれます。 これは、修正パッチが &man.diff.1; プログラムで作成されるからです。 このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。 pkg-descr ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。 pkg-plist ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。 これらの他に pkg-message といったファイルを含む ports もあります。 ports システムは、 このようなファイルを用いて特殊な状況にも対応しています。 これらのファイルについての詳細および ports の一般的な説明については、port 作成者のためのハンドブック + url="&url.books.porters-handbook/index.html">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: という行です。 - この行は port がどこにあるかを示しています。 - 出力される他の情報は port - をインストールする際には必要となるものではありませんので、 - ここでは触れないでおきます。 - - もっと詳細な検索をするには、 - make search key=string - と入力してください。 - string - の部分には検索したいテキストを入れます。 - port 名、コメント、説明文および依存情報が検索されます。 - 探しているプログラムの名前を知らない場合でも、 - ある目的に関連した ports の検索に利用できます。 - - どちらの場合でも、 - 検索文字列中の大文字と小文字を区別せずに検索が行われるので、 - LSOF を検索した結果は、 - lsof と同じ検索結果になります。 - - - ports をインストールするには、 - root としてログインする必要があります。 - - - インストールしたい port が見つかったら、 - 実際のインストールに移ることができます。 - port はソースコードからアプリケーションを構築する方法を提供しますが、 - 実際のソースコードは含んでいません。 + port はソースコードからアプリケーションを構築する方法を + 提供しますが、実際のソースコードは含んでいません。 ソースコードは CD-ROM やインターネットから入手できます。 ソースコードはソフトウェア作者のお気に入りの形式で配布されます。 たいてい、tar と gzip で作成された圧縮アーカイブとして配布されますが、 他のツールで圧縮されていたり、圧縮されずに配布されることもあります。 どのような形式で配布されているかに関わらず、 これらのプログラムのソースコードは distfile と呼ばれています。 - distfile は CD-ROM もしくはインターネット経由で入手できます。 + 以下では &os; port をインストールする 2 つの方法について説明します。 + + + ports をインストールするには、 + root としてログインする必要があります。 + + + + port をインストールする前に、 + Ports Collection が最新であることを確認してください。 + また、そのアプリケーションに関連したセキュリティ上の問題がないことを + + で確認してください。 + + + アプリケーションをインストールする前に、 + portaudit を使って + セキュリティに関する脆弱性を自動的に調べることができます。 + このツールは Ports Collection (security/portaudit) に用意されています。 + 新しく port をインストールする前に、 + portaudit -F コマンドを実行すると、 + 最新の脆弱性に関するデータベースがダウンロードされます。 + セキュリティの検査およびデータベースの更新は、 + 日々のセキュリティチェックで行なわれます。 + 詳しくは、&man.portaudit.1; および &man.periodic.8; + のマニュアルページを参照してください。 + CD-ROM からの ports のインストール ports CD-ROM からのインストール FreeBSD プロジェクトの公式 CD-ROM イメージには もう distfiles は収録されていません。 あらかじめコンパイルされた packages が CD-ROM の大部分を占めています。 一方、FreeBSD PowerPak のような CD-ROM 製品は distfiles を収録しています。 FreeBSD Mall といったベンダからこれらの製品を注文できます。 このセクションではこのような FreeBSD の CD-ROM セットを持っていることを前提としています。 FreeBSD CD-ROM をドライブに入れ、 /cdrom にマウントしてください - (ほかのマウントポイントを指定すると、インストールに失敗します)。 - まず、インストールしたい port のディレクトリに移動してください。 - + (ほかのマウントポイントを使用したければ、 + CD_MOUNTPTS 変数を設定してください)。 + まず、インストールしたい 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 ... [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) - の両方で、このコマンドを実行する必要が起きます。 + このコマンドは tcsh などのシェルで動作します。 + sh や + shells/bash + などのシェルを使っているのであれば + hash -r を実行してください。 + 詳細については、 + あなたの使っているシェルのドキュメントをご覧ください。 port には CD-ROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CD-ROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります (次のセクションをご覧ください)。 インターネット経由での ports のインストール 前セクションと同じように、このセクションでは、 インターネットへの接続が可能であることを前提としています。 もしインターネット接続が不可能な場合は、 CD-ROM からのインストール や、distfile を手動で /usr/ports/distfiles に置く作業が必要になるでしょう。 インターネット経由で port をインストールする方法は、 CD-ROM からインストールする場合と完全に同じです。 唯一異なる部分は distfile を CD-ROM からではなく、 インターネット経由でダウンロードするということです。 次のように、必要な手順は同じです。 &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 ... [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 + FTP_PROXY, FTP_PASSWORD といった環境変数を参照する &man.fetch.1; を用いてファイルをダウンロードします。 ファイアウォールの内側であったり、 FTP/HTTP プロキシを使う場合には、 これらの環境変数を設定することなります。 - 完全なリストについては &man.fetch.3; をご覧ください。 + 環境変数の一覧については &man.fetch.3; をご覧ください。 + + ネットワークに常時接続できないユーザのために + make fetch + コマンドが用意されています。 + (ネットワークに接続している時に) このコマンドを + ports のトップディレクトリ + (/usr/ports) で実行してください。 + 必要なファイルがダウンロードされます。 + このコマンドは /usr/ports/net + といった、より下の階層のカテゴリにおいても使うことができます。 + ある port がライブラリやその他の ports に依存している場合には、 + それらの distfiles + はダウンロードされないことに注意してください。 + port が依存しているものもダウンロードしたければ + fetch の代わりに + fetch-recursive を使って下さい。 + + + 前述した make fetch + と同じように、トップディレクトリで make + を実行するとすべての port がビルドされます。 + しかしながら ports の中には同時に存在できないものがあったり、 + 異なる ports の別のファイルが同じ名前で + インストールされる場合があることに注意してください。 + + + めったにないことかもしれませんが、 + MASTER_SITES (ファイルをダウンロードしてくる場所) + に書かれているサイト以外から tarball + を持ってくることが必要になる場合があります。 + そのような場合には以下のように + MASTER_SITES を変更してください。 + + &prompt.root; cd /usr/ports/directory +&prompt.root; make MASTER_SITE_OVERRIDE= \ +ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch + + 上の例では MASTER_SITES を + ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ + に変更しています。 + + + ports の中にはビルドオプションを指定できる + (または要求してくる) ものがあります。 + このオプションを指定することで、 + アプリケーションの機能の一部を有効もしくは無効にできます。 + また、セキュリティオプションを設定したり、 + その他のカスタマイズを行うことができます。 + このようなアプリケーションには + www/mozilla, + security/gpgme や + mail/sylpheed-claws + などがあります。 + 利用可能なオプションがある場合にはメッセージが表示されます。 + + + + + ports ディレクトリの変更 + + distfiles や ports + ディレクトリをデフォルトのものから変更したほうが有用な場合 + (もしくは変更しなければならない場合) があります。 + PORTSDIR 変数と + PREFIX 変数を変更することで、 + 違うディレクトリを使用することができます。 + たとえば、 + + &prompt.root; make PORTSDIR=/usr/home/example/ports install + + とすると、ports は /usr/home/example/ports + でコンパイルされ、すべて /usr/local + 以下にインストールされます。 + + &prompt.root; make PREFIX=/usr/home/example/local install + + この場合、コンパイルは /usr/ports + でおこない、 + /usr/home/example/local + にインストールします。 + + もちろん、 + + &prompt.root; make PORTSDIR=../ports PREFIX=../local install + + とすれば両者を組み合わせることが可能です + (省略せずに記述したらこのページに収めるには長すぎるのですが、 + 考え方は理解していただけたと思います)。 + + あるいは、これらを環境変数に設定する方法もあります。 + どのようにすれば良いかについては、 + あなたの使っているシェルのマニュアルページを参照してください。 + + + + <command>imake</command> の使用 + + (X Window System に含まれる) imake を使用する + ports の場合は PREFIX が機能せず、 + /usr/X11R6 にインストールしようとします。 + また、Perl 関連の ports も同様に PREFIX を無視して + Perl ツリーにインストールします。 + これらの ports で PREFIX + がきちんと参照されるように変更するのは、ほとんど不可能です。 + - インストールされた ports の削除 + インストールした 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; を使ってください。 ports とディスク容量 ports ディスク容量 - Ports Collection を使い続けると、 - 非常に膨大なディスク容量が消費されます。 - そのため、作業用ディレクトリを + Ports Collection を使い続けていると、 + そのうちディスクを食いつぶしてしまうでしょう。 + このように ports ツリーのサイズは大きくなりがちなので、 + ports からソフトウェアをビルドしてインストールした後に、 + 常に、作業用の + work ディレクトリを make clean - コマンドで削除できることを知っておくと良いでしょう。 + コマンドで削除するようにしましょう。 このコマンドは、ビルドやインストールされた - port の work ディレクトリを削除します。 - また、tar ファイルを distfiles - ディレクトリから削除してしまっても大丈夫でしょうし、 - インストールされた ports も必要なくなれば削除してもよいでしょう。 + port の work + ディレクトリを削除します。 + また、配布ソースファイルを distfiles + ディレクトリから削除したり、 + 必要なくなればインストールした ports を削除してもよいでしょう。 - refuse ファイルを使って - port のカテゴリを制限することもできます。 + refuse ファイルを使って、 + 利用できる port のカテゴリを制限することもできます。 CVSup は、 このファイルにエントリされたカテゴリに属するファイルを更新しません。 - + refuse ファイルに関するより詳しい説明は にあります。 ports のアップグレード + + portupgrade + ports アップグレード + + Ports Collection を更新したら、port をアップグレードする前に + /usr/ports/UPDATING + ファイルに目を通してください。 + このファイルには + port をアップグレードする際にユーザが遭遇するであろう問題や、 + 追加で必要な作業などが記述されています。 + ports を最新の状態に維持し続けるのはとても大変です。 たとえば、port をアップグレードする作業は次のようになります。 まず ports のディレクトリへ移動し、port をビルドします。 次に、古い port を削除し、新しい port をインストールします。 最後にビルド後のクリーンアップを行います。 5 つの ports のアップグレードを考えただけでも大変ですよね? このようにシステム管理者にとってアプリケーションの管理は大きな悩みの種ですが、 この問題を解決してくれるユーティリティがあります。 - たとえば sysutils/portupgrade + たとえば sysutils/portupgrade は、あなたの代わりにこれらの作業をすべて行ってくれます! 通常の port をインストールするように make install clean コマンドでインストールしてください。 まず、pkgdb -F コマンドを使い、 データベースを作成します。 このコマンドはインストールされている ports を調べ、 /var/db/pkg ディレクトリにデータベースファイルを作成します。 そして portupgrade -a を実行すると、 このデータベースファイルと ports INDEX ファイルが調べられ、 更新の必要がある ports のダウンロード、ビルド、バックアップ、インストール、そしてクリーンアップが行われます。 - このようなユーティリティは他にも ports/sysutils + さまざまな利用状況に対応するため、 + portupgrade + にはたくさんのオプションがあります。 + 以下では重要なオプションについて紹介します。 + + データベース上のすべてのアプリケーションではなく、 + ある特定のアプリケーションだけを更新したいのであれば、 + portupgrade pkgname + を実行してください。 + アップグレードしたいアプリケーションに依存するすべての packages + を同時に更新したい場合には、 + オプションを付けて portupgrade + を実行してください。 + アップグレードしたいアプリケーションが必要とするすべての + アプリケーションを更新したい場合には、 + オプションを使ってください。 + + ports ではなく packages を用いてインストールを行ないたい場合には、 + オプションを使ってください。 + このオプションを使うと、portupgrade は + PKG_PATH に登録されているローカルディレクトリを検索します。 + ローカルに packages が見つからなければ、 + リモートサイトからダウンロードを試みます。 + packages をローカルに見つけることができず、 + リモートサイトからもダウンロードできない場合には、 + portupgrade + は ports からインストールを行ないます。 + ports を使用したくなければ、 + オプションを指定してください。 + + また、ビルドやインストールを行なわず、 + distfiles ( が指定されている場合は packages) + だけをダウンロードしたければ、 + オプションを指定してください。 + 詳細は &man.portupgrade.1; を参照してください。 + + + 定期的に、もしくは portupgrade + が要求してきたら、package データベースの整合性を保つために + pkgdb -F を実行してください。 + package データベースの更新中に + portupgrade を中止しないでください。 + 整合性のないデータベースが作成されることがあります。 + + + + このようなユーティリティは他にも ports/sysutils ディレクトリにあるので、目的のものを探してください。 インストール後の作業 新しいアプリケーションのインストールが終わったら、 次に付属のドキュメントを読みたいと思うでしょう。 また、必要な設定ファイルを編集したり、 (デーモンの場合には) システムの起動時にプログラムが開始することを確認したくなるでしょう。 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 + &prompt.root; pkg_info | grep -i foopackage インストールされた packages の中から、名前に foopackage を含む package が表示されます。 必要に応じてコマンドラインの foopackage を置き換えてください。 アプリケーションのマニュアルページがインストールされているのであれば、 &man.man.1; を使ってマニュアルを読んでください。 同様に、設定ファイルのサンプルや提供されているドキュメントにも目を通してください。 アプリケーションのウェブサイトがあれば、 そのサイトに更なるドキュメントや FAQ がないかを調べてください。 ウェブサイトのアドレスがわからなければ、 次のコマンドで表示されるかもしれません。 &prompt.root; pkg_info foopackage-1.0.0 ウェブサイトが存在すると、 URL が WWW: を含む行に表示されます。 + + + (インターネットサーバのように) + システム起動時に立ち上げる必要のある port は、 + サンプルスクリプトを通常 + /usr/local/etc/rc.d にインストールします。 + このスクリプトを調べ、 + 必要があれば編集したりスクリプトの名前を変更してください。 + 詳細は サービスの起動 + をご覧ください。 + - - トラブルシューティング - - このセクションでは、Ports Collection - について良く質問される質問と、 - いくつかの基本的なトラブルシューティングテクニック、 - そして port - がうまく動かない場合にできることについて扱います。 - - - 質問と回答集 - - - - - 私はモデムについての議論を - しているのかと思っていました??! - - - - なるほど。 - あなたはきっと、 - コンピュータの背面についているシリアルポートのことだと思ってしまったのでしょう。 - あるオペレーティングシステムから、 - 別のオペレーティングシステムへとプログラムを移植することを - 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 - に置こうとしますが、システム管理者の多くはこのディレクトリに - リモートのファイルサーバやローカルの読み出し専用の CD-ROM - に対するシンボリックリンクを作成しています。 - このような場合には、以下のようにして 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 の CD-ROM を持っていませんが、 - すべての 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.org が - MASTER_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 - がその画像処理に必要なライブラリを持っている場合などです。 - もしくは bar が - foo - をコンパイルするのに必要なツールなのかもしれません。 - bar がインストールされると、 - 自動的に foo のコンパイルが再開されます。 - - - - - - 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.mk と - bsd.port.subdir.mk - ファイルを見てください。 - - (複雑なシェルスクリプトを嫌う読者は、 - このディレクトリにあるファイルを見ない方が良いでしょう。) - - - - - - - たすけて! port がうまく動かない! + + うまく動作しない ports に遭遇した場合には port がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。 - - 自分で直しましょう! - "Ports" システムに関する詳細な情報は - port 作成者のためのハンドブック にあります。 - このセクションを読むと、壊れてしまった port を直したり、 - 自分で作った port を提出したりできるようになります! + + その port に対する修正案が提出されていないかどうかを + 障害報告 + (Problem Report) データベース で調べてください。 + もし提案されていれば、 + その修正を使うことができるかもしれません。 - 苦情を言いましょう — ただし電子メールで! - まず port の保守担当者に電子メールを送ってください。 + port の保守担当者に対応してもらいましょう。 make maintainer と入力するか、 Makefile を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (Makefile$FreeBSD: 行)、 - そしてエラーが出力されるまでの出力ログを忘れずに添付してください。 + そしてエラーが出力されるまでの出力ログを忘れずに添付してください。 + + + 特定の保守担当者が存在せず、かわりに メーリングリスト + が保守している ports があります。 + そのような場合には、メールアドレスは + freebsd-listname@FreeBSD.org + のようになります。 + 質問する際には、このことに気をつけてください。 + + 特に freebsd-ports@FreeBSD.org + が保守している ports には、保守担当者が本当にいません。 + そのメーリングリストを購読する人々からなるコミュニティが、 + 修正や対応をおこなっています。 + もっとボランティアが必要です! + + + 保守担当者から返信がなければ、&man.send-pr.1; - を使ってバグレポートを提出しても構いません。 + を使ってバグレポートを提出しても構いません ( + FreeBSD 障害報告の書き方 をご覧ください)。 + + + + 自分で直しましょう! + Ports システムに関する詳細な情報は + port 作成者のためのハンドブック にあります。 + このセクションを読むと、壊れてしまった port を直したり、 + 自分で作った port を提出したりできるようになります! 近くの FTP サイトから package を入手しましょう。 マスタ package コレクションは、 ftp.FreeBSD.org の - package のディレクトリにありますが、 - まずはあなたの地域のミラーサイトを最初に調べてください。 + + package のディレクトリ にありますが、 + まずはあなたの地域の ミラーサイト + を最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、&man.pkg.add.1; を使います。 -