diff --git a/ja_JP.eucJP/books/handbook/ports/chapter.sgml b/ja_JP.eucJP/books/handbook/ports/chapter.sgml index 911cbd1481..cbca30c88c 100644 --- a/ja_JP.eucJP/books/handbook/ports/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/ports/chapter.sgml @@ -1,1090 +1,1090 @@ アプリケーションのインストール: Ports Collection 改訂: &a.jim;, 1999 年 11 月 22 日. 原作: さまざまな人々 この章では FreeBSD Ports Collection を利用することで, 非常に幅広いアプリケーションのコンパイルとインストールを 最小限の労力で行なうことができます. それは普通スケルトンと呼ばれる, アプリケーションを FreeBSD 上でコンパイルしインストールするために必要となる最小限のファイルのセットで構成されてます. やってみたことのある方はよくご存知でしょうが, オープンな規格とは全くの誇大広告であって, あるプログラムを異なるバージョンの Unix 上で動作させることは退屈で手間のかかる仕事です. 求めているプログラムが自分のシステムでうまくコンパイルでき, 正しいところにインストールできて完璧に動作するとしたらとてもラッキーなのですが, あいにくこれは滅多にないことなのです. ほとんどのプログラムについてあなたは髪を掻きむしることになるでしょうし, かなりのプログラムでは, 白髪混じりの頭になってしまったり, あるいは慢性の脱毛症にすらなってしまうかもしれません... Ports Collection の基本的なアイディアは, 適切に動作させるために必要な複雑な手順のすべてを取り除き, インストールを簡単で楽な作業にすることにあります. Ports Collection を利用すれば, 大変な作業は必要ありません. Ports Collection に含まれる ports は, 単に make install と入力するだけでインストールできるのです. Ports Collection の利用 このセクションでは, Ports Collection を利用してシステムにプログラムをインストールしたり, システムから削除したりする基本的な手順について説明します. ports のインストール 一番最初に知らなければならないのは, Ports Collection は スケルトン と呼ばれるもので構成されているという事実です. port スケルトンは簡単に言うと, アプリケーションを FreeBSD 上でコンパイルしインストールするために必要となる最小限のファイルのセットのことです. それぞれの port スケルトンには, 次のファイルが含まれています. Makefile. Makefile にはアプリケーションのコンパイル方法やシステムのどこにインストールするかを指定する, さまざまな命令文が含まれています. 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 xchat xchat: /usr/ports/irc/xchat &prompt.root; この表示は, xchat (irc クライアントの一つ) が /usr/ports/irc/xchat というディレクトリに見つかったことを示しています. また, Ports Collection の持つ検索機能を利用して port を検索する方法もあります. この検索機能を利用するには, カレントディレクトリが /usr/ports である必要があります. そのディレクトリに移動したら, make search key=プログラム名 と入力してください. プログラム名の部分には検索したいプログラム名を入れます. たとえば, xchat を探したい場合には次のようにします. &prompt.root; cd /usr/ports &prompt.root; make search key=xchat Port: xchat-1.3.8 Path: /usr/ports/irc/xchat Info: An X11 IRC client using the GTK+ toolkit, and optionally, GNOME Maint: jim@FreeBSD.org Index: irc B-deps: XFree86-3.3.5 bzip2-0.9.5d gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gmake-3.77 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 R-deps: XFree86-3.3.5 gettext-0.10.35 giflib-4.1.0 glib-1.2.6 gtk-1.2.6 imlib-1.9.8 jpeg-6b png-1.0.3 tiff-3.5.1 出力のうち特に注意して見なければならないのは Path という行です. この行は xchat がどこにあるかを示しています. 出力される他の情報は port をインストールする際には直接必要となるものではありませんので, ここでは触れないでおきます. ports をインストールするには, root ユーザにならなければなりません. インストールしたい port が見つかったら, - 実際のインストールい移ることができます. + 実際のインストールに移ることができます. CD-ROM からのコンパイル タイトルから想像できると思いますが, このセクションで説明する内容は, FreeBSD の CDROM セットを持っていることを前提としています. もし CDROM セットを持っていなければ, FreeBSD Mall で注文することができます. FreeBSD CDROM がドライブに挿入されていて, /cdrom (マウントポイントは必ず /cdromでないといけません) にマウントされていれば, port をインストールすることができます. まず, カレントディレクトリをインストールしたい port のあるディレクトリに変更してください. &prompt.root; cd /usr/ports/irc/xchat xchat ディレクトリに移動すると, port スケルトンがあるのが確認できると思います. 次に行なうのは, port のコンパイル (構築, ビルド(build)とも呼ばれます) です. これは, プロンプトから単に make と入力するだけで行なえます. そうすると, 次のような出力が現われるはずです. &prompt.root; make >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure output snipped] ... ===> Building for xchat-1.3.8 ... [compilation snipped] ... &prompt.root; コンパイルが終了してプロンプトに戻ることを確認してください. 次に port をインストールを行ないます. port をインストールするのに必要なのは, make コマンドに一つの単語, install を指定することだけです. &prompt.root; make install ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [install routines snipped] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; プロンプトに戻ったら, インストールしたプログラムは実行できるようになっています. make, make install と二つに分けられた手順の代わりに, 最初から make install と実行することで, 手順の二番目の操作を省くことができます. port には CDROM への収録を許可しないライセンス条項を持つものがあることに 注意してください. これにはダウンロード前に登録を必要としたり, 再配布が禁止されているなどというさまざまな理由があります. CDROM に含まれていない port をインストールしたい場合には, ネットワークに接続する必要があります (次のセクションをご覧ください). インターネット経由での ports のコンパイル 前セクションと同じように, このセクションでは, インターネットへの接続が可能であることを前提としています. もしインターネット接続が不可能な場合は, CDROM からのインストールが必要になるでしょう. インターネット経由で port をインストールする方法は, CDROM からインストールする場合と完全に同じです. 唯一異なる部分はプログラムのソースコードを CDROM からではなく, インターネット経由でダウンロードするということです. 次のように, 必要な手順は同じです. &prompt.root; make install >> xchat-1.3.8.tar.bz2 doesn't seem to exist on this system. >> Attempting to fetch from http://xchat.org/files/v1.3/. Receiving xchat-1.3.8.tar.bz2 (305543 bytes): 100% 305543 bytes transferred in 2.9 seconds (102.81 Kbytes/s) ===> Extracting for xchat-1.3.8 >> Checksum OK for xchat-1.3.8.tar.bz2. ===> xchat-1.3.8 depends on executable: bzip2 - found ===> xchat-1.3.8 depends on executable: gmake - found ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ===> Patching for xchat-1.3.8 ===> Applying FreeBSD patches for xchat-1.3.8 ===> Configuring for xchat-1.3.8 ... [configure output snipped] ... ===> Building for xchat-1.3.8 ... [compilation snipped] ... ===> Installing for xchat-1.3.8 ===> xchat-1.3.8 depends on shared library: gtk12.2 - found ===> xchat-1.3.8 depends on shared library: Imlib.5 - found ===> xchat-1.3.8 depends on shared library: X11.6 - found ... [install routines snipped] ... ===> Generating temporary packing list ===> Installing xchat docs in /usr/X11R6/share/doc/xchat ===> Registering installation for xchat-1.3.8 &prompt.root; ご覧のとおり, 出力の違いはシステムがどこから port を入手したか示す行だけです. 以上が, システムに ports をインストールするために必要な操作です. 次のセクションでは, システムにインストールされている port を削除する方法について学びます. インストールされた ports の削除 ports のインストール方法について知ればおそらく, インストールの後になって, それが間違っていたことに気付いた時などに備えて それらを削除する方法はどうすれば良いのか疑問に感じることでしょう. ここでは, その削除の方法について扱います. さて, 前の例 (例のまま何も変更していない人は xchat) を削除してみましょう. ports のインストールと同じように, まず最初にやらなければならないのは port のディレクトリに移動することです. port のディレクトリは /usr/ports/irc/xchat でしたね. ディレクトリを移動したら, xchat を削除するのに必要な準備は終わりです. 削除するには, make deinstall コマンド (わかりやすいですよね?) を実行します. &prompt.root; cd /usr/ports/irc/xchat &prompt.root; make deinstall ===> Deinstalling for xchat-1.3.8 &prompt.root; 極めて簡単な作業です. これでうまく xchat をシステムから削除することができました. もう一度再インストールしたい場合には, /usr/ports/irc/xchat から make reinstall を実行することで行なうことができます. トラブルシューティング このセクションでは, Ports Collection について良く質問される質問と, いくつかの基本的なトラブルシューティングテクニック, そして port がうまく動かない場合にできることについて扱います. 質問と回答集 私はモデムについての議論を しているのかと思っていました??! なるほど. あなたはきっと, コンピュータの背面についているシリアルポートのことだと思ってしまったのでしょう. あるバージョンの Unix から, 別のバージョンの Unix へとプログラムを移殖することを porting というのですが, ここでわたしたちは porting の結果という意味で port を使っています. わたしは, 標準に含まれないプログラムのインストールには packages を使うものだと思っていたのですが. そのとおり. 通常は packages が最も手早くて簡単な方法です. それでは, どうして面倒な ports があるのですか? いくつかの理由があります. ライセンス条項に, バイナリではなくソースコードでの配布を求めているソフトウェアがあるためです. バイナリ配布を信用していない人もいます. ソースコードがあれば少なくとも, ソースコードを読んで, (理論的には) 潜在的な問題点を自分で見つけ出すこともできるはずです. ローカルなパッチを入手した場合, それを自分で追加するためにソースコードが必要になります. プログラムがいかにコンパイルされるべきかについて, あなたはパッケージを作った人とは異なる見解を持っているかもしれません. どんな最適化オプションをつけるべきかとか, デバッグバージョンを作ってから それを strip するべきだとか, いや, そうするべきでない, などなど, 確固たる見解を持っている人もいるでしょう. package は通常, 非常に保守的な設定で構築されています. もし port に特定のプロセッサ用のコードを使うコンパイルオプションがあったり, 特定の拡張ボードを有効化するオプションがあれば, package を作成している人でなくとも, あなた自身が port を使ってそれらを有効にし, 設定の異なるたくさんの package を作成することができます. これの例外は, 用紙のサイズです. 異なる用紙のサイズに対応している package の場合, 用紙サイズ毎に複数の package が提供されることがあります. ソースコードを手元に置いておきたい人たちもいます. 彼らは, 退屈したときに眺めたり, あちこち解析してみたり, ソースコードを 借用したり (もちろん, ライセンスが許せばの話ですが) するのです. あなたがソースコードを持っていなければ, それはソフトウェアとは 言えませんね! ;-) パッチ(patch)とは何ですか? パッチとは, あるバージョンから他のバージョンへどのように変更するかを 示す, (通常は) 小さなファイルです. 23 行目を削除, 468 行目の後にこれらの 2 行を追加, または 197 行目をこのように変更というような内容を含んでいます. これは, diff という名前のプログラムで生成されます. 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 とすれば両者を組み合わせることが可能です (省略せずに記述したらこのページに収めるには長すぎるのですが, 考え方は理解していただけたと思います). (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 -a | grep grizzle Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. ディスク容量のことなのですが, ports のディレクトリは非常に膨大な容量を使うように見えます. 残しておいた方がよいのでしょうか? それとも削除してしまって構わないのでしょうか? はい. インストールが首尾よく終わり, もうソースコードが必要でないと思うなら, それらを残しておく理由はないでしょう. 一番良い方法は, 次のとおりです. &prompt.root; cd /usr/ports &prompt.root; make clean これはすべての ports のサブディレクトリを調べ, 各 ports のスケルトン以外の削除をおこないます. これを試してみたのですが, 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 -DIS_INTERACTIVE 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 の技術は本当に賢いですね. わたしはこれがどのようにして動いているのか知りたいのですが, その秘密とは何ですか? 秘密なんて一切ありません. Makefiles ディレクトリ にある bsd.port.mkbsd.port.subdir.mk ファイルを見てください. (複雑なシェルスクリプトを嫌う読者は, このリンクを追いかけないほうが良いでしょう...) たすけて! port がうまく動かない! port がうまく動作しない状況に遭遇したら, あなたにできることは次のようなことしかありません. 自分で直しましょう! port の作り方 のセクションが参考になるはずです. 苦情を言いましょう — ただし電子メールで! まず port の保守担当者に電子メールを送ってください. make maintainer と入力するか, Makefile を直接読み, 保守担当者の電子メールアドレスを調べます. メールを送る際には, port 名とバージョン番号 (Makefile$FreeBSD: 行), そしてエラーが出力されるまでの出力ログを忘れずに添付してください. 保守担当者から返信がなければ, send-pr を使ってバグレポートを提出しても構いません. その port のことは忘れてしまってください. これは最も気楽な方法です — 重要な ports というのは, ほんの一握りしかありません. また, port が更新された時に問題が解決しているかも知れません. 近くの FTP サイトから package を入手しましょう. マスタ package コレクションは, ftp.FreeBSD.orgpackage のディレクトリにありますが, まずはあなたの地域のミラーサイトを最初に調べてください. ソースからコンパイルすることを試みるより確実ですし, 時間もかかりません. package をシステムにインストールするには, &man.pkg.add.1; を使います. 高度な話題 以前ここにあった文書は, 探しやすいように Porter's Handbook へ移動しました. あなたが ports の作成や提出をしたいと考えているなら, そちらへどうぞ.