diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml index e257d4bc8b..26a4d2d578 100644 --- a/ja_JP.eucJP/books/handbook/ports/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -1,1443 +1,1556 @@ アプリケーションのインストール - 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 プロセッサに特化したコードを生成するような コンパイルオプションを指定できます。 packages のなかには、コンパイル時に プログラムの機能を決めるようなオプションを設定するものがあります。 たとえば、Apache は多種多様な ビルトインオプションを設定できます。 port から構築することで、デフォルトオプションではなく、 自分でオプションを設定することができます。 設定を区別するために、同じアプリケーションに対して 複数の packages が存在することがあります。 たとえば、Ghostscript は X11 サーバーがインストールされているかどうかにより、 ghostscript package と ghostscript-nox11 package が選択可能となっています。 packages でもこのような方法が可能ですが、 アプリケーションのコンパイルオプションが さらに用意されている場合は困難となります。 ライセンス条項で、 バイナリでの配布を禁止しているソフトウェアがあります。 それらはソースコードで配布されなくてはいけません。 バイナリ配布を信用していない人もいます。 ソースコードがあれば、少なくともソースコードを読んで (理論的には) 潜在的な問題点を自分で見つけ出すことができます。 ローカルなパッチがある場合、 それを適用するためにソースコードが必要になります。 ソースコードを手元に置いておきたい人たちもいます。 彼らは、退屈したときに眺めたり、あちこち解析してみたり、 ソースコードを借用したり (もちろん、 ライセンスが許せばの話ですが) するのです。 ports の更新状況を把握するために、 freebsd-ports@freebsd.org メーリングリストを購読するとよいでしょう。 この章では、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/)、 または、AppWatch (http://www.appwatch.com/) のようなサイトでアプリケーションを探して下さい。 その後、そのアプリケーションが 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; に -r オプションをつける方が楽でしょう。 このユーティリティは、このオプションを指定して実行すると 自動的に適切なオブジェクトの形式とリリースを判断し、 package を FTP サイトからダウンロードしてインストールします。 pkg_add &prompt.root; pkg_add -r lsof-4.56.4 上の例では適当な package がダウンロードされた後、インストールされます。 ユーザーはこれ以外に作業をする必要はありません。 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 ツリーのバージョンと 比較します。 &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 を選び、 + Enter を押してください。 + + + + スクロールダウンして ports を選び、 + スペースキーを押してください。 + + + + 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 -g -L 2 <path_to_supfile> + を実行してください。 + + &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 (差分) とも呼ばれます。 これは、修正パッチが diff プログラムで作成されるからです。 このディレクトリには、その port の構築に必要な その他のファイルが入る場合もあります。 pkg-comment ファイル。 これにはプログラムの一行説明文が含まれています。 pkg-descr ファイル。 これにはプログラムの、複数行にわたる詳しい説明文が含まれます。 pkg-plist ファイル。 これは、その port によってインストールされる全ファイルのリストです。 これにはプログラムを削除する際に、 どのファイルを削除すれば良いのかを ports システムに伝える役割もあります。 さて、Ports Collection が何を目的として使われるものなのか、 - それ理解するための基礎的な知識はこれで十分です。 + それを理解するための基礎的な知識はこれで十分です。 最初の port をインストールする準備ができました。 port のインストールには二つの方法があります。 実際の作業に入る前に、 インストールする port を選ぶ必要があります。 選ぶ方法はいくつかありますが、最も簡単なのは FreeBSD ウェブサイトの ports リスト を利用することでしょう。 そこにリストされている ports や、 サイトの検索機能を使って閲覧することができます。 各々の port には説明文が含まれていますので、 インストールを決める前にその port に関する説明を読むこともできます。 もう一つの方法は、whereis コマンドを使うことです。 whereis コマンドを使うには、 プロンプトから単に whereis <インストールしたいプログラム名> と入力します。 もし、あなたのシステム上でプログラムが見つかれば、 それがどこにあるのかが次のように表示されます。 &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 key=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 をインストールする際には直接必要となるものではありませんので、 ここでは触れないでおきます。 ports をインストールするには、 root ユーザにならなければなりません。 インストールしたい port が見つかったら、 実際のインストールに移ることができます。 CD-ROM からの ports のインストール ports CD-ROM からのインストール タイトルから想像できると思いますが、 このセクションで説明する内容は、FreeBSD の CDROM セットを持っていることを前提としています。 もし CDROM セットを持っていなければ、 FreeBSD Mall で注文することができます。 FreeBSD CDROM がドライブに挿入されていて、 /cdrom (マウントポイントは必ず /cdrom でないといけません) にマウントされていれば、port をインストールすることができます。 まず、インストールしたい 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 snipped] ... &prompt.root; コンパイルが終了してプロンプトに戻ることを確認してください。 次に port のインストールを行ないます。 port をインストールするのに必要なのは、 make コマンドに一つの単語、 install を指定することだけです。 &prompt.root; make install ===> Installing for lsof-4.57 ... [install routines 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 と実行することで、 手順の二番目の操作を省くことができます。 port には CDROM への収録を許可しないライセンス条項を持つものがあることに 注意してください。 これにはダウンロード前に登録を必要としたり、 再配布が禁止されているなどという理由があります。 CDROM に含まれていない port をインストールしたい場合には、 ネットワークに接続する必要があります (次のセクションをご覧ください)。 インターネット経由での ports のインストール 前セクションと同じように、このセクションでは、 インターネットへの接続が可能であることを前提としています。 もしインターネット接続が不可能な場合は、 CDROM からのインストールが必要になるでしょう。 インターネット経由で port をインストールする方法は、 CDROM からインストールする場合と完全に同じです。 唯一異なる部分はプログラムのソースコードを 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 snipped] ... ===> Installing for lsof-4.57 ... [install routines 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; ご覧のとおり、 出力の違いはシステムがどこから port を入手したか示す行だけです。 以上が、システムに ports をインストールするために必要な操作です。 次のセクションでは、システムにインストールされている port を削除する方法について学びます。 インストールされた ports の削除 ports 削除 ports のインストール方法について知ればおそらく、 インストールの後になって、それが間違っていたことに気付いた時などに備えて それらを削除する方法はどうすれば良いのか疑問に感じることでしょう。 ここでは、その削除の方法について扱います。 さて、前の例 (例のまま何も変更していない人は lsof) を削除してみましょう。ports のインストールと同じように、 まず最初にやらなければならないのは port のディレクトリに移動することです。 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 を実行することで行なうことができます。 トラブルシューティング このセクションでは、Ports Collection について良く質問される質問と、 いくつかの基本的なトラブルシューティングテクニック、 そして port がうまく動かない場合にできることについて扱います。 質問と回答集 私はモデムについての議論を しているのかと思っていました??! なるほど。 あなたはきっと、 コンピュータの背面についているシリアルポートのことだと思ってしまったのでしょう。 あるバージョンの Unix から、 別のバージョンの Unix へとプログラムを移植することを porting というのですが、 ここでわたしたちは porting の結果という意味で port を使っています。 パッチ (patch) とは何ですか? パッチとは、 あるバージョンから他のバージョンへどのように変更するかを 示す、(通常は) 小さなファイルです。 23 行目を削除468 行目の後にこれらの 2 行を追加、 または 197 行目をこのように変更 というような内容を含んでいます。 これは、diff という名前のプログラムで生成されます。 tarball tarball とは一体何ですか? .tar または .tar.gz という拡張子を持つファイルです (.tar.Z のようなバリエーションもありますし、 DOS のファイルシステム用に .tgz と短縮される場合もあります)。 これは基本的にファイルを一つにまとめた (.tar) ディレクトリツリーです。 圧縮されている (.gz) 場合もあります。 元々 Tape ARchives (訳注: テープアーカイブ) (このため tar という名前なのです) で使われていたものなのですが、 インターネット上でプログラムのソースコードを配布するために 広く使われている方法です。 これらのファイルの中身を見たり、 展開したりすることもできます。FreeBSD の基本システムに付属する Unix 標準の tar コマンドを使ってみると次のようになります。 &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 は /usr/ports/distfiles から tarball を探します。しかし、これは読み出し専用の CDROM へのシンボリックリンクなので、 ここにファイルを置くことはできません。 次のようにすれば他の場所を探すよう ports に指示することができます。 &prompt.root; make DISTDIR=/where/you/put/it 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 のコンパイルを途中で止める方法はありますか? 私はインストールをする前に いろいろとソースコードを解析したいのですが、毎回 control-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 がうまく動作しない状況に遭遇したら、 あなたにできることは次のようなことしかありません。 - 自分で直しましょう! port 作成者のためのハンドブック - のセクションが参考になるはずです。 + 自分で直しましょう! + "Ports" システムに関する詳細な情報は + port 作成者のためのハンドブック にあります。 + このセクションを読むと、壊れてしまった port を直したり、 + 自分で作った port を提出したりできるようになります! 苦情を言いましょう — ただし電子メールで! まず port の保守担当者に電子メールを送ってください。 make maintainer と入力するか、 Makefile を直接読み、 保守担当者の電子メールアドレスを調べます。 メールを送る際には、port 名とバージョン番号 (Makefile$FreeBSD: 行)、 そしてエラーが出力されるまでの出力ログを忘れずに添付してください。 保守担当者から返信がなければ、send-pr を使ってバグレポートを提出しても構いません。 近くの FTP サイトから package を入手しましょう。 マスタ package コレクションは、 ftp.FreeBSD.orgpackage のディレクトリにありますが、 まずはあなたの地域のミラーサイトを最初に調べてください。 ソースからコンパイルすることを試みるより確実ですし、 時間もかかりません。 package をシステムにインストールするには、&man.pkg.add.1; を使います。 - - - 高度な話題 - - ports の作成方法に関する文書は、 - port 作成者のためのハンドブック - にあります。 - あなたが ports の作成や提出をしたいと考えているなら、そちらへどうぞ。 - -