diff --git a/ja_JP.eucJP/books/porters-handbook/Makefile b/ja_JP.eucJP/books/porters-handbook/Makefile index 14c27aafd8..44df0e0a39 100644 --- a/ja_JP.eucJP/books/porters-handbook/Makefile +++ b/ja_JP.eucJP/books/porters-handbook/Makefile @@ -1,5 +1,5 @@ # -# $FreeBSD$ +# $FreeBSD: doc/ja_JP.eucJP/books/porters-handbook/Makefile,v 1.1.1.1 2000/04/29 07:55:15 kuriyama Exp $ # # Build the FreeBSD Porter's Handbook. # @@ -14,6 +14,8 @@ FORMATS?= html-split INSTALL_COMPRESSED?= gz INSTALL_ONLY_COMPRESSED?= +NO_TIDY= YES + # # SRCS lists the individual SGML files that make up the document. Changes # to any of these files will force a rebuild diff --git a/ja_JP.eucJP/books/porters-handbook/book.sgml b/ja_JP.eucJP/books/porters-handbook/book.sgml index 3f6fd3b076..2f0fa9ffdb 100644 --- a/ja_JP.eucJP/books/porters-handbook/book.sgml +++ b/ja_JP.eucJP/books/porters-handbook/book.sgml @@ -2,8 +2,8 @@ The FreeBSD Documentation Project The FreeBSD Japanese Documentation Project - Original revision: 1.64 - $FreeBSD: doc/ja_JP.eucJP/books/porters-handbook/book.sgml,v 1.19 2000/04/01 16:47:23 knu Exp $ + Original revision: 1.115 + $FreeBSD: doc/ja_JP.eucJP/books/porters-handbook/book.sgml,v 1.20 2000/05/09 08:36:04 kuriyama Exp $ --> - FreeBSD Porter's Handbook + FreeBSD port 作成者のためのハンドブック The FreeBSD Documentation Project
- doc@@FreeBSD.org + doc@FreeBSD.org
- April 2000 + 2000 年 4 月 2000 + The FreeBSD Documentation Project &bookinfo.legalnotice;
- 自分で port を作る - - 原作: &a.jkh;, &a.gpalmer;, &a.asami;, - &a.obrien; and &a.hoek;. 28 August 1996. - - 訳: &a.jp.simokawa;, &a.asami;. - 10 November 1996. + 自分で port を作成するには 自分で port を作ることや既存の port - の更新作業に興味があるのですか, それはすばらしい! + の更新作業に興味があるのですか, それはすばらしい! - これから, FreeBSD 用のportを作る際の, + これから, FreeBSD 用の portを 作る際の, いくつかのガイドラインを説明します. もし, 既存の port を更新したいと考えているなら, - まずこの文書を読み, 次に - を読んでください. - + まずこの文書を読み, 次に + を読んでください. + この文書では十分に詳細がわからない場合には, - /usr/ports/Mk/bsd.port.mk を参照して下さい. + /usr/ports/Mk/bsd.port.mk を参照してください. このファイルは, port の Makefile が例外なくインクルードしているものです. これには細かくコメントが書かれていますので, Makefile - を読むのにあまり慣れていない人でも, たくさんの情報を得ることが - できると思います. + を読むのにあまり慣れていない人でも, + たくさんの情報を得ることができると思います. また, port 特有の質問は &a.ports; へお願いします. - + ここでは, 変更可能な変数(VAR) の一部についてのみ記述しています. - ほとんどの変数はbsd.port.mk - の始めに記述があります. - また, このファイルは非標準のタブ設定を使用しています. - EmacsVim - はファイルのロード時にこれを認識しますが, - viex は - ファイルをロードしてから :set tabstop=4 - とタイプすることで, 正しい値を設定する - ことができます. + ほとんどの変数はbsd.port.mk + の始めに記述があります. + また, このファイルは非標準のタブ設定を使用しています. + EmacsVim + はファイルのロード時にこれを認識しますが, + viex は + ファイルをロードしてから :set tabstop=4 + とタイプすることで, 正しい値を設定する + ことができます. + + + 3 分間 porting - - 3分porting - - この節では, 簡単なportの方法について説明します. - 多くの場合これ では不十分ですが, - まあうまくいくかどうか試してみて損はないでしょ う. - - まず, 元のtarファイルをDISTDIRに置きます. - デフォルトは/usr/ports/distfilesです. - - - 以下では, - ソフトウェアはそのままコンパイルされるとします. つまり, - FreeBSDのマシンで動かすために, 変更がまったく必要ない - とします. - もしなにか変更が必要な場合には次の節も参照する必要 - があります. - - - - <filename>Makefile</filename> の作成 - - 最小限のMakefile - は次のようなものです: - - + この節では, 簡単な port の方法について説明します. + 多くの場合これ では不十分ですが, + まあうまくいくかどうか試してみて損はないでしょ う. + + まず, 元の tar ファイルを + DISTDIR + に置きます. + デフォルトは + /usr/ports/distfiles + です. + + + 以下では, + ソフトウェアがそのままコンパイル可能なことを仮定しています. + つまり FreeBSD マシンで動かすために, + 変更がまったく必要ないという意味です. + もし何か変更が必要な場合には, 次の節も参照する必要があります. + + + + <filename>Makefile</filename> の作成 + + 最小限のMakefile + は次のようなものです. + + # New ports collection makefile for: oneko -# Version required: 1.1b # Date created: 5 December 1994 # Whom: asami # # $FreeBSD$ # -DISTNAME= oneko-1.1b +PORTNAME= oneko +PORTVERSION= 1.1b CATEGORIES= games MASTER_SITES= ftp://ftp.cs.columbia.edu/archives/X11R5/contrib/ @@ -131,62 +129,66 @@ USE_IMAKE= yes .include <bsd.port.mk> - おわかりになりますでしょうか. - $FreeBSD$があ る行の内容については, - 気にしないでください. これはこのファイル - がportsツリーに書き込まれるときにCVSによって自動的に書 - き込まれます. もっと詳しい例が見たければ, Makefileのお手本 - の節をご覧ください. - + おわかりでしょうか. + $FreeBSD$がある行の内容については, + 気にしないでください. + これはこのファイルが ports ツリーに書き込まれるときに + CVS によって自動的に書き込まれます. + もっと詳しい例が見たければ, + Makefile + のサンプルの節をご覧ください. + - - Package記述ファイルの作成 - - どのようなportでも, packageにするしないに関わらず, 3つ - の記述ファイルが必要です. - pkgサブディレクトリにある, - COMMENT, DESCR, - それに PLISTです. - - - <filename>COMMENT</filename> - - これには, そのportについての説明を1行で書きます. - Package の名前, バージョン番号等は - 含めないでください. - コメントは大文字で始め, 最後のピリオドは付けないでください. - たとえば, こんな具合です: - - + + package 記述ファイルの作成 + + package にするしないに関わらず, + どのような port でも三つの記述ファイルが必要です. + それは pkg サブディレクトリにある, + COMMENT, + DESCR, + そして PLISTです. + + + <filename>COMMENT</filename> + + これには, その port についての説明を一行で書きます. + package の名前, + バージョン番号等は含めないでください. + コメントは大文字で始め, 最後のピリオドは付けないでください. + たとえば, こんな具合です. + + A cat chasing a mouse all over the screen - + - - <filename>DESCR</filename> - - これは, そのソフトウェアについての, - すこし長い説明を記述します. その port - が何をするのかについての数段落程度の - 簡潔な解説があれば十分です. - このファイルはマニュアルでもなければ, - 使用方法やコンパイル方法についての細かい - 説明書でもありません. 特に, - READMEファイル manpage - をコピーしようとしてしている場合には - 注意してください. これらは多くの場合, - そのポートの簡潔な説明に なっていなかったり, - 扱いにくい形式(manpage の場合, - 行を揃えるために空白が調整されます)になっていたりします. - もしこのソフトウエアに公式の WWW のホームページがあれば, - ここに書いて下さい. 自動化ツールが正しく動作するように, - Web サイトのうちの ひとつ には, 前に - WWW: を付け加えてください. - - このファイルの最後にあなたの名前を書くことが - 推奨されています. たとえば, こんな具合です. - - + + <filename>DESCR</filename> + + これは, そのソフトウェアについての少し長い説明を記述します. + その port が何をするのかについて, + 数段落程度の簡潔な解説があれば十分です. + + + このファイルは, + マニュアルでも使用方法やコンパイル方法についての細かい説明書でもありません. + 特に README + ファイルやマニュアルページをコピーしようとしてしている場合には注意してください. + これらは多くの場合, その port の簡潔な説明になっていなかったり, + 扱いにくい形式 + (マニュアルページの場合, 行を揃えるために空白が調整されます) + になっていたりします. + もしこのソフトウェアに公式のウェブサイトがあれば, + ここに書いてください. + 自動化ツールが正しく動作するように, + ウェブサイトのうちの一つには先頭に + WWW: を付け加えてください. + + + このファイルの最後にあなたの名前を書くことが推奨されています. + たとえば, こんな具合です. + + This is a port of oneko, in which a cat chases a poor mouse all over the screen. : @@ -196,26 +198,30 @@ WWW: http://www.oneko.org/ - Satoshi asami@cs.berkeley.edu - + + + + <filename>PLIST</filename> + + このファイルには, + この port によってインストールされるファイルが列挙されます. + このファイルは package を作る際のリストとして使われるため, + パッキングリスト (packing list) + とも呼ばれます. + ここに書かれているファイル名は, + インストール時のプレフィックス + (普通は + /usr/local か + /usr/X11R6) + からの相対パスです. + MANn + 変数を使用する場合 + (使用することが推奨されています) + には, マニュアルはここに入れないでください. + + 簡単な例を載せておきましょう. - - <filename>PLIST</filename> - - このファイルには, - このportによってインストールされるファ - イルが列挙されます. このファイルはpackageを作る際のリス - トとして使われるため, `packing list' とも呼ばれます. - ここ に書かれているファイル名は, - インストール時のプレフィックス (普通は - /usr/local か - /usr/X11R6) からの 相対パスです. - MANn - 変数を使用する場合(使用することが推奨されています)には, - マニュアルはここに入れないでください. - - 簡単な例を載せておきましょう: - - + bin/oneko lib/X11/app-defaults/Oneko lib/X11/oneko/cat1.xpm @@ -223,1335 +229,1393 @@ lib/X11/oneko/cat2.xpm lib/X11/oneko/mouse.xpm @dirrm lib/X11/oneko - 'Packing list'の詳細については, &man.pkg.create.1; - のマニュアルを参照してください. + パッキングリストの詳細については, + &man.pkg.create.1; のマニュアルページを参照してください. - - すべてのファイルを列挙しなければなりませんが, - ディレクトリ名は必要ありません. また, ports - がインストール時にディレクトリを作成する場合には, - @dirrm の行を加えて, その port - が削除されるとき, - そのディレクトリも削除されるようにしてください. + + すべてのファイルを列挙しなければなりませんが, + ディレクトリ名は必要ありません. + また, ports + がインストール時にディレクトリを作成する場合には + @dirrm の行を加えて, + その port + が削除されるときにそのディレクトリも削除されるようにしてください. + + このファイルにはファイル名をアルファベット順に並べるようにします. + そうすることで port のアップグレートの際, + 確認作業が楽に行なえるようになります. + + パッキングリストを手で作るのは, + 時にとても退屈な作業になります. + もし多数のファイルをインストールする port なら, + パッキングリストを自動生成すれば時間の節約になるかも知れません. + + + + + + チェックサムファイルの作成 + + make makesum + と入力するだけです. + bsd.port.mk にルールがあるので, + 自動的に files/md5 が生成されます. + - このファイルには, - ファイル名をアルファベット順に並べるようにしてください. - port のアップグレートのとき, - 楽に確認ができるようになります. + + port のテスト - packing list を手で作るのは時にはとても退屈な作業になります. - もし多数のファイルをインストールする port なら, packing list を自動的に作る - と時間の節約になるかもしれせん. - - - + package 化を含めてその port が正しく動くことを確認してください. + 以下の重要なポイントを確認してください. + + + + PLIST にその port + がインストールしないものが含まれていないこと. + + + + PLIST にその port + がインストールするすべてのものが含まれていること. + + + + reinstall + ターゲットを使うことによって, + 何度でもインストールが可能なこと. + + + + deintall + の際に後片付けをすること. + + - - チェックサムファイルの作成 + + 推奨されるテストの手順 + + + make install + + + + make package + + + + make deinstall + + + + pkg_add package 名 + + + + make deinstall + + + + make reinstall + + + + make package + + + + package および + deinstall + の段階でどんな警告 + (warning) + も出力されないことを確認してください. + ステップ 3 の後, + 新しいディレクトリがすべて正しく消去されているかを確認してください. + また, ステップ 4 の後にそのソフトウェアを使用してみて, + package からインストールされた場合に正しく動作するかを + 確認してください. + + + + <command>portlint</command> によるチェック + + portlintを使って, + あなたの port が FreeBSD のガイドラインに沿っているかを確認してください. + portlint プログラムは + Ports Collection に含まれています. + 特に Makefile + が正しい形式になっているか, + package + の名前が正しいかをチェックするのに良いでしょう. + + + + port の提出 - ただ, make makesum - と入力するだけです. bsd.port.mk - にルールがあるので, - 自動的にfiles/md5が生成されます. - + まずやって良いことといけないことに関する節を読んでください. - - Portのテスト + さあ, あなたの port に満足したら, + あとはそれを FreeBSD のメインの ports ツリーに置き, 皆に使ってもらうだけです. + 今ある + work ディレクトリや + pkgname.tgz という package + は必要ありませんから, まずこれらを消去してください. + あとはバグレポートの中に + shar `find port_dir` + の出力を &man.send-pr.1; プログラムを使用して送ってください + (&man.send-pr.1; についての詳細はバグ報告と一般的な論評を参照してください). + もし, 圧縮していない状態で 20KB 以上あるような port あれば, + 圧縮して tar ファイルにして, + バグレポートに入れる前に &man.uuencode.1; を使用してください + (20KB 以下のものを tar ファイルにして送っても良いのですが, + あまり歓迎されません). + バクレポートの + category は ports, + class は change-request + を必ず使用してください + (レポートを confidential (秘密) + にしないようにしてください!). + + もう一度, + オリジナルのソースファイル, + work ディレクトリ, + make package + で作成した package が含まれていないことを確認してください. + + + 以前, 新しい port を FreeBSD の ftp サイト + (ftp.FreeBSD.org) + にアップロードするようにお願いしたことがありますが, + 現在このサイトの incoming + ディレクトリは読み出し不可になっており, + いまでは推奨されていません. + たくさんの海賊版ソフトウェアがそこに置かれたためです. + + + わたしたちは, 何か不明な点があったらあなたに確認した後, + それをツリーへ置きます. あなたの名前は + FreeBSD ハンドブックやその他のファイルの + Additional FreeBSD contributors + のリストにも載るでしょう. + う〜ん, 素晴らしい. :-) + - そのportが正しく動くことを, - package化を含めて確認してください. - 以下の重要なポイントを確認してください. + + わたしたちが作業しやすいように, + 障害報告の概要 (synopsis) は適切に記述してください. + たとえば新しい port の提出なら + New port: <port の簡単な説明>, + port の更新なら + Update port: <カテゴリ>/<port 名> <更新内容の簡単な説明> + というようなものが歓迎されます. + こういう方法で報告するように心がけていれば, + 誰かがその報告をすぐに見つけ, + 処理できる確率がぐっと大きくなるのです. + + + - - - PLIST にその port - がインストールしないものが含まれていないこと. - - - - PLIST にその port - がインストールする全てのものが含まれていること. - - - - reinstall - ターゲットを使うことによって, - 何度でもインストールが可能こと. - - - - deintall の際に 後片付け - をすること. - - - - - 推奨されるテストの手順 - - - make install - - - - make package - - - - make deinstall - - - - pkg_add package-name - - - - make deinstall - - - - make reinstall - - - - make package - - - - package および - deinstall の段階で, - どんな警告(warning)も出力されないことを確認してください. - ステップ3の後, - 新しいディレクトリが全て正しく消去されているかを - 確認してください. また, - ステップ4の後にそのソフトウェアを使用してみて, package - からインストールされた場合に正しく動作するかを - 確認してください. - - - - <command>portlint</command> でチェック - - portlintを使って, あなたの port - が我々のガイドラインそっているかを確認してください. - portlint プログラムは ports - コレクションに含まれています. 特に, Makefile - が正しい形式になっているか, package - の名前が正しいか, をチェックするのに良いでしょう. - - - - Portの送付 - - まず, やってよいことといけないこと - についての節を読んでください. - - さあ, あなたのportに満足したら, - あとはそれをFreeBSDのメイ ンのportsツリーに置いて, - 皆に使ってもらうだけです. いまある - work ディレクトリや - pkgname.tgz - パッケージは必要ありませんから, まず消去してください. - あとは, バグレポートの中に shar `find - port_dir` の出力を, &man.send-pr.1; - プログラムを使用して送ってください. &man.send-pr.1; - についての詳細は, バグ報告と一般的な論評 - を参照してください.) もし, 圧縮していない状態で, - 20KB以上あるようなポートであれば, 圧縮して tar - ファイルにして, バグレポートに入れる前に &man.uuencode.1; - を使用してください. (20KB以下のものでも, tar - ファイルにして送ってもよいですが, あまり歓迎されません). - バクレポートの category は ports, class - は - change-requestを必ず使用してください. - (レポートを confidential (内密) - にしないようにしてください!) - - もう一度, オリジナルのソースファイル, - work ディレクトリ, make - package - で作成したパッケージが含まれていないこと - を確認してください. - - - 以前, 新しい port をわれわれの ftp サイト (ftp.FreeBSD.org) - にアップロードするようにお願いしたことがありますが, - 現在このサイトの incoming - ディレクトリは読み出し不可になっており, - いまでは推奨されていません. - 沢山の海賊版ソフトウェアがそこに置かれたためです. - - - 私たちは, 何か不明な点があったらあなたに確認したのち, - それをツリーへ置きます. あなたの名前は, FreeBSD - ハンドブックやその他のファイルの “Additional FreeBSD - contributors” のリストにも載るでしょう. う〜ん, - 素晴らし い. :-) - - - - - - 本格的なport - - 残念ながら, 移植がそう簡単ではなく, - 動かすために多少の変更が 必要な場合も多いでしょう. - この節では, portsコレクション の方法論にのっとって, - そのような場合にどのように変更を施し, 動 - くようにしたらよいかを順を追って説明します. - - - port構築の詳細 - - まず, あなたがportのディレクトリで - make とタイ - プしてから起こる一連の出来事について,順を追って説明しま - す. ここを読むときには, 他のウィンドウで同時に - bsd.port.mk - も開いておくとよいかもしれません. - - しかし, - bsd.port.mkが何をしているのか, - 完全に理解 できなくても心配する必要はありません. - そう多くの人が理解して いるわけではないですから... f(^_^;) - - - - まず, fetch - というターゲットが実行されます. - このfetchターゲットは - ローカルディスクのDISTDIRに配布ファ - イルがあるようにするのが役目です. もし, - fetchが必要なファ - イルをDISTDIRに見つけることが - できなければ, Makefile に指定されている URL - MASTER_SITES, - そして私たちのFTPサイトで ある - ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ - (ここ には, 私たちが取ってきたファイルを - バックアップとして置いてあ ります) に探しにいきます. - そして, ユーザのサイトがインター ネットに - 直接接続されている場合には, FETCH - を使って, その名前のファイルを取っ てきて, - DISTDIRに保存します. - - - - 次に実行されるのは - extract ターゲットです. - これは, DISTDIRにある, 配布ファイル - (普通は gzipされたtarファイル) を読み, - ソースを一時的な作業ディレ - クトリWRKDIR (デフォルトは - work) に展開します. - - - - 次に, patch - というターゲットが実行されます. まず, - PATCHFILESに定義されている, - すべてのパッ チをあてます. - 次にもしPATCHDIR (デフォ ルトは - patches サブディレクトリ) - にパッチが存在す れば, - これらをアルファベット順にあてます. - - - - 次に実行されるターゲットは - configureです. これには, い - ろいろな場合があります. - - - - もし存在すれば, - scripts/configure - が実行されます. - - - - もし, HAS_CONFIGURE - あるいは GNU_CONFIGURE - がセットされていれば, - WRKSRC/configure - が実行されます. - - - - もし, USE_IMAKE - がセットされていれば, XMKMF - (デフォルト: xmkmf -a) - が実行されます. - - - - - - 最後に, build - というターゲットが実行されます. これは, その port - の専用の作業ディレクトリ (WRKSRC) - にい き, コンパイルするのが役目です. もし - USE_GMAKE がセットされていれば, GNU - make が使用されます. - さもなければFreeBSDの make - が使用されます. - - - - 上記はデフォルトのルールです. さらに, - pre-何とか - や - post-何とか - というターゲット が定義してあった - り,そのような名前のスクリプトが scripts - サブディレクトリに置いてある場合には, - それらはデフォルトの動作の前 - 後に実行されます. - - たとえば, post-extract - というターゲットが Makefile で定義されていて, - pre-build というファイルが, - scripts - サブディレクトリにあるとすると, - post-extractターゲットは, - 通常の展開動作のあとに呼 び出され, - pre-build - スクリプトはデフォルトのコンパイ - ルのルールが実行される前に実行されます. - もし動作が簡単であれ ば, Makefile - のターゲットを使用することが推奨されています. な ぜならば, - そのportが何らかのデフォルトではない動作を必要とす - るのかどうかが一箇所にまとめて書いてあった方が他の人に - 理解しやす いからです. - - デフォルトの動作は bsd.port.mk の - do- 何とか - - というターゲットでおこなわれます. たとえば, - portを展開するコマンドは, - do-extract - というターゲットにあります. もし, - デフォルトのターゲットに 不満があれば, - do- something - というターゲッ - トを再定義することによって, - どのようにでも直すことができます. - - - “メイン”のターゲット (例えば, - extract, - configure等) は, - すべての前段階が実行されていること を確認して, - 実際のターゲットやスクリプトを呼び出す以外のこと - はしません. - bsd.port.mkはこれらが変更されることは仮定してい - ませんので, もし, 例えば, 展開の仕方を直したいときには, - do-extract を直し, - 絶対にextractには手を - 触れないでください. - - - これで, ユーザが make - と入力したときに何が起こ るのかが理解できたと思います. - では, 完璧なportを手順を追っ て作ってみましょう. - - - - オリジナルのソースの入手 - - オリジナルのソースを, (普通は) - 圧縮されたtarファイルの形 ( - foo.tar.gz - あるいは - foo.tar.Z) - で入手して, それを DISTDIR - にコピーします. 可能なかぎり, 広 - く使われている主流の - ソースを使用するようにしてください. - - もし, ネットワークへの接続のよい FTP/HTTP - サイトを見つけるこ とができなかったり, - 頭にくるような非標準的な形式しか持ってい - ないサイトしか見つけられないときには, 自分で管理する確実な - ftp か http サーバ (たとえば, - あなたのホームページ)に置くこと ができます. - MASTER_SITES - に正しく反映されていることを確認してください. - - もしも, そのような都合の良く, - 安心な置き場所が見つけられない 場合(あなたが FreeBSD の - committer であれば, 自分の - public_html ディレクトリに置けます), - 私たちが, - - ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/ - に置き場所を提供できます. - この場所は, 変数 MASTER_SITE_LOCAL - を使って参照してください. - これについての問い合わせのメールは &a.ports へお願いします. - - - その port の配布ファイルが特に理由もなく, - しょっちゅう変る場合には, + + 本格的な port + + 残念ながら移植がそう簡単ではなく, + 動かすために多少の変更が必要な場合も多いでしょう. + この節では, Ports Collection の方法論にのっとって, + そのような場合にどのように変更を施し, + 動くようにしたら良いかを順を追って説明します. + + + port 構築の詳細 + + まず, あなたが port のディレクトリで + make + と入力してから起こる一連の出来事について, + 順を追って説明します. + ここを読むときには, 他のウィンドウで同時に + bsd.port.mk + も開いておくと良いかも知れません. + + しかし, + bsd.port.mk + が何をしているのか完全に理解 できなくても心配する必要はありません. + そう多くの人が理解して いるわけではないですから... + f(^_^;) + + + + まず, fetch + というターゲットが実行されます. + この fetch + ターゲットはローカルディスクの + DISTDIR + に配布ファイルがあるようにするのが役目です. + もし, fetch + が必要なファイルを + DISTDIR + に見つけることができなければ, + Makefile + に指定されている URL + MASTER_SITES, + そして FreeBSD の FTP サイトである + ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ + (ここには, わたしたちが取ってきたファイルをバックアップとして置いてあります) + へ探しにいきます. + そして, ユーザのサイトがインターネットに直接接続されている場合には, + FETCH + を使いその名前のファイルを取ってきて, + DISTDIR + に保存します. + + + + 次に実行されるのは + extract ターゲットです. + これは DISTDIR + にある配布ファイル + (普通は gzip された tar ファイル) + を読み, ソースを一時的な作業ディレクトリ + WRKDIR + (デフォルトは work) + に展開します. + + + + 次に, + patch + というターゲットが実行されます. + まず, PATCHFILES + に定義されている, すべてのパッチを適用します. + 次にもし + PATCHDIR + (デフォルトは patches サブディレクトリ) + にパッチが存在すれば, + これらをアルファベット順に適用します. + + + + 次に実行されるターゲットは + configure + です. これには, いろいろな場合があります. + + + + scripts/configure + が存在すれ場合, それが実行されます. + + + + HAS_CONFIGURE + あるいは GNU_CONFIGURE + がセットされていれば, + WRKSRC/configure + が実行されます. + + + + USE_IMAKE + がセットされていれば, XMKMF + (デフォルト: xmkmf -a) + が実行されます. + + + + + + 最後に build + というターゲットが実行されます. + これはその port の専用の作業ディレクトリ + (WRKSRC) + に移動し, コンパイルするのが役目です. + USE_GMAKE がセットされていれば + GNU make が使用されます. + そうでなければ FreeBSD の + make + が使用されます. + + + + 上記はデフォルトのルールです. さらに, + pre-何とか + や + post-何とか + というターゲットが定義してあったり, + そのような名前のスクリプトが + scripts + サブディレクトリに置いてある場合には, + それらはデフォルトの動作の前後に実行されます. + + たとえば, + post-extract + というターゲットが + Makefile で定義されていて, + pre-build というファイルが + scripts サブディレクトリにあるとすると, + post-extract + ターゲットは通常の展開動作の後に呼び出され, + pre-build + スクリプトはデフォルトのコンパイルのルールが実行される前に実行されます. + もし動作が簡単であれば, Makefile + のターゲットを使用することが推奨されています. + なぜなら, その port + が何らかのデフォルトではない動作を必要とするのかどうかが一箇所にまとめて書いてあった方が, + 他の人に理解しやすいからです. + + デフォルトの動作は + bsd.port.mk の + do-何とか + というターゲットで行なわれます. + たとえば port を展開するコマンドは + do-extract + というターゲットにあります. + もしデフォルトのターゲットに不満があれば, + do-何とか + というターゲットを再定義することによってどのようにでも直すことができます. + + + メインのターゲット + (たとえば + extract や + configure 等) + は, すべての前段階が実行されていることを確認してから, + 実際のターゲットやスクリプトを呼び出す以外のことは行ないません. + bsd.port.mk + はこれらが変更されることは仮定していませんので, + たとえば展開の仕方を変更したいときには + do-extract + を変更し, + 絶対に + extract + には手を触れないでください. + + + これで, ユーザが + make + と入力したときに何が起こるのかが理解できたと思います. + では, 完璧な port を手順を追って作ってみましょう. + + + + オリジナルのソースの入手 + + オリジナルのソースを, + (普通は) 圧縮された tar ファイルの形 + (foo.tar.gz + あるいは + foo.tar.Z) + で入手して, それを + DISTDIR + にコピーします. + 可能なかぎり, + 広く使われている主流のソースを使用するようにしてください. + + ネットワークへの接続の良好な FTP/HTTP + サイトを見つけることができなかったり, + 頭にくるような非標準的な形式しか持っていないサイトしか見つけられないときには, + 自分で管理する確実な ftp か http サーバ (たとえば, + あなたのホームページ) + に置くこと ができます. + MASTER_SITES + に正しく反映されていることを確認してください. + + そのような都合の良く安心な置き場所が見つけられない場合 + (あなたが FreeBSD のコミッターであれば + freefall の自分の public_html + ディレクトリに置けます), + + わたしたちが + ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/LOCAL_PORTS/ + という場所を提供することもできます. + この場所は変数 MASTER_SITE_LOCAL + を使って参照してください. + これについての問い合わせのメールは &a.ports へお願いします. + + + その port の配布ファイルが特に理由もなくしょっちゅう変わる場合には, 配布ファイルをあなたのホームページに置いて - MASTER_SITESの最初に入れてください. + MASTER_SITES + の最初に入れてください. こうすることによって, ユーザ利用する場合に checksum mismatch - エラーが起るのを防ぎ, 我々の ftp - サイトの保守の負担を減らすことができます. もし, master - site がたった一つしかない場合には, + エラーが起るのを防ぎ, FreeBSD の ftp + サイトの保守の負担を減らすことができます. + もし, マスターサイトがたった一つしかない場合には, あなたのサイトにバックアップを置いて MASTER_SITES - の2番目に加えてください. - - もし, - あなたのportに必要ないくつかの追加パッチがインター - ネット上で手に入るのならば, それらも取ってきて, - DISTDIR に置きます. もし, - それらがメイン - のソースのtarファイルとは別のサイトにあっても, - 心配する必要 はありません. - そのような状況にはちゃんと対応できるようになっ ています. - (以下のPATCHFILESの記述 - をご覧ください). - - - - Portの修正 - - 適当なディレクトリにtarファイルを展開して, - FreeBSDの最新の バージョン上で, - 正しくコンパイルできるために必要なあらゆる変 更を施します. - 最終的に処理は自動化するわけですから, 何をおこなっ - たかを注意深く記録しておきましょう. - あなたのport が完成した暁には, ファイルの削除, 追加, - 修正を含むすべての処 理が, - 自動化されたスクリプトやパッチファイルで - おこなえるようになっ ていないといけません. - - もし, あなたの port - のコンパイルやインストールのために必要 - な手作業があまりに多いようならば, Larry Wall の模範的な - Configure - スクリプトでも参考にしたほうがいいかもしれませ ん. - 新しいportsコレクションは, 最小のディスクスペースで, - 個々のportがエンドユーザにできるだけ“プラグ & - プレ - イ”の状態でmakeできることをめざしています. - - - あなたが作成し FreeBSD の ports - に寄付されたパッチファイル, - スクリプトおよびその他のファイルは, - 明示的に記述されている場合 を除いては, - BSDの標準的な著作権条件によりカバーされていると見な - されます. - - - - - パッチをあてる - - port - の過程で追加されたり変更されたファイルは再帰的diffで変 - 更点を取り出すことができます. パッチは適当にまとめて, - patch-xx - という名前のファイルに入れてくだ さい. - xx - はパッチが適用される順番を示します — これらは, - アルファベット順, つまり - aa が 最初, つぎに - ab などとなります. これらのファイル - をPATCHDIRに置いておくと, - 自動的に適用さ れるようになっています. すべてのパッチは - WRKSRC (通常は, portのtarファイルが展 - 開されるところで, makeが実行されるところと同じです) - からの相 対パスになります. - 修正やアップグレードを容易にするため, 2つ - 以上のパッチが同じファイルを修正するのは避けてください. - (例, - patch-aaとpatch-abが共にWRKSRC/foobar.c - を修正する, など.) - - - - コンフィグレーション - - カスタマイズのために追加したいコマンドがあれば, - configure - という名前のスクリプトに入れて - scripts サブディレクトリに置きます. - 上で述べたよ うに, pre-configure - あるいは post-configure という - Makefile - のターゲットおよび/あるいはスクリプトで処理す - ることもできます. - - - - ユーザからの入力の扱い - - もし, そのportがビルド, コンフィグレーション, - インストー ルの際にユーザからの入力を必要とするならば, - Makefile で - IS_INTERACTIVEをセットしてください. - これによって, 深夜, - 自動的にたくさんのportをコンパイルすることが可能にな - ります. 環境変数BATCHがセットされていると - IS_INTERACTIVE - の定義されているportはスキップされ ます (そして, - ユーザがINTERACTIVEという変数をセッ - トすると入力を必要とする port - のみコンパイルされま す). - - もし, 適切なデフォルト設定があるのであれば, - PACKAGE_BUILDING - 変数をチェックして,それが設 定されて いる場合には, - ユーザ入力のスクリプトを起動しないように してください. - こうすることによって, CD-ROM や ftp に 置く - packageを我々が作成することができます. - - - - - - <filename>Makefile</filename> の作成 - - Makefile の作成は非常に単純です. 繰り返しになりますが, - 始める まえに, すでにある例を見てみることをお奨めします. - またこのハ ンドブックにはMakefileのお手本 - があります. それを見て, Makefile内の変数の順番や空行を入れると - ころなどの参考にしてください. そうすると他の人々にも読みやすい - ものとなります. - - では, - Makefile をデザインするときに問題となるところを順に追っ - て見てみましょう. - - - オリジナルのソース - - ソースはDISTDIRに, 標準的なgzipされた - tarファイルとして置かれていますか? そうであれば, 次のステッ - プに進めます. そうでなければ, 変数 - EXTRACT_CMD, - EXTRACT_BEFORE_ARGS, - EXTRACT_AFTER_ARGS, - EXTRACT_SUFX, - DISTFILES - を適当に書き換えないといけません. - どれだけ変更しないといけないかは, あなたのportの - 配布ファイルがどの程度標準からかけはなれているかによりま す. - (最もよくある場合は, gzipではなく普通のcompressコマンド - でtarファイルが圧縮されている場合で, - EXTRACT_SUFX=.tar.Z - とするだけです.) - - 最悪の場合には, 自分で - do-extract ターゲットを作 成して, - デフォルトを上書きすることもできます. しかし, そこま - でする必要があることはめったにないでしょう. - - - - <makevar>DISTNAME</makevar> - - DISTNAME には port - の名前の基幹部分を入れ ます. デフォルトのルールでは, - 配布ファイルのリスト (DISTFILES) は - DISTNAME EXTRACT_SUFX - という名前 になっています. 例えば, - foozolix-1.0.tar.gzの場 合, - 通常のtarファイルだと, - DISTNAME=foozolix-1.0 のようになります. - - さらにデフォルトのルールでは, tarファイルは - work/DISTNAME - というサブディレクトリ に展開されることを仮定しています, - 例えば work/foozolix-1.0/ - といった具合いです. - - これらの動作はもちろんすべて変更可能です. - デフォルトのルー ルは最も標準的な場合を仮定しているだけです. - まず, port が複 数の配布ファイルを必要とするときには, - 単に明示的に DISTFILESを設定してください. - もし, DISTFILES - の一部だけが実際に展開される場合 には, - それらをEXTRACT_ONLY に設定してくだ さい. - この変数が定義されている場合には, 展開時に - DISTFILESに優先して利用されます. - 残りのファ イルもDISTDIRに取ってきますが, - 展開時に - はなにもせずに後で使うためにそのまま置いておかれます. - - - - - <makevar>PKGNAME</makevar> - - もし, DISTNAME が我々の package - の名前についてのガイドライン - に沿ったものでない場合には, PKGNAME - にもっと良い名前を設定してください. - 詳細は上記のガイドラインを参照してください. - - - - - <makevar>CATEGORIES</makevar> (分類) - - 完成した package の実体は - /usr/ports/packages/All に置かれます. - また, 1つかそれ以上の - /usr/ports/packages - のサブディレクトリからのシンボリッ クリンクが作られます. - それらのサブディレクトリの名前が - CATEGORIES - という変数によって指定されます. これは, - ユーザがFTPサイトやCD-ROMのpackageの山を渡り歩 - くことを容易にするためです. 現在存在する カテゴリを見て, そ - のportに適したもを選んでください. - - このリストは, この port が port tree のどこに import - されるかも決定します. 2つ以上のカテゴリを指定した場合には - 最初のカテゴリで指定されるサブディレクトリに置かれること - になります. 適切なカテゴリを選ぶ方法については, カテゴリ - の節を参照してください. - - もしその port - が本当に現存するすべてのものとは異なったものを必要としている場合には, - 新しいカテゴリ名を作ることもできます. その際には, &a.ports - 宛てに新しいカテゴリ名を提案する - メールを送ってください. - - カテゴリ名については, - なんのエラーチェックも行なわれません.ミスタイプがあっても - make package はなにも考えずに - 新しいディレクトリを作ってしまいますので, - 注意してください. - - - - <makevar>MASTER_SITES</makevar> - - オリジナルの配布ファイルを指し示す FTP または HTTP の - URL のディ レクトリ部分までを - MASTER_SITES に記録しま す. スラッシュ - (/) を最後につけることをお忘れなく. - 配布ファイルがシステム上に存在しないときに, - makeマクロは FETCH - でこの変数に指定されたサイトから取っ てきます. - - 複数の, - できれば異なる大陸のサイトをこのリストに入れておく - ことが推奨されています. これによって, 広域ネットワークにトラ - ブルがあった場合でも成功する可能性が高くなります. - 私たちはさら に, 自動的に最も近いマスタサイトを検出して, - そこから取って くるメカニズムの導入を計画しています. - - オリジナルのtar ファイルが, X-contrib, GNU, Perl CPAN, - TeX CTAN または Linux Sunsite - などの有名なアーカイブにある場合には, - MASTER_SITE_XCONTRIB, - MASTER_SITE_GNU, - MASTER_SITE_PERL_CPAN, - MASTER_SITE_TEX_CTAN および - MASTER_SITE_SUNSITE を利用することで, - 簡単にこれらのサイトを 指定することができます. あとは - MASTER_SITE_SUBDIR にアーカイ - ブ内でのパスを指定するだけです. 以下に例を示します. - - + の 2 番目に加えてください. + + あなたの port に必要ないくつかの追加パッチがインターネット上で手に入るのならば, + それらも取ってきて + DISTDIR に置きます. + それらがメインのソースの tar + ファイルとは別のサイトにあっても心配する必要はありません. + そのような状況にはちゃんと対応できるようになっています + (以下の PATCHFILES + の記述をご覧ください). + + + + port の修正 + + 適当なディレクトリに tar ファイルを展開し, + FreeBSD の最新のバージョン上で正しくコンパイルできるために必要なあらゆる変更を施します. + 最終的に処理は自動化するわけですから, + 何を行なったかを注意深く記録しておきましょう. + あなたの port が完成した暁には, ファイルの削除, 追加, + 修正を含むすべての処理が自動化されたスクリプトやパッチファイルで行なえるようになっていなければなりません. + + もし, あなたの port のコンパイルやインストールのために必要な手作業があまりに多いようならば, + Larry Wall の模範的な Configure + スクリプトでも参考にしたほうが良いかも知れません. + 新しい Ports Collection は最小のディスクスペースで, + 個々の port がエンドユーザにできるだけ + プラグ & プレイ + の状態で make できることを目指しています. + + + あなたが作成し FreeBSD の ports + に寄付されたパッチファイル, + スクリプトおよびその他のファイルは, + 明示的に記述されている場合を除いて + BSD の標準的な著作権条件によりカバーされていると見なされます. + + + + + パッチの適用 + + port + の過程で追加されたり変更されたファイルは, + 再帰的 diff で変更点を取り出すことができます. + パッチは適当にまとめて + patch-xx + という名前のファイルに入れてください. + xx + はパッチが適用される順番を示します + — これらはアルファベット順, + つまり + aa が最初, + 次に + ab などとなります. + これらのファイルは + PATCHDIR + に置いておくと自動的に適用さ れるようになっています. + すべてのパッチは + WRKSRC + (通常は, port の tar ファイルが展開されるところで, + make が実行されるところと同じです) + からの相対パスになります. + 修正やアップグレードを容易にするため, + 2 つ以上のパッチが同じファイルを修正するのは避けてください + (たとえば, + patch-aa と patch-ab が共に + WRKSRC/foobar.c を修正するなど). + + + + コンフィグレーション + + カスタマイズのために追加したいコマンドがあれば, + configure + という名前のスクリプトに入れて + scripts サブディレクトリに置きます. + 上で述べたように, pre-configure + あるいは post-configure という + Makefile + のターゲット, + スクリプトで処理することもできます. + + + + ユーザからの入力の扱い + + もし, その port がビルド, + コンフィグレーション, + インストールの際にユーザからの入力を必要とするならば, + Makefile で + IS_INTERACTIVE + をセットしてください. + これによって深夜, + 自動的にたくさんの port + をコンパイルすることが可能になります. + 環境変数BATCHがセットされていると + IS_INTERACTIVE + の定義されている port はスキップされます + (そして, + ユーザがINTERACTIVE + という変数をセットすると入力を必要とする + port のみコンパイルされます). + + もし, 適切なデフォルト設定があるのであれば, + PACKAGE_BUILDING + 変数をチェックして,それが設定されている場合には, + ユーザ入力のスクリプトを起動しないようにしてください. + こうすることによって, CDROM や ftp に 置く + package をわたしたちが作成することができます. + + + + + + <filename>Makefile</filename> の作成 + + Makefile の作成は非常に単純です. + 繰り返しになりますが, 始めるまえにすでにある例を見てみることをお奨めします. + またこのハンドブックには + Makefile + のサンプルがあります. + それを見て, Makefile + 内の変数の順番や空行を入れるところなどの参考にしてください. + そうすると他の人々にも読みやすいものとなります. + + では, + Makefile + を設計するときに問題となるところを順に追って見てみましょう. + + + オリジナルのソース + + ソースは + DISTDIRに標準的な + gzip された tar ファイルとして置かれていますか? + そうであれば, 次のステップに進めます. + そうでなければ, 変数 + EXTRACT_CMD, + EXTRACT_BEFORE_ARGS, + EXTRACT_AFTER_ARGS, + EXTRACT_SUFX, + DISTFILES + を適当に書き換えないといけません. + どれだけ変更しないといけないかは, + あなたの port の配布ファイルがどの程度標準からかけはなれているかによります + (最もよくある場合は + gzip ではなく普通の compress コマンド + で tar ファイルが圧縮されている場合で + EXTRACT_SUFX=.tar.Z + とするだけです). + + 最悪の場合には, 自分で + do-extract + ターゲットを作成して, + デフォルトを上書きすることもできます. + しかし, そこまでする必要があることはめったにないでしょう. + + + + <makevar>PORTNAME</makevar> および + <makevar>PORTVERSION</makevar> + + DISTNAME には + port の名前の基幹部分を入れ, + PORTVERSION + には port のバージョン番号を入れます. + + + + <makevar>PKGNAMEPREFIX</makevar> および + <makevar>PKGNAMESUFFIX</makevar> + + 二つのオプション変数 + PKGNAMEPREFIX および + PKGNAMESUFFIX は, + PORTNAME および + PORTVERSION と結合され, + ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION} + として + PKGNAME を定義します. + この時, 適切な package + 名を選ぶためのガイドラインに沿っているか確認してください. + 特に, ハイフン (-) を + PORTVERSION + に含めることは禁止されています. + また, package 名に + language- もしくは + compiled.specifics + 部分が含まれる場合, それぞれ + PKGNAMEPREFIX と + PKGNAMESUFFIX を使用します. + これらを PORTNAME の一部として含めてはいけません. + + + + <makevar>DISTNAME</makevar> + + DISTNAME は製作者が決めたソフトウェアの名前です. + DISTNAME はデフォルトで + ${PORTNAME}-${PORTVERSION} となりますが, + 必要に応じて書き換えることができます. + DISTNAME は二つの場所でしか使われません. + 一つ目は配布ファイルリスト + (DISTFILES) + のデフォルト + ${DISTNAME}${EXTRACT_SUFX} で, + 二つ目は配布ファイルが展開されるサブディレクトリ WRKSRC + のデフォルト work/${DISTNAME} です. + + PKGNAMEPREFIX と + PKGNAMESUFFIX は + DISTNAME に影響を与えないことに注意してください. + + + + <makevar>CATEGORIES</makevar> + + 完成した package の実体は + /usr/ports/packages/All に置かれます. + また, 一つかそれ以上の + /usr/ports/packages + のサブディレクトリからのシンボリックリンクが作られます. + それらのサブディレクトリの名前が + CATEGORIES + という変数によって指定されます. + これは, + ユーザが FTPサイトや CDROM の package + の山を渡り歩くことを容易にするためです. + 現在存在するカテゴリを見て, + その port に適したもを選んでください. + + このリストは, この port が port ツリーのどこに + import されるかも決定します. + 二つ以上のカテゴリを指定した場合には, + 最初のカテゴリで指定されるサブディレクトリに置かれることになります. + 適切なカテゴリを選ぶ方法については, + カテゴリの節を参照してください. + + もしその port + が本当に現存するすべてのものとは異なったものを必要としている場合には, + 新しいカテゴリ名を作ることもできます. + その際には, &a.ports; 宛てに新しいカテゴリ名を提案するメールを送ってください. + + + カテゴリ名については, + 何のエラーチェックも行なわれません. + ミスタイプがあっても + make package + は何も考えずに新しいディレクトリを作ってしまいますので注意してください. + + + + + <makevar>MASTER_SITES</makevar> + + オリジナルの配布ファイルを指し示す + FTP または HTTP の URL のディレクトリ部分までを + MASTER_SITES に記録します. + スラッシュ + (/) + を最後につけることをお忘れなく. + + 配布ファイルがシステム上に存在しないときに, + make + マクロは + FETCH + でこの変数に指定されたサイトから取ってきます. + + 複数の, + できれば異なる大陸のサイトをこのリストに入れておくことが推奨されています. + これによって, + 広域ネットワークにトラブルがあった場合でも成功する可能性が高くなります. + わたしたちはさらに, + 自動的に最も近いマスタサイトを検出して, + そこから取ってくるメカニズムの導入を計画しています. + + オリジナルの + tar ファイルが, X-contrib, GNU, Perl CPAN, TeX CTAN + または Linux Sunsite などの有名なアーカイブにある場合には, + MASTER_SITE_XCONTRIB, + MASTER_SITE_GNU, + MASTER_SITE_PERL_CPAN, + MASTER_SITE_TEX_CTAN および + MASTER_SITE_SUNSITE を利用することで, + 簡単にこれらのサイトを指定することができます. + あとは + MASTER_SITE_SUBDIR + にアーカイブ内でのパスを指定するだけです. + 以下に例を示します. + + MASTER_SITES= ${MASTER_SITE_XCONTRIB} MASTER_SITE_SUBDIR= applications - ユーザは/etc/make.conf中で - MASTER_SITE_* 変数を設定 - することによって, デフォルトの FTP サイトではなく, これらの - 有名なアーカイブの - ミラーの中で好みのものを使用することが可能 です. - + ユーザは/etc/make.conf中で + MASTER_SITE_* 変数を設定することによって, + デフォルトの FTP サイトではなくこれらの有名なアーカイブのミラーの中で, + 好みのものを使用することが可能です. + - - <makevar>PATCHFILES</makevar> + + <makevar>PATCHFILES</makevar> + + もし, + オリジナルの配布ファイル以外にも FTP か HTTP + で手に入るパッチが必要な場合には, + PATCHFILES にファイル名を, + PATCH_SITES + にサイトとディレクトリの名前を + MASTER_SITES + と同様に設定してください. + + そのパッチ内のファイル名がソースツリーの一番上のディレクトリ + (WKRSRC) + からの相対パスになっていない場合には, + PATCH_DIST_STRIPを指定してください. + たとえば, パッチ内のファイル名にすべて余計な + foozolix-1.0/ + がついている場合には, + PATCH_DIST_STRIP=-p1 + としてください. + + これらのパッチは圧縮されていても大丈夫です. + ファイル名が + .gz.Z + で終わる場合には自動的に復元されるようになっています. + + もしパッチが, 文書などその他のファイルと一緒に + gzip された tarファイルで配布されている場合には, + 単純に + PATCHFILES + を使うことはできません. + このような場合には, このパッチの tar ファイルの名前と場所を + DISTFILES と + MASTER_SITES に加えます. それから, + pre-patch + ターゲットでパッチコマンドを走らせるか, パッチファイルを + PATCHDIR ディレクトリに + patch-xx + という名前でコピーするかして, + パッチを適用するようにします. + + + 普通の gzip か compress された tar ファイルであれば, + 通常のソースファイルと一緒にその時までに展開されていますので, + 明示的に展開する必要はありません. + もし, 後者の方法を使用する場合には, + すでにそのディレクトリにある何かを上書きしないように注意する必要があります. + さらに pre-clean + ターゲットにコピーしたパッチファイルを削除するコマンドを追加するのを忘れないでください. + + + + + <makevar>MAINTAINER</makevar> + + あなたのメールアドレスをここに入れてください. + お願いします. + :-) + + 保守担当者(maintainer)の役割についての詳細は, + Makefile 中の MAINTAINER + の節をご覧ください. + + + + 依存関係 + + プログラムが他の port に依存する場合には, + 必要なものが自動的に作られるようにすることができます. + そのために, 以下の + 5 つの変数が用意されています. + よくあるケースのためにあらかじめ設定された依存変数や, + いくつかの依存関係の制御のための変数があります. + + + <makevar>LIB_DEPENDS</makevar> + + port + が必要とする非標準の共有ライブラリをこの変数で指定します. + これは + lib:dir:target + という組のリストで, そのうち + lib が共有ライブラリの名前, + dir がそのライブラリが見つからない場合にインストールする + port のあるディレクトリ, + target がそのディレクトリで呼ばれるターゲットです. + たとえば, - もし, - オリジナルの配布ファイル以外にもFTPかHTTPで手に入る - パッチが必要な場合には, PATCHFILESにファ - イル名を, PATCH_SITESにサイトとディレクト - リの名前を MASTER_SITES - と同様に設定してく ださい. - - そのパッチ内のファイル名ががソースツリーの - 一番上のディレク トリ (WKRSRC) - からの相対パスになっていな い場合には, - PATCH_DIST_STRIPを指定してく ださい. - 例えば, パッチ内のファイル名にすべて余計な - foozolix-1.0/ がついている場合には, - PATCH_DIST_STRIP=-p1としてください. - - これらのパッチは圧縮されていても大丈夫です. ファイル名が - .gz.Z - で終わる場合には自動的に復元 - されるようになっています. - - もしパッチが, 文書などその他のファイルと一緒に gzip - された tarファイルで配布されている場合には,単純に - PATCHFILES を使うことはできません. - このような場合には, このパッチの tar ファイルの名前と場所を - DISTFILES と - MASTER_SITES に加えます. それから, - pre-patch ターゲットで, - パッチコマンドを走らせるか, パッチファイルを - PATCHDIR ディレクトリに - patch-xx - という名前でコピーするかして, - パッチを適用するようにします. - - - 普通の gzip か compress された tar ファイルであれば, - 通常のソースファイルと一緒にその時までに - 展開されていますので, 明示的に展開する必要はありません. - もし, 後者の方法を使用する場合には, - すでにそのディレクトリにある なにかを上書きしないように, - 注意する必要があります. さらに, - pre-clean - ターゲットにコピーしたパッチファイル - を削除するコマンドを追加するのを忘れないでください. - - - - - <makevar>MAINTAINER</makevar> - - あなたのメールアドレスをここに入れてください. - お願いします. :-) - - 保守担当者(maintainer)の責任についての詳細は, Makefile 中の - MAINTAINER の節をご覧ください. - - - - 依存関係 - - このプログラムが他のportに依存する場合には, 必要なものが - 自動的に作られるようにすることができます. そのために, 以下の - 5つの変数が用意されています. - よくあるケースのためにあらかじめ設定された依存変数や, - いくつかの依存関係の制御のための変数があります. - - - <makevar>LIB_DEPENDS</makevar> - - Port が必要とする非標準の共有ライブラリを - この変数で指定します. これは - lib: - dir: - target という組のリストで, - うち lib - が共有ライブラリの名前, そして - dir - がそのライブラリが見つからない場合にインストールする port - のあるディレクトリで, target - はそのディレクトリで呼ばれるターゲットです. 例えば, - LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg:install - と指定してあれば, - まずメジャーバージョンが9のjpegライブ - ラリがあるかどうか確認し, ない場合にはportsツリーの中の - graphics/jpeg - というサブディレクトリに移動し, そこ - でコンパイルとインストールを行ないます. - target の 部分は, - DEPENDS_TARGET (デフォルトは - install) - と等しいときには省略できます. - - - 前半の lib 部分は - ldconfig -r | grep -wF - への引数になります. - この変数には正規表現を入れられません. - - - - - この依存関係は2度チェックされます. まず - extract ターゲットで, 次に - install でチェックされます. - (これは, その port を作成するマシンとインストールする - マシンが違う場合でも, きちんとそのライブラリが利用できる - ことを確認するためです.) また, 依存するもの名前は package - の中にも含まれますので, ユーザのシステムに存在しなければ, - pkg_add が自動的にインストールします. - - - - - <makevar>RUN_DEPENDS</makevar> - - Port - を使用する際に必要となるファイルまたはプログラムがある - ときにはこの変数で指定します. これは - path: - dir - :target とい う組のリストで, - path - がファイルまたはプログラムの 名前, そして - dir - がそれが見つからない場合に作成する ためのディレクトリ名で - target - はそのディレクトリで呼ばれるターゲットです. - path の最初の文字がスラッ シュ - (/) の場合にはファイルかディレクトリ - とみなし, その存在を test -e - でチェックします; そうでない場合には - 実行可能であると仮定し, which -s - を使って そのプログラムがユーザのサーチパス上に - あるかどうか確認します. - - 例えばMakefileに以下のように書いてあるとします. - - + + + LIB_DEPENDS= jpeg.9:${PORTSDIR}/graphics/jpeg:install + + + と指定してあれば, まずメジャーバージョンが 9 の jpeg + ライブラリがあるかどうか確認し, + ない場合には ports ツリーの中の + graphics/jpeg + というサブディレクトリに移動し, + そこでコンパイルとインストールを行ないます. + target の部分は, + DEPENDS_TARGET + (デフォルトは install) + と等しいときには省略できます. + + + 前半の lib 部分は + ldconfig -r | grep -wF + への引数になります. + この変数には正規表現を入れられません. + + + + + この依存関係は 2 度チェックされます. まず + extract ターゲットで, 次に + install でチェックされます + (これは, その port を作成するマシンとインストールする + マシンが違う場合でも, きちんとそのライブラリが利用できる + ことを確認するためです). また, 依存するもの名前は package + の中にも含まれますので, ユーザのシステムに存在しなければ, + pkg_add が自動的にインストールします. + + + + + <makevar>RUN_DEPENDS</makevar> + + port + を使用する際に必要となるファイル, + またはプログラムがあるときにはこの変数で指定します. + これは + path:dir:target + という組のリストで, + path + がファイルまたはプログラムの名前, そして + dir + がそれが見つからない場合に作成するためのディレクトリ名で + target + はそのディレクトリで呼ばれるターゲットです. + path の最初の文字がスラッシュ + (/) の場合にはファイルかディレクトリ + とみなし, その存在を test -e + でチェックします. + そうでない場合には実行可能であると仮定し, + which -s + を使ってそのプログラムがユーザのサーチパス上にあるかどうか確認します. + + たとえば Makefile に以下のように書いてあるとします. + + RUN_DEPENDS= ${PREFIX}/etc/innd:${PORTSDIR}/news/inn \ wish8.0:${PORTSDIR}/x11-toolkits/tk80 - まず, /usr/local/etc/innd - というファイルかディレクトリが存在 するか確認し, - ない場合にはportsツリーの中の - news/inn - というサブディレクトリから作られます. ま た, - wish8.0 - というプログラムがユーザのサーチパス中 にあるかどうか探し, - ない場合には同じくportsツリーの - x11-toolkits/tk80 - というサブディレクトリから作られます. + まず, /usr/local/etc/innd + というファイルかディレクトリが存在するか確認し, + ない場合には ports ツリーの中の + news/inn + というサブディレクトリから作られます. + また, + wish8.0 + というプログラムがユーザのサーチパス中にあるかどうか探し, + ない場合には同じく ports ツリーの + x11-toolkits/tk80 + というサブディレクトリから作られます. + + + この例で, innd + は実際にはプログラムです. + このように, + プログラムであっても標準のサーチパス以外のところにあるようなものの場合には, + 絶対パスで指定してください. + + + この依存関係は + install + ステージのはじめでチェックされます. + また, package を作る際に必要となる + port の package 名が記録され + pkg_add + を使用するとユーザのシステムに存在しない場合には自動的にそちらの + package もインストールされるようになります. + target の部分は, + DEPENdS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>BUILD_DEPENDS</makevar> + + この変数はビルドに必要なプログラムまたはファイル名を指定します. + RUN_DEPENDSと同様に, これは + path:dir:target + という組のリストです. たとえば, - - この例で, innd - は実際にはプログラムです; この ように, - プログラムであっても標準のサーチパス以外のところに - あるようなものの場合には, - 絶対パスで指定してください. - + BUILD_DEPENDS=unzip:${PORTSDIR}/archivers/unzip + + は + unzip という名前のプログラムを探し, + 見つからない場合には + archivers/unzip + サブディレクトリで作れという意味になります. + + + ここで言うビルドは, + ファイルの展開からコンパイルまでのすべてを意味します. + この依存関係は + extract + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + + <makevar>FETCH_DEPENDS</makevar> + + この変数は, + portを取ってくるのに必要なファイルまたはプロ + グラムを指定するのに使います. 上の二つと同様に, これは + path:dir:target + という組のリストです. たとえば, - この依存関係はinstall - ステージのはじめでチェック されます. また, - packageを作る際に必要となるportのpackage名 が記録され, - pkg_addを使用すると - ユーザのシステムに存在しない場合には自動的にそちら - のpackageもインストールされるようになります. - target の部分は, - DEPENdS_TARGET - と同じ場合には省略可能です. - - - - - <makevar>BUILD_DEPENDS</makevar> - - Port - のコンパイルに必要なファイルまたはプログラムがある - ときは, この変数で指定してください. - RUN_DEPENDSと同 様に, これは - path: - dir - :target - という組のリストです. 例 えば, - - -BUILD_DEPENDS= unzip:${PORTSDIR}/archivers/unzip - - は - unzip という名前のプログラムを探し, - 見つから - ない場合にはarchivers/unzip - サブディレクトリで作 れという意味になります. - - - ここでは “コンパイル” - と一口にいいましたが, この変数は実際 - にはファイルの展開から実際のコンパイル・リンクまで - 全部をま とめて面倒を見てくれます. この依存関係は - extract - ステージからチェックされます. - target の部分は - DEPENDS_TARGET - と同じ場合には省略可能です. - - - - - <makevar>FETCH_DEPENDS</makevar> - - この変数は, - portを取ってくるのに必要なファイルまたはプロ - グラムを指定するのに使います. 上の二つと同様に, これは - path: - dir - :target - - という組のリストです. 例えば, - - + + FETCH_DEPENDS= ncftp2:${PORTSDIR}/net/ncftp2 - としておけば, ncftp2 - という名前のプログラムを探 し, - 見つからない場合にはnet/ncftp2 - サブディレク トリにいってインストールします. + としておけば, ncftp2 + という名前のプログラムを探 し, + 見つからない場合には + net/ncftp2 + サブディレクトリにいってインストールします. + + この依存関係は + fetch + ステージからチェックされます. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + <makevar>DEPENDS</makevar> + + 上記の四つのいずれにもあてはまらないような依存関係がある場合, + または他の port + がインストールされれているだけではなくソースが展開されている必要がある場合には, + この変数を使います. + これは上記の四つと違って特に確認するものがありませんので, + dir:target + という形式のリストになります. + target の部分は + DEPENDS_TARGET + と同じ場合には省略可能です. + + + + よくある依存関係を表す変数 + + もし ports が X Window System を必要とするのであれば, + USE_XLIB=yes を定義してください + (これは USE_IMAKE が定義されていれば + 自動的に定義されます). + BSD make の代りに + GNU make を必要とする場合には + USE_GMAKE=yes を, + 動作するのに GNU autoconf を必要とする場合には + USE_AUTOCONF=yes を, + 最新の qt toolkit を使用する場合には + USE_QT=yes を, + perl 言語のバージョン 5 を必要とする場合には + USE_PERL5=yes を定義してください + (特に最後のは重要です. FreeBSD のいくつかの + バージョンでは基本システムに perl5 を含みますが, + 他のものは含んでいません). + + + + 依存関係に関する注意 + + 上で述べたように, 依存する ports + が必要になったときに呼ばれるデフォルトのターゲットは + DEPENDS_TARGET で, + そのデフォルトは install です. + これはユーザの使用する変数で port の + Makefile + で定義されるものではありません. + もしあなたの port が特別な方法で依存関係を扱う必要がある場合には, + DEPENDS_TARGET を再定義するのではなく + *_DEPENDS 変数の + :target + の部分を利用してください. + + make clean + と入力したときには依存する port も自動的に clean されます. + もしそうしたくない場合には + NOCLEANDEPENDS + を環境変数として設定してください. + + 無条件に他の port に依存させるには, 特別に + nonexistent という文字列を + BUILD_DEPENDS あるいは + RUN_DEPENDS + の最初のフィールドに使用してください. + これは, 他の port のソースが必要なときのみ使用してください. + ターゲットも指定することによって, + コンパイルの時間を節約することができます. + たとえば, - この依存関係は fetch - ステージからチェックされます. - target の部分は - DEPENDS_TARGET - と同じ場合には省略可能です. - - - - <makevar>DEPENDS</makevar> - - 上記の四つのいずれにもあてはまらないような - 依存関係がある場 合, または他の port - がインストールされれているだけではなく, - ソースが展開されている必要がある場合にはこの変数 - を使います. これは - dir - :target という形式のリスト - になります. 上記の四つと違って特に - “確認”するものがありませんので. - - - - よくある依存関係を表す変数 - - もし ports が X Window System を必要とするのであれば, - USE_XLIB=yes を定義してください. - (これは USE_IMAKE が定義されていれば - 自動的に定義されます) - BSD make の代りに - GNU make を必要とする場合には, - USE_GMAKE=yes を定義. 動作するのに GNU - autoconf を必要とする場合には, - USE_AUTOCONF=yes を定義. 最新の qt - toolkit を使用 する場合には USE_QT=yes - を定義. perl 言語のバージョン5 を必要とする場合には, - USE_PERL5=yes を定義してください. - (特に最後のは重要で, FreeBSD のいくつかの - バージョンでは基本システムに perl5 を含みますが, - 他のものは含んでいません.) - - - - 依存関係に関する注意 - - 上で述べたように, 依存する ports - が必要になったときに呼ばれるデフォルトのターゲットは - DEPENDS_TARGET で, - そのデフォルトは install です. これは, - ユーザの使用する変数で, port の - Makefile - で定義されるものではありません. もし, - あなたのportが特別な方法で, 依存関係を扱う必要が - ある場合には, DEPENDS_TARGET - を再定義するのではなく, *_DEPENDS - 変数の :target - の部分を利用してください. - - make clean とタイプしたときには, - 依存する port も自動的に clean されます. - もしそうしたくない場合には, - NOCLEANDEPENDS - を環境変数として設定してください. - - 無条件に他の port に依存させるには, 特別に - nonexistent という文字列を - BUILD_DEPENDS あるいは - RUN_DEPENDS - の最初のフィールドに使用してください. これは, 他の port - のソースが必要なときのみ使用してください. target - も指定することによって, - コンパイルの時間を節約することができます. 例えば, - - + + BUILD_DEPENDS= /nonexistent:${PORTSDIR}/graphics/jpeg:extract - これは, 常に JPEG port の directory - に行きソースの展開を行ないます. + これは, 常に JPEG port + のディレクトリに行きソースの展開を行ないます. - あなたがやりたいことが他の方法ではできない場合以外は, - DEPENDS を使わないでください. - これは常に 他の port - の作成を行い(さらにデフォルトでインストール を行い), - package も作成します. もし本当にこれがあなたの - やりたいことでしたら, 代りにこれを - BUILD_DEPENDS と - RUN_DEPENDS で書くことをお勧めします - — 少なくとも意図が明確になります. - - + あなたがやりたいことが他の方法ではできない場合以外は + DEPENDS を使わないでください. + これは常に 他の port + の作成を行い(さらにデフォルトでインストールを行い), + package も作成します. + もし本当にこれがあなたのやりたいことでしたら, + 代りにこれを + BUILD_DEPENDS と + RUN_DEPENDS で書くことをお勧めします + — 少なくとも意図が明確になります. + + - - コンパイル時の特別な指定 + + ビルドのメカニズム + + GNU make を使う場合には, + USE_GMAKE=yes と指定してください. + port に GNU configure + が含まれている場合には, + GNU_CONFIGURE=yes を使います(これは, + HAS_CONFIGURE も意味します). + configure に追加の引数 (デフォルトでは, + GNU configure では + --prefix=${PREFIX}, + GNU でない configure では空) + を渡したい場合には追加部分を + CONFIGURE_ARGS で指定してください. + そのパッケージが autoconf + を使用する場合には + USE_AUTOCONF=yes + を使います. + これは GNU_CONFIGURE も意味し, + configure の前に + autoconf を実行します. + + + X Window Systemのアプリケーションなど, + imakeを 使って + Imakefile から + Makefile を作成する + port の場合には USE_IMAKE=yes を指定してください. + コンフィグレーションステージで自動的に + xmkmf -a が実行されます. + もし フラグが問題をもたらすなら, + さらに + XMKMF=xmkmfとしてください. + もし, port が imake + を使用するけれども + install.man + ターゲットがない場合には, + NO_INSTALL_MANPAGES=yes + を指定してください. + ついでに, その port のオリジナルの作者を探し出して八つ裂きにすると + いいでしょう. + (-_-#) + + port の + Makefile が + all + 以外のものをメインのターゲットとしている場合には + ALL_TARGET でそれを指定してください. + install と + INSTALL_TARGET も同様です. + + - GNUのmakeを使う場合には, - USE_GMAKE=yes と指定してください. Port に - GNU の configure が含まれ ている場合には, - GNU_CONFIGURE=yes を使います(これは, - HAS_CONFIGURE も意味します). - configure に追加の引数 (デフォルトでは, - GNU の configure では - --prefix=${PREFIX}, GNUでない - configure では空) - を渡したい場合には追加部分を - CONFIGURE_ARGS で指定してください. - そのパッケージが autoconf - を使用する場合には, USE_AUTOCONF=yes - を使います. これは, GNU_CONFIGURE - も意味し, configure の前に - autoconf を実行します. - - - X Window Systemのアプリケーションなど, - imakeを 使って - Imakefile から - Makefile を作成するportの場合には - USE_IMAKE=yes を指定してください. - コンフィグレー ションステージで自動的にxmkmf - -a が実行されます. も し - フラグが問題をもたらすなら, さらに - XMKMF=xmkmfとしてください. - - もし, port が imake - を使用するけれども, install.man - ターゲットがない場合には, - NO_INSTALL_MANPAGES=yes - を指定してください. ついでに, その port - のオリジナルの作者を探し出して八つ裂きにすると - いいでしょう.:-> - - Portの Makefile が - all 以外のものをメインのター - ゲットとしている場合には, ALL_TARGET でそ - れを指定してください. install と - INSTALL_TARGET も同様です. - - もし, port の元の Makefile が - all - 以外のターゲットをメインのターゲットとしている場合には, - ALL_TARGET - をそれに合わせて設定してください. - install と - INSTALL_TARGET についても同様です. - - - - - - <makevar>NO_INSTALL_MANPAGES</makevar> - - あなたの port がimakeは使うものの - install.man - ターゲットを持っていない場合, - NO_INSTALL_MANPAGES=yes - を指定してください. つい でに, - 作者を探し出して八つ裂きにするといいでしょ う. (-_-#) - - - - - 特別な配慮 - - Portを作成する場合, - 考慮しなくてはいけないことがさらにいくつかあります. - この節では, - それらのうちもっともありがちなものについて説明します. - - - <command>ldconfig</command> - - 共有ライブラリをインストールするときには, - 共有ライブラリのキャッシュを更新するために port の - Makefile の - post-installtarget - から${LDCONFIG} -m - を走らせてください. - このコマンドの引数は共有ライブラリのインストールしてある - ディレクトリ (通常 - PREFIX/lib) - です. - - また, pkg/PLIST@exec - /sbin/ldconfig -m@unexec - /sbin/ldconfig -R の組を入れて, package - をインストールした場合にも共有ライブラリがすぐ使え, - 削除の際にも, システムがまだライブラリが存在すると - 誤認しないようにしてください. - この行は共有ライブラリを指定する行のすぐ後に - 書くのがよいでしょう: - - + + 特別な配慮 + + port を作成する場合, + 考慮しなくてはいけないことがさらにいくつかあります. + この節では, + それらのうちもっともありがちなものについて説明します. + + + <command>ldconfig</command> + + 共有ライブラリをインストールするときには, + 共有ライブラリのキャッシュを更新するために port の + Makefile の + post-install + ターゲットから + ${LDCONFIG} -m + を実行してください. + このコマンドの引数は共有ライブラリのインストールしてあるディレクトリ + (通常 + PREFIX/lib) + です. + + また, pkg/PLIST に + @exec /sbin/ldconfig -m と + @unexec /sbin/ldconfig -R の組を入れて, + package をインストールした場合にも共有ライブラリがすぐ使え, + 削除の際にもシステムがまだライブラリが存在すると誤認しないようにしてください. + この行は共有ライブラリを指定する行のすぐ後に書くのがよいでしょう. + + lib/libtvl80.so.1 @exec /sbin/ldconfig -m %D/lib @unexec /sbin/ldconfig -R - 絶対に引数なしでただ - ldconfig とだけ書いてある行を - Makefile や - pkg/PLIST ファイルに入れないでください. - このコマンドを実行すると, 共有ライブラリのキャッシュが - /usr/lib の内容のみとなり, - ユーザのマシンにさまざまな問題をもたらします (「ぎゃぁ! - このportをインストールしたら xinit - が使えなくなっちゃった!」). この掟を破った者は, - 永久に地獄の底で苦しみ続けるように, - 閻魔様に頼んでおきます. - - + 絶対に引数なしでただ + ldconfig とだけ書いてある行を + Makefile や + pkg/PLIST ファイルに入れないでください. + このコマンドを実行すると, 共有ライブラリのキャッシュが + /usr/lib の内容のみとなり, + ユーザのマシンにさまざまな問題をもたらします + (「ぎゃぁ! この port をインストールしたら xinit + が使えなくなっちゃった!」). + この掟を破った者は, 永久に地獄の底で苦しみ続けるように, + 閻魔様に頼んでおきます. + + - - ELF 対応 + - - - - ELF のリンカを満足させるためには, - libfoo.so から - libfoo.so.N - へのシンボリックリンクを作る必要があります. これは, - PLIST にも加えなくては いけませんし, - a.out の場合でも害にはならないので (一部の port - ではダイナミックリンクローディングのために - 必要でもあります), PORTOBJFORMAT - の設定を気にせずに, - ただ単純にリンクを作成してください. - - - - <makevar>LIB_DEPENDS</makevar> - - すべての port の Makefile を編集して, - LIB_DEPENDS - からマイナー番号を除去する必要があり, - 正規表現のサポートも除去する必要があります. (例えば, - foo\\.1\\.\\(33|40\\) から - foo.2) マッチングは grep - -wF を使って行われます. - - - - <filename>PLIST</filename> - - PLIST は, a.out - のマイナー番号が0であれば, 短い (ELFの) - 共有ライブラリの名前を含み, さもなくば長い (a.outの) - 名前を含んでいる必要があります. - bsd.port.mk は 自動的に, - PORTOBJFORMATaout - であれば, .0 を - 短い共有ライブラリの名前の行に付け加え, - PORTOBJFORMATelf - であれば, マイナー番号を - 長い共有ライブラリの名前から削除します. - - ELF システムで 2 - つのバージョン番号を持つ共有ライブラリを インストールしたり, - aout システムで 1 - つのバージョン番号しか持たない共有ライブラリを - インストールするのが避けられない場合 - (例えば他のオペレーティングシステム用の - 互換ライブラリをインストールする port など), - NO_FILTER_SHLIBS 変数を定義すれば, - 前節で説明されている PLIST - 編集の機能が停止されます. - - - - <literal>ldconfig</literal> - - - Makefile 中の ldconfig - の行は以下のようになります. - - + この変数を使って, port の make + の過程で何をすべきかを決定すべきですが, + もし port の configure スクリプトが元々 + ELF システムを自動的に検出するのであれば, + PORTOBJFORMAT + を参照する必要はありません. + + + + 共有ライブラリの作成 + + 以下は, a.out と ELF + での共有ライブラリの扱いの違いです. + + + + 共有ライブラリのバージョン + + ELF の共有ライブラリは + libfoo.so.M + という名前になっていなければなりません. + ここで M + は単一のバージョン番号を表します. + 一方 a.out のライブラリは + libfoo.so.M.N + という名前で, + M はメジャーバージョン番号, + N + はマイナーバージョン番号になっている必要があります. + これらを混同しないでください. + libfoo.so.N.M + という名の ELF 共有ライブラリや + libfoo.so.N + という名の a.out 共有ライブラリ + (あるいはシンボリックリンク) + は絶対にインストールしないでください. + + + + リンカコマンドライン + + 直接 ld を使用せずに + cc -shared を使用してください. + たった一つの違いは, ELF には, + + コマンドラインにを加える必要があることです. + < ! - - kuriyama - strange Japanese representation - - > + + + + ELF のリンカを満足させるためには, + libfoo.so から + libfoo.so.N + へのシンボリックリンクを作る必要があります. + これは PLIST にも加えなくてはいけませんし, + a.out の場合でも害にはならないので + (一部の port + ではダイナミックリンクローディングのために必要でもあります), + PORTOBJFORMAT + の設定を気にせずに, ただ単純にリンクを作成してください. + + + + <makevar>LIB_DEPENDS</makevar> + + すべての port の Makefile を編集して + LIB_DEPENDS + からマイナー番号を除去する必要があり, + 正規表現のサポートも除去する必要があります + (たとえば, + foo\\.1\\.\\(33|40\\) から + foo.2). + マッチングは grep -wF + を使って行われます. + + + + <filename>PLIST</filename> + + PLIST は + a.out のマイナー番号が 0 であれば短い + (ELFの) 共有ライブラリの名前を含み, + そうでなければ長い (a.out の) 名前を含んでいる必要があります. + PORTOBJFORMAT が + aout であれば, + bsd.port.mk は自動的に + .0 を短い共有ライブラリの名前の行に付け加え, + PORTOBJFORMATelf + であれば, + マイナー番号を長い共有ライブラリの名前から削除します. + + ELF システムで二つのバージョン番号を持つ共有ライブラリをインストールしたり, + a.out システムで一つのバージョン番号しか持たない共有ライブラリをインストールするのが避けられない場合 + (たとえば他のオペレーティングシステム用の互換ライブラリをインストールする port など), + NO_FILTER_SHLIBS + 変数を定義すれば前節で説明されている + PLIST + 編集の機能が停止されます. + + + + <literal>ldconfig</literal> + + < ! - - kuriyama - Eng. why literal? - - > + Makefile 中の + ldconfig + の行は以下のようになります. + + ${SETENV} OBJFORMAT=${PORTOBJFORMAT} ${LDCONFIG} -m .... - また PLIST 中では: + また PLIST 中では, - + @exec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -m ... @unexec /usr/bin/env OBJFORMAT=%%PORTOBJFORMAT%% /sbin/ldconfig -R - となります. これは, - システムのデフォルトフォーマットではなく - パッケージのフォーマットに応じて, 正しい - ldconfig - が呼ばれることを保証するためのものです. - - + となります. これは, + システムのデフォルトフォーマットではなく package のフォーマットに応じて, + 正しい + ldconfig + が呼ばれることを保証するためのものです. + + - - <makevar>MASTERDIR</makevar> +--> - もし, あなたの port が 変数(例えば - 解像度とか紙のサイズなど)を変えたりした, - ちょっと違うバージョンを作成する必要があるときには, - ユーザが分りやすいように, package - ごとに別々のサブディレクトリを作成し, ただし, できるだけ port - 間でファイルを共有するようにしてください. 典型的な例では, - うまく変数を使えば, - とても短いMakefileだけ, - 1つ以外のすべてのディレクトリに置くだけで済みます. その短い - Makefile には - MASTERDIR を使って, - 残りのファイルがあるディレクトリを指定できます. また PKGNAME - の一部に変数に使って, package - が別々の名前を持つようにしてください. + + <makevar>MASTERDIR</makevar> + + もし, あなたの port が変数 + (たとえば解像度とか紙のサイズなど) + を変えたりした, ちょっと違うバージョンを作成する必要があるときには, + ユーザが分りやすいように package ごとに別々のサブディレクトリを作成し, + できるだけ port 間でファイルを共有するようにしてください. + 典型的な例では, + うまく変数を使えばとても短いMakefileだけを + 一つ以外のすべてのディレクトリに置くだけで済みます. + その短い + Makefile には + MASTERDIR を使って, + 残りのファイルがあるディレクトリを指定できます. + また PKGNAMESUFFIX + の一部に変数に使って + package が別々の名前を持つようにしてください. + + 以下がとても良い例になるでしょう. + これは + japanese/xdvi300/Makefile + の一部です. - 以下が, とても良い例になるでしょう. これは - japanese/xdvi300/Makefile - の一部です: - - -PKGNAME= ja-xdvi${RESOLUTION}-17 + +PORTNAME= xdvi +PORTVERSION= 17 +PKGNAMEPREFIX= ja- +PKGNAMESUFFIX= ${RESOLUTION} : # default RESOLUTION?= 300 @@ -1562,140 +1626,143 @@ RESOLUTION?= 300 @${FALSE} .endif - japanese/xdvi300 は通常のパッチ, - package ファイルももっています. そこで, - make と入力すると, - デフォルトの解像度(300)を使って, 普通に port - の作成を行います. + japanese/xdvi300 は通常のパッチ, + package ファイルももっています. そこで, + make と入力すると, + デフォルトの解像度(300)を使って, 普通に port + の作成を行います. + + 他の解像度に関してですが, これが, + xdvi118/Makefile の(コメントを除いた) + すべてです. - 他の解像度に関してですが, これが, - xdvi118/Makefile の(コメントを除いた) - すべてです. - - + RESOLUTION= 118 MASTERDIR= ${.CURDIR}/../xdvi300 .include ${MASTERDIR}/Makefile - (xdvi240/Makefile と - xdvi400/Makefile も同様です). - MASTERDIR が - bsd.port.mk に - PATCHDIRPKGDIR - などの通常のサブディレクトリが xdvi300 - にあることを教えます. RESOLUTION=118 - の行が, xdvi300/Makefile の - RESOLUTION=300 の行を無効にし, port - は解像度を118として作成されます. + (xdvi240/Makefile と + xdvi400/Makefile も同様です). + MASTERDIR が + bsd.port.mk に + PATCHDIRPKGDIR + などの通常のサブディレクトリが xdvi300 + にあることを教えます. RESOLUTION=118 + の行が, xdvi300/Makefile の + RESOLUTION=300 の行を無効にし, port + は解像度を118として作成されます. + + + + 共有ライブラリのバージョン + + まず, + 共有ライブラリのバージョンについての指針を読んで, + 共有ライブラリのバージョンを一般的にどうすれば良いかを理解してください. + 盲目的にソフトウエアの作者がちゃんと理解していると信じていてはいけません. + 多くの場合, それは間違っていますし, 細い点まで考慮することは大変重要なことです. + なぜならわたしたちは, + 互換性がないかもしれない大量のソフトウェアを共存させようとする特殊な状況にあるからです. + 過去に不注意な port の導入が共有ライブラリに関して多大な問題を引き起したことがあります + (今まで jpeg-6b + がなぜ 9 というバージョン番号を持っているか不思議に思ったことはありませんか?). + もし, 疑問があれば, &a.ports; にメールを送ってください. + ほとんどの時間は正しい共有ライブラリのバージョンを決めることと, + それを実現するためのパッチを作成することに終始します. + + - - 共有ライブラリのバージョン + + マニュアルページ - まず, - 共有ライブラリのバージョンについての指針 を読んで, - 共有ライブラリのバージョンを - 一般的にどうすれば良いかを理解してください. 盲目的に, - ソフトウエアの作者がちゃんと理解していると - 信じててはいけません, 多くの場合違います. - 細い点まで考慮することは大変重要なことです, - なぜなら我々は互換性がないかもしれない大量の - ソフトウェアを共存させようとする, 特殊な状況にあるからです. - 不注意な port の導入が共有ライブラリに関して, - 多大な問題を引き起したことが過去にあります (今まで, - jpeg-6b がなぜ 9.0 - といバージョン番号を持っているか不思議に - 思ったことはありませんか?). もし, 疑問があれば, &a.ports; - にメールを送ってください. ほとんどの時間は, - 正しいシェアードライブラリのバージョンを決めることと, - それを実現するためのパッチを作成することに終始します. - - しかしながら, が同じソフトウェアの違ったバージョンの - ソフトウェアが既にツリーにあるばあいには, - 状況は非常に複雑です. - つまり, FreeBSD では, - ユーザがリンカにどのバージョンの共有ライブラリを - 使用するかを指定できないからです - (リンカは常にもっとも高いバージョンを選びます). これは, もし, - libfoo.so.3.2 と - libfoo.so.4.0 - がシステムに存在するときには, - リンカに特別なアプリケーションだけ - libfoo.so.3.2 - をリンクするように指示する方法がないことを意味します. これは, - コンパイル時のリンクという意味では完全に見劣りします. - この場合の唯一の解決方法は, 共有ファイルの名前の - ベース 部分を変えることです. 例えば, - libfoo.so.4.0 を - libfoo4.so.1.0 へ変えることによって, - バージョン 3.2 とバージョン 4.0 共に他の port - からリンクされることができるようになります. - - - - マニュアル - - MAN[1-9LN] 変数を使用すると, - 自動的にすべてのマニュアルを pkg/PLIST - に加えます (つまり, マニュアルを PLIST - に加えては いけませんPLIST の生成 - を参照してください). またマニュアルを - /etc/make.conf 中の - NOMANCOMPRESS の設定に応じて, - install時に自動的に圧縮したり伸長したりします. - - もし あなたの port において, 複数のファイル名を持つマニュアルページを + MAN[1-9LN] 変数を使用すると, + 自動的にすべてのマニュアルを pkg/PLIST + に加えます (つまり, マニュアルを PLIST + に加えてはいけません + — PLIST の生成 + を参照してください). + またマニュアルを + /etc/make.conf 中の + NOMANCOMPRESS の設定に応じて, + インストール時に自動的に圧縮したり復元したりします. + + もしあなたの port で複数のファイル名を持つマニュアルページを, シンボリックリンクやハードリンクを用いてインストールしようとしているなら, - それらを識別するために MLINKS を使わなければなりません. - port によってインストールされたリンクは, 意図するファイルをきちんと - 指しているかどうかを確実なものにするため, bsd.port.mk - によって削除されたり, 再作成されたりします. + それらを識別するために MLINKS + を使わなければなりません. + port によってインストールされたリンクは, + 意図するファイルをきちんと指しているかどうかを確実なものにするため + bsd.port.mk によって削除されたり, 再作成されたりします. MLINKS に含まれているマニュアルページは, 一つとして PLIST の中に存在していてはいけません. - - - マニュアルをインストール時に圧縮するかどうかを - 指定するには, MANCOMPRESSED - 変数を使用します. この変数は, 3つの値をとることができます, - yes, no そして - maybe です. yes - はマニュアルが既に圧縮されて インストールされている, - no はされていない, maybe - はそのソフトウェアがすでに, NOMANCOMPRESS - に合わせており bsd.port.mk - が特別なにもする必要がないことを意味します. - - USE_IMAKE がセットされていて, - NO_INSTALL_MANPAGES - がセットされていなければ, MANCOMPRESSED - は自動的に yes に設定され, - それ以外の場合には, no になります. - デフォルトがあなたの port - に合わない場合以外は明示的に設定する必要がありません. - - PREFIX 以外のディレクトリの下に - マニュアルを置くような port では MANPREFIX - を指定することができます. さらに, - 特定のセクションのマニュアルだけ, - 標準ではない場所にインストールする場合, 例えばいくつかの Perl - のモジュールの ports など, には個々のマニュアルのパスを - MANsectPREFIX - (sect は, 1-9, - または, LN - を表わします) によって指定できます. ができます. - - - マニュアルが, 言語特有のサブディレクトリに - 置かれる場合には, 言語名を MANLANG - に設定してください. この変数のデフォルト値は, - "" になっています (つまり, 英語のみ). - - - これは, 全部をまとめた例です. - - + + + マニュアルをインストール時に圧縮するかどうかを + 指定するには, MANCOMPRESSED + 変数を使用します. この変数は三つの値をとることができます, + yes, + no そして + maybe です. + yes はマニュアルが既に圧縮されてインストールされている, + no はされていない, + maybe はそのソフトウェアがすでに + NOMANCOMPRESS に合わせており + bsd.port.mk + が特別なにもする必要がないことを意味します. + + USE_IMAKE がセットされていて, + NO_INSTALL_MANPAGES + がセットされていなければ, MANCOMPRESSED + は自動的に yes に設定され, + それ以外の場合には, no になります. + デフォルトがあなたの port + に合わない場合以外は明示的に設定する必要がありません. + + PREFIX 以外のディレクトリの下に + マニュアルを置くような port では MANPREFIX + を指定することができます. さらに, + 特定のセクションのマニュアルだけ, + 標準ではない場所にインストールする場合, + たとえばいくつかの Perl のモジュールの ports などには, + 個々のマニュアルのパスを + MANsectPREFIX + (sect は, 1-9, + または, LN + を表わします) によって指定できます. + + + マニュアルが言語特有のサブディレクトリに置かれる場合には, + 言語名を MANLANG に設定してください. + この変数のデフォルト値は, + "" になっています (つまり, 英語のみ). + + + これは, 全部をまとめた例です. + + MAN1= foo.1 MAN3= bar.3 MAN4= baz.4 @@ -1703,9 +1770,8 @@ MLINKS= foo.1 alt-name.8 MANLANG= "" ja MAN3PREFIX= ${PREFIX}/share/foobar MANCOMPRESSED= yes - - 以下の6個のファイルがこの port でインストールされます. - + + 以下の 6 個のファイルがこの port でインストールされます. ${PREFIX}/man/man1/foo.1.gz @@ -1715,114 +1781,117 @@ ${PREFIX}/share/foobar/man/ja/man3/bar.3.gz ${PREFIX}/man/man4/baz.4.gz ${PREFIX}/man/ja/man4/baz.4.gz - さらに, ${PREFIX}/man/man8/alt-name.8.gz + さらに + ${PREFIX}/man/man8/alt-name.8.gz がこの port によってインストールされるかどうかわかりませんが, それとは無関係に foo(1) と alt-name(8) のマニュアルページを 指すシンボリックリンクが作成されます. - - - + + - - Motifを必要とするport + + Motif を必要とする port + + 最近はコンパイルに Motif + を必要とするアプリケーションが増えてきました + (Motif 自体は有料のものがいくつかの会社から手に入りますし, + 多くのアプリケーションがコンパイル可能な無料の互換ライブラリが + x11-toolkits/lesstifにあります). + Motif はかなり広く使われていますし, + 製品のライセンスではライブラリを静的にリンクした実行形式は再配布が認められている場合が多いので, + Motif を必要とするソフトウェアを簡単に動的 + (port からコンパイルする人々のために), + 静的 + (package を配布する人々のために) + にリンクできるようなしくみが用意されています. + + + <makevar>REQUIRES_MOTIF</makevar> + + Motif + がないとコンパイルできない port の Makefile + ではこの変数を指定してください. これによって, + Motif を持っていない人が + この port をコンパイルしようとするのを未然に防ぎます. + + + + <makevar>MOTIFLIB</makevar> + + この変数は bsd.port.mk によって + Motif ライブラリの指定に置き換えられます. + ソース内の Makefile や Imakefile で Motif ライブラリを指定しているところを, + この変数に置き換えるようにパッチを適用してください. + + 代表的な例としては以下の二つがあげられます: + + + + Makefile か Imakefile の中で Motif ライブラリが + として使われている場合には, + かわりに + MOTIFLIB + と書いてください. + + + + Imakefile の中で XmClientLibs + が使われている場合には, それを + ${MOTIFLIB} ${XTOOLLIB} ${XLIB} + と書きかえてください. + + + + なお + MOTIFLIB は通常, + -L/usr/X11R6/lib -lXm か + /usr/X11R6/lib/libXm.a + に置き換えられます. + したがって前に や + をつける必要はありません. + + - 最近はコンパイルに Motif - を必要とするアプリケーションが増えて きました. - (Motif自体は有料のものがいくつかの会社から手に入りま すし, - 多くのアプリケーションがコンパイル可能な無料の互換ライブラリ - が x11-toolkits/lesstifにあります) - Motifはかなり広く使われていますし, 製品のライ - センスではライブラリを静的にリンクした - 実行形式は再配布が認めら れている場合が多いので, - Motifを必要とするソフトウェアを簡単に 動的(port - からコンパイルする人々のために)/静的(package を配布 - する人々のために)にリンクできるような - しくみが用意されています. + + X11 のフォント + + もし, あなたの port が X window system + のフォントをインストールするのであれば, + それらを + X11BASE/lib/X11/fonts/local + に置くようにしてください. このディレクトリは XFree86 release 3.3.3 + で新設されたものです. + もしそれが存在しなければ作成し, + ユーザに XFree86 を 3.3.3 かそれより新しいものに更新か, + 少なくともこのディレクトリを + /etc/XF86Config + のフォントパスに加えるように促すメッセージを出力するようにしてください. + + + + + Info ファイル + + 新しい版の texinfo + (2.2.2-RELEASE およびそれ以降に入っています) + には + install-info というコマンドが含まれており, + dir + ファイルに項目を追加したり削除したりすることができます. + もし, あなたの port が info 文書をインストー ルするのであれば, + 以下の指示に従ってその port および package + が正しくユーザの + ${PREFIX}/info/dir + ファイルを更新するようにしてください + (この節はとても長くてすいません. + しかし info ファイルを作りあげるためにはこれらは不可欠です. + 正しく行なえば美しいリストができますので, + 辛抱してください! + :-) + + まず, これを知っておかなければなりません. - - <makevar>REQUIRES_MOTIF</makevar> - - Motif - がないとコンパイルできない port の Makefile - ではこの変数を指定してください. これによって, - Motifを持っていない人が - このportをコンパイルしようとするのを未然に防ぎます. - - - - <makevar>MOTIFLIB</makevar> - - この変数は bsd.port.mk によって - Motif ライブラリの指 定に置き換えられます. - ソース内のMakefileやImakefileで Motif - ライブラリを指定しているところをこの変数に置き換えるよ - うにパッチをあててください. - - 代表的な例としては以下の二つがあげられます: - - - - MakefileかImakefileの中でMotifライブラリが - として使われている場合には, - かわりに MOTIFLIB - と書いてください. - - - - Imakefileの中で XmClientLibs - が使われている 場合には, それを - ${MOTIFLIB} ${XTOOLLIB} - ${XLIB} と書きかえてください. - - - - - MOTIFLIB は通常 - -L/usr/X11R6/lib -lXm か - /usr/X11R6/lib/libXm.a に置き換えら - れます. したがって前に や - をつけ る必要はありません. - - - - - - X11 のフォント - - もし, あなたの port が X window system - のフォントをインストールするのであれば, それらを - X11BASE/lib/X11/fonts/local - に置くようにしてください. このディレクトリは XFree86 release - 3.3.3 で新設されたものです. もし, - それが存在しなければ作成し, ユーザに XFree86 を 3.3.3 - かそれより新しいものに更新か, すくなくとも, - このディレクトリを /etc/XF86Config の - font path - に加えるように促すメッセージを出力するようにしてください. - - - - - Info ファイル - - 新しい版の texinfo(2.2.2-RELEASE - およびそれ以降に入っています) には, - install-info というコマンドが含まれており, - dir ファイルに項目を追加したり, - 削除したりすることがで きます. もし, あなたの port が info - ドキュメントをインストー ルするのであれば, 以下の指示に従って, - その port および package が正しく, ユーザの - ${PREFIX}/info/dir ファイル - を更新するようにしてください. (この節は, - とても長くてすいません, しかし info - ファイルを作りあげるためには, これらは不可欠 です. - 正しく行なえば, 美しい - リストができますので, 辛抱してください! :-) - - まず, これを知っておかなければなりません: - - &prompt.user; install-info --help + &prompt.user; install-info --help install-info [OPTION]... [INFO-FILE [DIR-FILE]] Install INFO-FILE in the Info directory file DIR-FILE. (訳注: Info ディレクトリの INO-FILE を DIR-FILE にインストールする) @@ -1837,31 +1906,32 @@ Options: : --section=SEC Put this file's entries in section SEC of the directory. (訳注: このファイルの項目を Info ディレクトリの SEC - という節に置く.) + というセクションに置く.) : - - このプログラムは, 実際には info - ファイルをインストール しません, 単に - dir - ファイルにエントリーを挿入したり削除し - たりするだけです. - - - これから, install-info - を使用するように, ports を変換す る7段階の工程を示します. - 例として editors/emacsを - 使用します. - - - - まず, texinfo のソースを見て, - @dircategory と - @direntry 文がないファイルについて, - それらを追加するパッチを作成します. 以下は, - ここでの例での patchの一部です: - - + + このプログラムは, 実際には info + ファイルをインストールしません. + 単に + dir + ファイルにエントリを挿入したり削除したりするだけです. + + + これから, install-info + を使用するように, ports を変換する 7 段階の工程を示します. + 例として + editors/emacs + を使用します. + + + + まず, texinfo のソースを見て, + @dircategory と + @direntry 文がないファイルについて, + それらを追加するパッチを作成します. 以下は, + ここでの例での patchの一部です: + + --- ./man/vip.texi.org Fri Jun 16 15:31:11 1995 +++ ./man/vip.texi Tue May 20 01:28:33 1997 @@ -2,6 +2,10 @@ @@ -1877,64 +1947,68 @@ Options: @finalout : - フォーマットについては見ればわかると思います. - dir - というファイルに必要な項目を書いておいてくれる作者 - も多いので, まず自分で書く前にさがしてみてください. また, - 関係 する ports も調べて, 節(section)の名前や, - インデントなどが - きちんと合っているかどうかを確認してください - (項目のテキスト は, すべて4つめのタブ・ストップ(tab - stop)から始めることを推 奨します). + フォーマットについては見ればわかると思います. + dir + というファイルに必要な項目を書いておいてくれる作者も多いので, + まず自分で書く前にさがしてみてください. + また, 関係する ports も調べて, + セクションの名前やインデントなどがきちんと合っているかどうかを確認してください + (項目のテキスト は, すべて 4 つめのタブ・ストップ + (tab stop) から始めることを推奨します). + + + 一つファイルに対して一つの info + の項目しか書けないことに注意してください. + これは + install-info --delete + のバグにより + @direntry + セクションに複数の項目を書いても初めの一つの項目しか削除してくれないからです. + + + texinfo のソースにパッチを適用する代わりに + dir の項目を + install-info の引数 + ((, + ) + として与えることもできますが, + これはあまり良い方法とは思えません. + なぜなら同じ情報を三つの場所 + (Makefile, + PLIST の + @exec/@unexec: + 以下参照) + に重複して書く必要があるからです. + しかし, もし日本語 + (あるいは, 他のマルチバイト文字)の info + ファイルがある場合には + install-info + の特別な引数を使用する必要があるでしょう. + なぜなら makeinfo がこのような + texinfo ソースファイルを扱えないからです. + (このようなものをどう扱うかの例としては + japanese/skk の + Makefile と + PLIST を見てください). + + + + portのディレクトリに戻って + make clean; make を実行し, + info ファイルが texinfo ソースファイルから再び生成されることを確認してください. + texinfo ソースファイルのほうが info ファイルよりも新しいので + make と入力すれば + info ファイルは再構築されるはずですが, 多くの + Makefile + には info ファイルの正しい依存関係が書かれていません. + emacs の場合, + info ファイルの再構築ため + man + サブディレクトリに降りていくようにするためにメインの + Makefile.in + にパッチを適用する必要がありました. - - 1つのファイルに対して1つの info - の項目しか書けないことに注 意してください, これは, - install-info --delete が, そのバグにより, - @direntry セクションに複数の項目を書 - いても, - 初めの1つの項目しか削除してくれないからです. - - - texinfo のソースにパッチをあてるかわりに, - dir の項目 を - install-info の - 引数((, - ) として与えることもできます. - これはあまり良い方法とは 思えません, なぜなら, - 同じ情報を3ヶ所(Makefile, - PLIST の - @exec/@unexec: - 以下参照) に重複して, 書く必要があるからです. - しかしながら, もし日本語(あるいは, 他のマルチバイト文字)の - info ファイルがあるのならば, - install-info - の特別な引数を使用する必要があるでしょう, なぜならば, - makeinfo がこのような texinfo - ソースファイル を扱えないからです. - (このようなものをどう扱うかの例としては, - japanese/skk の - Makefile と - PLIST を見て ください.) - - - - portのディレクトリに戻って, make clean; - make をして, info ファイルが texinfo - ソースファイルから再び生成さ れることを確認してください. - texinfo ソースファイルのほうが info - ファイルよりも新しいので, make - とタイプすれば, info ファイルは再構築されるはずですが, - 多くの Makefile には info - ファイルの正しい依存関係が書かれていません. - emacs の場合, info - ファイルの再構築ため, man - サブディレクトリ に降りていくようにするために, メインの - Makefile.in にパッ - チをあてる必要がありました. - - + --- ./Makefile.in.org Mon Aug 19 21:12:19 1996 +++ ./Makefile.in Tue Apr 15 00:15:28 1997 @@ -184,7 +184,7 @@ @@ -1957,27 +2031,28 @@ Options: dvi: $(DVI_TARGETS) - man - サブディレクトリでのデフォルトターゲットは, - info で呼ばれるのに対して, - メインの Makefile では, - all で呼びたいので, - 2つめのpatchが必要でした. また, info - info ファイルのインストールも削除しました, なぜなら, - 同じものが同じ名前で既に - /usr/share/info にあるからです. - (このパッチはここにはありません.) - + man + サブディレクトリでのデフォルトターゲットは, + info で呼ばれるのに対して, + メインの Makefile では, + all で呼びたいので, + 二つ目のpatchが必要でした. + また, info info ファイルのインストールも削除しました. + なぜなら, 同じものが同じ名前ですでに + /usr/share/info + にあるからです + (このパッチはここにはありません). + + + + もし, Makefile に + dir + ファイルをインストールする個所があれば削除します. + あなたの port がインストールしてはいけません. + また, dir + ファイルを壊してしまうようなコマンドの類も削除します. - - もし, Makefile に - dir ファイルをインストールす - る個所があれば, 削除します. あなたの port がインストー - ルしてはいけません. また, dir - ファイルを壊してしまうよう - なコマンドの類も削除します. - - + --- ./Makefile.in.org Mon Aug 19 21:12:19 1996 +++ ./Makefile.in Mon Apr 14 23:38:07 1997 @@ -368,14 +368,8 @@ @@ -1995,18 +2070,19 @@ Options: (cd $${thisdir}; \ ${INSTALL_DATA} ${srcdir}/info/$$f ${infodir}/$$f; \ chmod a+r ${infodir}/$$f); \ - + - - (これは, 既存のportを修正するときのみ必要です.) - pkg/PLIST を見て, - info/dir にパッチをあて - ようとするものすべてを削除します. これらは, - pkg/INSTALL - やその他のファイルにもあるかもしれない ので, - いろいろさがしてみてください. + + (これは, 既存のportを修正するときのみ必要です.) + pkg/PLIST を見て, + info/dir + にパッチをあてようとするものすべてを削除します. + これらは + pkg/INSTALL + やその他のファイルにもあるかもしれないので, + いろいろさがしてみてください. - + Index: pkg/PLIST =================================================================== RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v @@ -2024,21 +2100,21 @@ diff -u -r1.15 PLIST info/cl info/cl-1 info/cl-2 - - - - post-install ターゲットを - Makefile に加えて, - インストールされた info ファイルについては, - install-info - を実行するようします. (dir - ファイルが存在しない場合, - それを作成するようにする必要はなくなりました. - install-info は, - このファイルが存在しなければ自動的に作成します.) - - - + + + + post-install ターゲットを + Makefile + に加えてインストールされた info ファイルについては, + install-info + を実行するようします + (dir + ファイルが存在しない場合にそれを作成するようにする必要はなくなりました. + install-info + はこのファイルが存在しなければ自動的に作成します). + + + Index: Makefile =================================================================== RCS file: /usr/cvs/ports/editors/emacs/Makefile,v @@ -2056,15 +2132,15 @@ diff -u -r1.26 Makefile +.endfor .include <bsd.port.mk> - + - - PLIST を編集して, 同じ働きをする - @exec 文, - それに pkg_delete のために - @unexec 文を加えてください. + + PLIST を編集して, 同じ働きをする + @exec 文, + それに pkg_delete のために + @unexec 文を加えてください. - + Index: pkg/PLIST =================================================================== RCS file: /usr/cvs/ports/editors/emacs/pkg/PLIST,v @@ -2089,590 +2165,602 @@ diff -u -r1.15 PLIST libexec/emacs/19.34/i386--freebsd/cvtmail libexec/emacs/19.34/i386--freebsd/digest-doc - - @unexec install-info --delete - コマンドは, info ファイル自身より先に置き, - コマンドがファイルを読めるようにし - ておかなければならないことに注意してください. また, - @exec install-info コマンドは info - ファイルおよび dir ファイルを作る - @exec コマンドより後に - おかなければなりません. - - - - - テスト - をして出来栄えに感服しましょう :) 各段階の前後に, - dir - ファイルをチェックしましょう. - - - - - - <filename>pkg/</filename> サブディレクトリ - - まだ触れていない, いくつかのこつが - pkg/ サブディレクトリにはあり, - 時として便利でしょう. - - - <filename>MESSAGE</filename> - - もし, インストールする人にメッセージを表示する - 必要がある場合には, そのメッセージを - pkg/MESSAGE に置けます. この機能は, - pkg_add - の後の追加のインストール手続きを表示するときなどに, - 重宝します. - - - - pkg/MESSAGE ファイルは - pkg/PLIST に加える必要はありません. - また, もしユーザが package ではなく port を使用して - いる場合には自動的には表示されませんので, 明示的に - post-install - で表示するようにするべきでしょう. - - - - - <filename>INSTALL</filename> - - バイナリパッケージが pkg_add - でインストールされるときに, 実行される必要がある - コマンドがあれば, pkg/INSTALL - スクリプトを使って実行することができます. - このスクリプトは自動的に package に加えられ, - pkg_add によって2度実行されます. はじめは - INSTALL ${PKGNAME} PRE-INSTALL - と実行され, 2度目には, INSTALL ${PKGNAME} - POST-INSTALL と実行されます. - どちらのモードで実行されているかは, - $2 を調べることによってわかります. - 環境変数 PKG_PREFIX には package - がインストールされるディレクトリが設定されます. 詳細は - &man.pkg.add.1; を見てください. - - - - port を make install で - インストールするときには, - このスクリプトは自動的に実行されません. もし, - 実行される必要があるならば, port の Makefile - から明示的に呼ぶ必要があります. - - - - - - <filename>REQ</filename> - - port が(インストールされるシステムの状態によって) - インストールされるべきか, されないべきか区別する必要が - あるときには, “要件(requirements)” スクリプト - pkg/REQ を作ることができます. これは, - インストール及びデインストール (package - の削除)の時に自動的に実行され, - それらが処理されるべきかを決定します. - - - - make の変数にあわせた <filename>PLIST</filename> - の変更 - - いくつかの port, 特に p5- portsなど, は configure - のオプション (あるいは, p5- ports の場合は perl - のバージョン)によって, PLIST - を変える必要があります. これを容易に実現するために, - PLIST 中の - %%OSREL%%, - %%PERL_VER%%, - %%PERL_VERSION%% は, - 適切に置き換えられるようになっています. - %%OSREL%% の値は, - オペレーティングシステムの数字で表されたリビジョンです - (例えば, 2.2.7). - %%PERL_VERSION%% は perl - のバージョン番号全体(例えば, 5.00502 )で, - %%PERL_VER%% はバージョン番号から, - パッチレベルを引いてものです(例えば, - 5.005). - - 他の置き換えが必要であれば, PLIST_SUB - 変数に - VAR=VALUE - - という形式のペアのリストを設定することによって, - PLIST 中の - %%VAR%% は - VALUE に置き換えられます. 例えば, - バージョンに固有の沢山のファイルを インストールする場合には, - Makefile - - - + + @unexec install-info --delete + コマンドは info ファイル自身より先に置き, + コマンドがファイルを読めるようにしておかなければならないことに注意してください. + また + @exec install-info コマンドは, + info ファイルおよび dir + ファイルを作る + @exec + コマンドより後におかなければなりません. + + + + + テスト + をして出来栄えに感服しましょう + :) + 各段階の前後に + dir + ファイルをチェックしましょう. + + + + + + <filename>pkg/</filename> サブディレクトリ + + まだ触れていない, + いくつかのこつが pkg/ + サブディレクトリにはあり, 時として便利でしょう. + + + <filename>MESSAGE</filename> + + もしインストールする人にメッセージを表示する必要がある場合には, + そのメッセージを + pkg/MESSAGE に置くことができます. + この機能は + pkg_add + の後の追加のインストール手続きを表示するときなどに重宝します. + + + + pkg/MESSAGE ファイルは + pkg/PLIST に加える必要はありません. + また, もしユーザが package ではなく + port を使用している場合には自動的には表示されませんので, + 明示的に + post-install + で表示するようにするべきでしょう. + + + + + <filename>INSTALL</filename> + + バイナリパッケージが + pkg_add + でインストールされるときに実行される必要があるコマンドがあれば, + pkg/INSTALL + スクリプトを使って実行することができます. + このスクリプトは自動的に package に加えられ, + pkg_add によって二回実行されます. + はじめは + INSTALL ${PKGNAME} PRE-INSTALL + と実行され, 二回目には + INSTALL ${PKGNAME} POST-INSTALL + と実行されます. + どちらのモードで実行されているかは + $2 を調べることによってわかります. + 環境変数 PKG_PREFIX には + package がインストールされるディレクトリが設定されます. + 詳細は &man.pkg.add.1; を見てください. + + + + port を make install + でインストールするときにはこのスクリプトは自動的に実行されません. + もし実行される必要があるならば port の Makefile + から明示的に呼ぶ必要があります. + + + + + + <filename>REQ</filename> + + port が + (インストールされるシステムの状態によって) + インストールされるべきか, + されないべきか区別する必要があるときには, + 要件(requirements) スクリプト + pkg/REQ を作ることができます. + これはインストールおよび削除 + (package の削除) + の時に自動的に実行され, + それらが処理されるべきかを決定します. + + + + make の変数にあわせた + <filename>PLIST</filename> の変更 + + いくつかの port, 特に p5-ports などは + configure のオプション + (あるいは, p5-ports の場合は perl のバージョン) + によって + PLIST を変える必要があります. + これを容易に実現するために + PLIST 中の + %%OSREL%%, + %%PERL_VER%%, + %%PERL_VERSION%% は適切に置き換えられるようになっています. + %%OSREL%% の値はオペレーティングシステムの数字で表されたリビジョンです + (たとえば 2.2.7). + %%PERL_VERSION%% は perl + のバージョン番号全体 + (たとえば 5.00502) + で, %%PERL_VER%% + はバージョン番号からパッチレベルを引いたものです + (たとえば 5.005). + + 他の置き換えが必要であれば, PLIST_SUB + 変数に + VAR=VALUE + という形式のペアのリストを設定することによって, + PLIST 中の + %%VAR%% + は + VALUE に置き換えられます. + たとえばバージョンに固有のたくさんのファイルをインストールする場合には, + Makefile + + + OCTAVE_VERSION= 2.0.13 PLIST_SUB= OCTAVE_VERSION=${OCTAVE_VERSION} - と書いて, PLIST - 中のバージョン番号が表われるすべてのところに, - %%OCTAVE_VERSION%% と書きます. - このようにしておけば, port をアップグレードするときに, - 何十行(ときとして, 何百行)も PLIST - を書き替えないですみます. + と書いて, PLIST + 中のバージョン番号が表われるすべてのところに, + %%OCTAVE_VERSION%% と書きます. + このようにしておけば, port をアップグレードするときに, + 何十行 + (ときとして, 何百行) + も + PLIST + を書き替えないですみます. + + この書き換えは + (マニュアルの追加も) + do-install と + post-install ターゲットの間に + PLIST を読み + TMPPLIST + (デフォルトは WRKDIR/.PLIST.mktmp) + に書き込むことによって行なわれます. + もし, あなたの port が + PLIST を実行時に生成するのであれば, + do-install + の間かその前に行うようにしてください. + また, 書きかえられたあとのファイルを編集する必要がある場合には, + post-install + で TMPPLIST を書きかえてください. + + + + <filename>pkg</filename> + サブディレクトリにあるファイル名の変更 + + pkg + サブディレクトリにあるファイルはすべて変数を使用して定義されていますので, + 必要であれば + Makefile 中で変更可能です. + いくつかの ports で一つの + pkg + サブディレクトリを共有する場合や, + 上記のファイルに書き込む必要があるときなど特に便利です + (pkg + サブディレクトリに直接書き込むのが良くない理由については + WRKDIR + 以外への書きこみ を参照してください). + + 以下が変数名とそのデフォルト値の表です. + + + + + + 変数名 + デフォルト値 + + + + + + COMMENT + ${PKGDIR}/DESCR + + + + DESCR + ${PKGDIR}/DESCR + + + + PLIST + ${PKGDIR}/PLIST + + + + PKGINSTALL + ${PKGDIR}/INSTALL + + + + PKGDEINSTALL + ${PKGDIR}/DEINSTALL + + + + PKGREQ + ${PKGDIR}/REQ + + + + PKGMESSAGE + ${PKGDIR}/MESSAGE + + + + + + PKG_ARGS + を上書きせずにこれらの変数を変更するようにしてください. + PKG_ARGS + を変更すると, これらのファイルは port から正しく + /var/db/pkg + にインストールされなくなります. + + + + + ライセンス上の問題 + + ソフトウェアによっては制限の厳しい + ライセンスがついてきたり, + 法律的に問題があるかも知れません + (PKP の公開鍵暗号の特許, + ITAR (暗号化ソフトウェアの輸出) + などが例としてあげられます). + それらをどう扱えばいいかは, + ライセンスの文面によってさまざまな場合があります. + + + ソフトウェア移植者として, + あなたにはライセンスをよく読み + FreeBSD プロジェクトが FTP または CD-ROM + で配布してはいけないソフトウェアを配布してしまうことのないよう注意する義務があります. + 何か疑問がある場合には + &a.ports; に聞いてみてください. + + + よく見られるケースに対処するために, + Makefile に指定できる二つの変数が用意されています. + + + + ソフトウェアに有償再配布を禁ずるという趣旨のライセン スがついてきた場合には, + NO_CDROM + という変数にその理由を記述してください. + わたしたちはこれがついている port を + CD-ROM リリースに入れないようにしますが, + オリジナルのソースファイルと package を + FTP で取れるようにしておきます. + + + + もし生成される package が個々のサイトで独自に構築される必要があったり, + ライセンスによって生成されるバイナリが配布できない場合には + NO_PACKAGE 変数にその理由を記述してください. + そのような package は FTP サイトに置かれたり, + リリース 時の CD-ROM へ入らないようにします. + ただし, いずれの場合も + distfile は (FTP や CD-ROM に) + 含まれるようになります. + + + + 使用者によっては法律上の問題が生じる port + (暗号化ソフトウェアなど) + の場合, + あるいは商用利用を禁ずるとライセンスに書いてある場合には, + RESTRICTEDという変数にその理由を入れてください. + この場合には, ソースファイルや package + が FreeBSD の FTP サイトにも置かれなくなります. + + + + + GNU 一般公有使用許諾書 (GPL) は, + バージョン 1, 2 とも port 作成上何ら問題にはなりません. + + + + もしあなたがソースツリー管理者 (committer) であれば, + ソースツリーにこのような port を入れる際に + ports/LEGAL + ファイルを書き換えるのを忘れないようにしてください. + + + + + アップグレード + + port のバージョンが原作者からのものに比べて古いことに気がついたら, + まずはあなたの持っている port が私たちの最新のもの + (ミラーサイトの ports/ports-current + というディレクトリにあります) + であることを確認してください. + また, Ports Collection 全体を最新の状態に保つために + CVSup を利用することもできます. + 詳しくは + FreeBSD + ハンドブックをご覧ください. + + 次に port の + Makefile に + MAINTAINER (保守担当者) + のアドレスが書いてある場合には, その人にメールを出してみましょう. + 保守担当者の人がすでにアップグレードの準備をしているかも知れませんし, + (新しいバージョンの安定度に問題があるなど) + あえてアップグレードをしない理由があるのかも知れません. + + 保守担当者にアップグレードをしてくれと頼まれた場合, + あるいは, そもそも port の Makefile に保守担当者が書いてない場合などは, + あなたがアップグレードをしてくださると助かります. + その場合にはアッ プグレードをした後, + 変更前と変更後のディレクトリの再帰的 diff + (unified diff と context diff のどちらでもいいのですが, + port のコミッター達は unified diff の方を好むようです) + をとって送ってください + (たとえば変更前のディレクトリが + superedit.bak + という名前でとってあり, 変更後のものが + superedit + に入っているなら, + diff -ruN superedit.bak superedit + の結果を送ってください). + diff の出力を見て, + すべての変更が正しくなされているか確認してください. + 変更箇所については, &man.send-pr.1; + (カテゴリは ports) + に diff の出力結果を添えて, わたしたちに送ってもらうのが一番良いです. + commit する際に CVS に明確に記述しなければならないので, + 付け加えたり削除したりしたファイルがあればそれについて書いておいてください. + もし diff の大きさが 20 KB 程度を超えるようであれば, + 圧縮したものを uuencode してください. + そうでなければそのまま PR に入れるだけで構いません. - この書き換えは ( - マニュアル の追加も) - do-install と - post-install ターゲット のあいだに, - PLIST を読み TMPPLIST - (デフォルトは, - WRKDIR/.PLIST.mktmp ) - に書き込むことによって行なわれます. もし, あなたの port が - PLIST を実行時に生成するのであれば, - do-install のあいだか, - その前に行うようにしてください. また, - 書きかえられたあとのファイルを編集する必要がある場合には, - post-install で, - TMPPLIST を書きかえてください. - - - - <filename>pkg</filename> - サブディレクトリにあるファイル名の変更 - - pkg - サブディレクトリにあるファイルは全て, 変数を - 使用して定義されていますので, 必要であれば - Makefile 中で 変更可能です. いくつかの - ports で 一つの pkg - サブディレクトリを共有する場合や, 上記のファイルに書き込む - 必要があるときなど, 特に便利です. (pkg - サブディレクトリに直接書き込むのが良くない理由に ついては - WRKDIR - 以外への書きこみ を参照してください.) - - 以下が変数名とそのデフォルト値の表です. - - - - - - Variable - Default value - - - - - - COMMENT - ${PKGDIR}/DESCR - - - - DESCR - ${PKGDIR}/DESCR - - - - PLIST - ${PKGDIR}/PLIST - - - - PKGINSTALL - ${PKGDIR}/PKGINSTALL - - - - PKGDEINSTALL - ${PKGDIR}/PKGDEINSTALL - - - - PKGREQ - ${PKGDIR}/REQ - - - - PKGMESSAGE - ${PKGDIR}/MESSAGE - - - - - - PKG_ARGSを上書きせずに, - これらの変数を変更 するようにしてください. - PKG_ARGSを変更すると これらのファイルは - port から正しく /var/db/pkg - にインストールされなくなります. - - - - - ライセンス上の問題 - - ソフトウェアによっては制限の厳しい - ライセンスがついてきたり, 法律的に問題があるかもしれません. - (PKPの公開鍵暗号化, ITAR (暗 号化ソフトウェアの輸出) - などが例としてあげられます). それらを - どう扱えばいいかはライセンスの文面によって - さまざまな場合があり ます. - - - ソフトウェア移植者として, - あなたにはライセンスをよく読み, FreeBSD プロジェクトが FTP - または CD-ROM で配布してはいけないソフ - トウェアを配布してしまうことのないよう, - 注意する義務があります. なにか疑問がある場合には, - &a.ports;に聞いてみてください. - - - よく見られるケースに対処するために, - Makefile に指定できる - 二つの変数が用意されています: - - - - ソフトウェアに “有償再配布を禁ずる” - という趣旨のライセン スがついてきた場合には - NO_CDROM - という変数にその理由を記述して ください. - 私たちはこれがついているportはCD-ROMリリースに入 - れないようにしますが, - オリジナルのソースファイルとpackage - はFTPでは取れるようにしておきます. - - - - もしも, 生成される package - が個々のサイトで独自に構築さ れる必要があったり, - ライセンスによって生成されるバイナリが - 配布できない場合には, NO_PACKAGE - 変数にその理由を記述してくだ さい. そのような package が - FTP サイトに置かれたり, リリース 時の CD-ROM - へ入らないようにします. ただし, いずれの場合も distfile - は(FTP や CD-ROM に)含まれるようになります. - - - - Portが, 使用者によっては法律上の問題が生じる時 - (暗号化ソフ トウェアなど), - または“商用利用を禁ずる”とライセンスに書い - てある場合には - RESTRICTEDという変数にその理由を入れ - てください. この場合には, - ソースファイルやpackageは私たちの - FTPサイトにも置かれません. - - - - - GNU一般公有使用許諾書 (GPL) はバージョン1, 2とも - port作成上は何ら問題にはなりません. - - - - もしあなたが,ソースツリー管理者 (committer) - であれば, ソースツリーにこのようなportを入れる際に, - ports/LEGAL - ファイルを書き換えるのを忘れないようにし - てください. - - - - - アップグレード - - Port - のバージョンが原作者からのものに比べて古いことに気がつ - いたら, まずはあなたの持っているportが私たちの最新のもの - (ミラー サイトの ports/ports-current - というディレクトリにあります) - であることを確認してください. - また, Ports コレクション全体を最新の状態に保つために - CVSup を利用することもできます. 詳しくは - をご覧ください. - - 次に, portの Makefile - にMAINTAINER (保守担当者) の - アドレスが書いてある場合には, - その人にメールを出してみましょう. - 保守担当者の人がすでにアップグレードの準備を - しているかもしれま せんし, - (新しいバージョンの安定度に問題があるなど) あえてアッ - プグレードをしない理由があるのかもしれません. - - 保守担当者にアップグレードをしてくれと頼まれた場合, - あるいは - そもそもportのMakefileに保守担当者が書いてない場合などは, あ - なたがアップグレードをしてくださると助かります. - その場合にはアッ プグレードをしたのち, - 変更前と変更後のディレクトリの再帰的diff (unified diff と - context diff のどちらでもいいのですが, port のコミッター達は - unified diff のほうを好むようです) をとって送ってください. - (例えば, 変更前のディレクトリが - superedit.bak という名前でとってあり, - 変更後のもの が superedit - に入っているなら, diff -ruN superedit.bak - superedit の結果を送ってください. ) diff - の出力を見て, すべての変更が正しくなされているか確認して - ください. 変更箇所については, &man.send-pr.1; (カテゴリーは, - ports)に diff の出力結果を添えて, - 私たちに送ってもらうのが一 番よいです. commit する際に CVS - に明確に記述しなければならない ので, - 付け加えたり削除したりしたファイルがあったら, それについ - て書いておいてください. もし diff の大きさが 20 KB 程度を - 超えるようであれば, 圧縮したものを uuencode して下さい. - そうでなければそのまま PR に入れるだけでいいです. - - 繰り返しになりますが, 既存の ports の変更を送るときには, - &man.shar.1; ではなく &man.diff.1; - を使用してください! - - - - やっていいことといけないこと - - この節では, - ソフトウェアをportする上でよくある落し穴などにつ - いて説明します. このリストを使って, あなた自身が作成した port - のチェックはもとより, PR データベースにある, 他の人が作成した - port のチェックもできます. あなたがチェックした port について - のコメントを バグ報告と一般的な論評 - にしたがって, 送ってください. PR データベースにある port を - チェックすることによって, 私達がそれらを commit - するのを早くし, - あなたが何をしているか理解していることも示します. - - - バイナリのstrip - - バイナリは strip してください. - オリジナルのソースがバイナリを strip - してくれる場合は良いですが, そうでない場合には, - port の Makefile が - install ターゲットを持っているなら - BSD_INSTALL_PROGRAM を, - 持っていないなら, strip するための - post-install ルールを追加して strip - するようにするとよいでしょう. 例えば, - こんな風になります: - - + + 繰り返しになりますが, 既存の ports の変更を送るときには + &man.shar.1; ではなく &man.diff.1; を使用してください! + + + + + やっていいことといけないこと + + + この節ではソフトウェアを port する上で, + 良くある落し穴などについて説明します. + このリストを使ってあなた自身が作成した port のチェックはもとより, + PR データベースにある, + 他の人が作成した port のチェックもできます. + あなたがチェックした port + についてのコメントをバグ報告と一般的な論評にしたがって送ってください. + PR データベースにある port をチェックすると, + わたしたちがそれらを commit するのを早くし, + あなたが何をしているか理解していることも示します. + + + + バイナリの strip + + バイナリは strip してください. + オリジナルのソースがバイナリを + strip してくれる場合は良いですが, + そうでない場合には port の + Makefile が + install ターゲットを持っているなら + BSD_INSTALL_PROGRAM を, + 持っていないなら + strip するための post-install ルールを追加して + strip するようにするとよいでしょう. + たとえばこんな風になります: + + post-install: strip ${PREFIX}/bin/xdl - インストールされた実行形式がすでに strip - されているかどうかは file - コマンドで確認できます. これが`not - stripped'と言わなければ, - stripされているということです. - + インストールされた実行形式がすでに strip + されているかどうかは file + コマンドで確認できます. + not stripped + と表示されなければ strip されていることを示しています. + + + + <makevar>INSTALL_*</makevar> マクロ + + あなた自身の *-install + ターゲットでファイルの正しいモードとオーナを保証するために, + 必ず + bsd.port.mk + で提供されているマクロを使用してください. + + + + ${INSTALL_PROGRAM} + は実行可能なバイナリをインストール + (し, その過程で strip 処理)するコマンドです. + + + + ${INSTALL_SCRIPT} + は実行可能なスクリプトをインストールするコマンドです. + + + + ${INSTALL_DATA} + は共有可能なデータをインストールするコマンドです. + + + + ${INSTALL_MAN} + はマニュアルとその他の文書をインストールするコマンドです + (圧縮はしません). + + + + これらは基本的に install + コマンドに適切なフラグを与えたものです. + それらは distfile の Makefile + で, 頭に BSD_ が付けられた + (つまり BSD_INSTALL_PROGRM というような) + 形で使うことができます. + どのようにこれらを使用するかは以下の例を見てください. + + - - <makevar>INSTALL_*</makevar> マクロ - - あなた自身の *-install - ターゲットでファイルの正しいモードと オーナを保証するために, - 必ずbsd.port.mkで提供されて - いるマクロを使用してください. - マクロは以下のようなものがあります. - - - - ${INSTALL_PROGRAM} - は実行可能なバイナリを - インストール(し, その過程で strip 処理)するコマンドです. - - - - ${INSTALL_SCRIPT} - は実行可能なスクリプトを - インストールするコマンドです. - - - - ${INSTALL_DATA} - は共有可能なデータを - インストールするコマンドです. - - - - ${INSTALL_MAN} - はマニュアルとその他のドキュメ - ントをインストールするコマンドです. - (圧縮はしません) - - - - これらは基本的に install - コマンドに適切なフラグを与えたものです. - それらは distfile の Makefile - で, 頭に "BSD_" が付けられた(つまり BSD_INSTALL_PROGRM - というような)形で使うことができます. - どのようにこれらを使用するかは以下の例を見てください. - - - - - <makevar>WRKDIR</makevar> - - WKRDIR - の外のファイルにはなにも書き込まないように してください. WRKDIR は - ports のビルド中に書き込こめる - ことが保証されている唯一の場所です( CDROM から ports - をコンパイルを参照). PKGDIR - にあるファイルを修正する必要がある ときには, 変数の再定義 - によって行ない, 上書きはしないでください. - - - - <makevar>WRKDIRPREFIX</makevar> - - WRKDIRPREFIX - を尊重していることを確認してください. 特に, 別の port の - WRKDIR を参照している - ときには気を付けてください. 正しい場所は, - WRKDIRPREFIX - PORTSDIR - /subdir/ - name/work, です, - - PORTSDIR/subdir/ - name/work とか - - .CURDIR/../../subdir - /name/work - とかではありません. - - また, 自分で WRKDIR 定義するときには, - 頭に - ${WRKDIRPREFIX}${.CURDIR} - が付いている 事を確認してください. - - - - OS や OS のバージョンの区別 - - Port の過程で, 修正や, どのバージョンの UNIX - で動くかによる条件つきコンパイルなどが - 必要なコードに出会うかもしれません. - そのような条件つきコンパイルなどのための - 変更をおこなうときには, FreeBSD 1.x システムへの移植や, - CSRGの4.4BSD, BSD/386, 386BSD, NetBSD, OpenBSD - などの他のBSDシステムへの移植が可能なように, - できるだけ普遍的な変更をおこなうことを - 心がけてください. - - 4.3BSD/Reno (1990) およびそれより新しい BSD - 版を古いバージョンと区別するには BSD - マクロを利用するのがよいでしょう. これは - <sys/param.h> で定義されています. - このファイルがすでにインクルードされていればよいのですが, - もしそうでない場合には以下のコードを, その - .c - ファイルの適当な場所に加えてください. - - + + <makevar>WRKDIR</makevar> + + WKRDIR + の外のファイルにはなにも書き込まないように + してください. + WRKDIR は + ports のビルド中に書き込こめることが保証されている唯一の場所です + (CDROM からの ports + のコンパイル を参照). + PKGDIR + にあるファイルを修正する必要があるときには変数の再定義によって行ない, + 上書きはしないでください. + + + + <makevar>WRKDIRPREFIX</makevar> + + WRKDIRPREFIX + を尊重していることを確認してください. + 特に, 別の port の + WRKDIR を参照しているときには気を付けてください. + 正しい場所は, + WRKDIRPREFIXPORTSDIR/subdir/name/work + です, + PORTSDIR/subdir/name/work + や + .CURDIR/../../subdir/name/work + ではありません. + + また, + 自分で WRKDIR 定義するときには先頭に + ${WRKDIRPREFIX}${.CURDIR} + が付いていることを確認してください. + + + + OS や OS のバージョンの区別 + + port の過程で, + 修正やどのバージョンの UNIX + で動くかによる条件つきコンパイルなどが必要なコードに出会うかも知れません. + そのような条件つきコンパイルなどのための変更を行なうときには + FreeBSD 1.x システムへの移植や + CSRG の 4.4BSD, BSD/386, 386BSD, NetBSD, OpenBSD などの, + 他の BSD システムへの移植が可能なように, + できるだけ汎用的な変更を行なうことを心がけてください. + + 4.3BSD/Reno (1990) + およびそれより新しい BSD のバージョンを古いバージョンと区別するには + BSD マクロを利用するのがよいでしょう. + これは <sys/param.h> で定義されています. + このファイルがすでにインクルードされていれば良いのですが, + もしそうでない場合には, + 以下のコードをその + .c + ファイルの適当な場所に加えてください. + + #if (defined(__unix__) || defined(unix)) && !defined(USG) #include <sys/param.h> #endif - これらの 2 - つのシンボルが定義されているすべてのシステムには - sys/param.h があるはずです. もし, - そうでないシステムを発見したら我々にも教えてください. - &a.ports; までメールを送ってください. - - あるいは, GNU の Autoconf - のスタイルを使用することもできます, - - + これらの二つのシンボルが定義されているシステムには必ず + sys/param.h があるはずです. + もしそうでないシステムを発見したら, + &a.ports; までメールを送ってわたしたちに伝えてください. + + あるいは, GNU Autoconf のスタイルを使用することもできます, + + #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> #endif - この方法を使用するときには, - Makefile 中の - CFLAGSに - -DHAVE_SYS_PARAM_H - を加えることを忘れないようにしてください. + この方法を使用するときには, + Makefile 中の + CFLAGSに + -DHAVE_SYS_PARAM_H + を加えることを忘れないようにしてください. + + いったん sys/param.h + がインクルードされると, - いったん sys/param.h - がインクルードされると, - - + #if (defined(BSD) && (BSD >= 199103)) - このようにしてそのコードが 4.3 Net2 コードベース, - またはそれより新しいもの (例: FreeBSD 1.x, 4.3/Reno, NetBSD - 0.9, 386BSD, BSD/386 1.1とそれ以前) - の上でコンパイルされているかを検出できます. - - + このようにしてそのコードが 4.3 Net2 コードベース, + またはそれより新しいもの + (例: FreeBSD 1.x, 4.3/Reno, NetBSD 0.9, 386BSD, BSD/386 1.1 とそれ以前) + の上でコンパイルされているかを検出できます. + + #if (defined(BSD) && (BSD >= 199306)) - これは, 4.4コードベース, またはそれより新しいもの (例: - FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0とそれ以後) - の上でコンパイルされているかどうかを - 検出するために使用します. - - 4.4BSD-Lite2 コードベースでは, BSD - マクロの値は 199506 になっています. - これは参考程度の意味合いしかありません. 4.4-Lite ベースの - FreeBSD と 4.4-Lite2 での変更がマージされたバージョンとを - 区別するのに使用するべきものではありません. - この目的のためには, __FreeBSD__ - マクロをかわりに使用してください. - - 以下は控え目に使ってください. - - - - __FreeBSD__ - はFreeBSDのすべての版で定義されています. 変更が - FreeBSD - だけに適用されるとき以外は使用しないでください. - Portでよくある, strerror() - ではなく sys_errlist[] - を使うなどは, FreeBSDでの変更ではなく, BSD - の流儀です. - - - - FreeBSD 2.xでは __FreeBSD__ が - 2 と定義されています. - それ以前の版では 1 になっています. - その後の版では, - そのメジャー番号に合うように上がっていきます. - - - - もし, FreeBSD 1.x システムと FreeBSD 2.x あるいは - FreeBSD 3.x システムを区別する必要があれば, 上で述べた - BSDマクロを使用するのが, - 大抵の場合において正しい答です. もし, - FreeBSD特有の変更であれば (ld - を使うときのシェアードライブラリ用のなオプションなど), - - __FreeBSD__を使い #if - __FreeBSD__ > 1 のようにFreeBSD 2.x - および, それ以降のシステムを検出するのはかまいません. - もし, - 2.0-RELEASE以降のFreeBSDシステムを細かく検出したけれ ば, - 以下を使用することができます. - - + これは, 4.4コードベース, またはそれより新しいもの + (例: FreeBSD 2.x, 4.4, NetBSD 1.0, BSD/386 2.0 とそれ以後) + の上でコンパイルされているかどうかを検出するために使用します. + + 4.4BSD-Lite2 コードベースでは + BSD マクロの値は + 199506 になっています. + これは参考程度の意味合いしかありません. + 4.4-Lite ベースの FreeBSD と 4.4-Lite2 + での変更がマージされたバージョンとを区別するのに使用するべきものではありません. + この目的のためにはかわりに + __FreeBSD__ + マクロを使用してください. + + 以下は控え目に使ってください. + + + + __FreeBSD__ + はFreeBSDのすべての版で定義されています. + 変更が FreeBSD だけに適用されるとき以外は使用しないでください. + port でよくある + strerror() ではなく + sys_errlist[] を使うなどは + FreeBSDでの変更ではなく BSD の流儀です. + + + + FreeBSD 2.xでは __FreeBSD__ が + 2 と定義されています. + それ以前の版では 1 になっています. + その後の版ではそのメジャー番号に合うように上がっていきます. + + + + もし + FreeBSD 1.x システムと FreeBSD 2.x, + あるいは FreeBSD 3.x システムを区別する必要があれば, + 上で述べた BSD + マクロを使用するのが大抵の場合において正しい答です. + もし FreeBSD 特有の変更であれば + (ld を使うときの共有ライブラリ用のオプションなど), + + __FreeBSD__を使い + #if __FreeBSD__ > 1 + のようにFreeBSD 2.x および, + それ以降のシステムを検出するのはかまいません. + もし 2.0-RELEASE 以降の FreeBSD システムを細かく検出したければ, + 以下を使用することができます. + + #if __FreeBSD__ >= 2 #include <osreldate.h> # if __FreeBSD_version >= 199504 @@ -2680,454 +2768,565 @@ post-install: # endif #endif - - - - - Release - __FreeBSD_version + + + + + Release + __FreeBSD_version + + + + + + 2.0-RELEASE + 119411 + + + + 2.1-CURRENT + 199501, 199503 + + + + 2.0.5-RELEASE + 199504 + + + + 2.1 以前の 2.2-CURRENT + 199508 + + + + 2.1.0-RELEASE + 199511 + + + + 2.1.5 以前の 2.2-CURRENT + 199512 + + + + 2.1.5-RELEASE + 199607 + + + + 2.1.6 以前の 2.2-CURRENT + 199608 + + + + 2.1.6-RELEASE + 199612 + + + + 2.1.7-RELEASE + 199612 + + + + 2.2-RELEASE + 220000 + + + + 2.2.1-RELEASE + 220000 (2.2-RELEASE と同じです) + + + + 2.2.1-RELEASE 以後の 2.2-STABLE + 220000 (これも同じです) + + + + texinfo-3.9 以後の 2.2-STABLE + 221001 + + + + top 導入以後の 2.2-STABLE + 221002 + + + + 2.2.2-RELEASE + 222000 + + + + 2.2.2-RELEASE 以後の 2.2-STABLE + 222001 + + + + 2.2.5-RELEASE + 225000 + + + + 2.2.5-RELEASE 以後の 2.2-STABLE + 225001 + + + + ldconfig -R 以後の 2.2-STABLE + 225002 + + + + 2.2.6-RELEASE + 226000 + + + + 2.2.7-RELEASE + 227000 + + + + 2.2.7-RELEASE 以後の 2.2-STABLE + 227001 + + + + semctl(2) 変更後の 2.2-STABLE + 227002 + + + + 2.2.8-RELEASE + 228000 + + + + 2.2.8-RELEASE 以後の 2.2-STABLE + 228001 + + + + mount(2) 変更以前の 3.0-CURRENT + 300000 - + + + mount(2) 変更以後の 3.0-CURRENT + 300001 + + + + semctl(2) 変更以後の 3.0-CURRENT + 300002 + + + + ioctl 引数変更後の 3.0-CURRENT + 300003 + - - - 2.0-RELEASE - 119411 - + + ELF 移行後の 3.0-CURRENT + 300004 + + + + 3.0-RELEASE + 300005 + + + + 3.0-RELEASE 以後の 3.0-CURRENT + 300006 + + + + 3/4 の分岐後の 3.0-STABLE + 300007 + + + + 3.1-RELEASE + 310000 + + + + 3.1-RELEASE 以後の 3.1-STABLE + 310001 + + + + C++ コンストラクタ/デストラクタ順序変更後の + 3.1-STABLE + 310002 + + + + 3.2-RELEASE + 320000 + + + + 3.2-STABLE + 320001 + + + + バイナリ互換性のない IPFW とソケットの変更後の + 3.2-STABLE + 320002 + + + + 3.3-RELEASE + 330000 + + + + 3.3-STABLE + 330001 + + + + libc へ mkstemps() が追加された後の 3.3-STABLE + 330002 + + + + 3.4-RELEASE + 340000 + + + + 3.4-STABLE + 340001 + + + + 3.4 の分岐後の 4.0-CURRENT + 400000 + + + + dynamic linker の変更後の 4.0-CURRENT + 400001 + + + + C++ コンストラクタ/デストラクタ順序変更後の + 4.0-CURRENT + 400002 + + + + dladdr(3) 機能追加後の 4.0-CURRENT + 400003 + + + + __deregister_frame_info dynamic linker のバグ修正, + EGCS 1.1.2 導入後の 4.0-CURRENT + 400004 + + + + suser(9) の API 変更, newbus 後の 4.0-CURRENT + + 400005 + + + + cdevsw 登録方法の変更後の 4.0-CURRENT + 400006 + + + + ソケットレベルの証明書 (credential) のための + so_cred への追加後の 4.0-CURRENT + 400007 + + + + libc_r への poll syscall ラッパー追加後の + 4.0-CURRENT + 400008 + + + + kernel の dev_t 型から + struct spacinfo ポインタへの + 変更後の 4.0-CURRENT + + 400009 + - - 2.1-CURRENT - 199501, 199503 - - - - 2.0.5-RELEASE - 199504 - - - - 2.1 以前の 2.2-CURRENT - 199508 - - - - 2.1.0-RELEASE - 199511 - - - - 2.1.5 以前の 2.2-CURRENT - 199512 - - - - 2.1.5-RELEASE - 199607 - - - - 2.1.6 以前の 2.2-CURRENT - 199608 - - - - 2.1.6-RELEASE - 199612 - - - - 2.1.7-RELEASE - 199612 - - - - 2.2-RELEASE - 220000 - - - - 2.2.1-RELEASE - 220000 (2.2-RELEASE と同じです) - - - - 2.2.1-RELEASE 以後の 2.2-STABLE - 220000 (これも同じです) - - - - texinfo-3.9 以後の 2.2-STABLE - 221001 - - - - top 導入以後の 2.2-STABLE - 221002 - - - - 2.2.2-RELEASE - 222000 - - - - 2.2.2-RELEASE 以後の 2.2-STABLE - 222001 - - - - 2.2.5-RELEASE - 225000 - - - - 2.2.5-RELEASE 以後の 2.2-STABLE - 225001 - - - - ldconfig -R 以後の 2.2-STABLE - 225002 - - - - 2.2.6-RELEASE - 226000 - - - - 2.2.7-RELEASE - 227000 - - - - 2.2.7-RELEASE 以後の 2.2-STABLE - 227001 - - - - semctl(2) 変更後の 2.2-STABLE - 227002 - - - - 2.2.8-RELEASE - 228000 - - - - 2.2.8-RELEASE 以後の 2.2-STABLE - 228001 - - - - mount(2) 変更以前の 3.0-CURRENT - 300000 - - - - mount(2) 変更以後の 3.0-CURRENT - 300001 - - - - semctl(2) 変更以後の 3.0-CURRENT - 300002 - - - - ioctl 引数変更後の 3.0-CURRENT - 300003 - - - - ELF 移行後の 3.0-CURRENT - 300004 - - - - 3.0-RELEASE - 300005 - - - - 3.0-RELEASE 以後の 3.0-CURRENT - 300006 - - - - 3/4 の分岐後の 3.0-STABLE - 300007 - - - - 3.1-RELEASE - 310000 - - - - 3.1-RELEASE 以後の 3.1-STABLE - 310001 - - - - C++ constructor/destructor の順序変更後の 3.1-STABLE - - 310002 - - - - 3.2-RELEASE - 320000 - - - - 3.2-STABLE - 320001 - - - - バイナリ互換性のない IPFW とソケットの変更後の - 3.2-STABLE - 320002 - - - - 3.3-RELEASE - 330000 - - - - 3.3-STABLE - 330001 - - - - libc へ mkstemps() が追加された後の 3.3-STABLE - 330002 - - - - 3/4 の分岐後の 4.0-CURRENT - 400000 - - - - dynamic linker の変更後の 4.0-CURRENT - 400001 - - - - C++ constructor/destructor の順序変更後の - 4.0-CURRENT - 400002 - - - - dladdr(3) 機能追加後の 4.0-CURRENT - 400003 - - - - __deregister_frame_info dynamic linker のバグ修正, - EGCS 1.1.2 導入後の 4.0-CURRENT - 400004 - - - - suser(9) の API 変更, newbus 後の 4.0-CURRENT - - 400005 - - - - cdevsw 登録方法の変更後の 4.0-CURRENT - 400006 - - - - ソケットレベルの証明書 (credential) のための - so_cred への追加後の 4.0-CURRENT - 400007 - - - - libc_r への poll syscall ラッパー追加後の - 4.0-CURRENT - 400008 - - - - kernel の dev_t 型から - struct spacinfo ポインタへの - 変更後の 4.0-CURRENT - - 400009 - - - - jail(2) のセキュリティホール修正後の 4.0-CURRENT - 400010 - - - - sigset_t + + jail(2) のセキュリティホール修正後の 4.0-CURRENT + 400010 + + + + sigset_t のデータ型変更後の 4.0-CURRENT 400011 - + + + + システムコンパイラを gcc 2.95.2 にアップグレードした後の + 4.0-CURRENT + 400012 + + + + 追加可能な Linux モードの ioctl ハンドラが追加された後の + 4.0-CURRENT + 400013 + + + + OpenSSL が導入された後の 4.0-CURRENT + 400014 + + + + GCC 2.95.2 の C++ ABI 変更で, + デフォルトが -fvtable-thunks から -fno-vtable-thunks に変更された後の + 4.0-CURRENT + 400015 + + + + OpenSSH が導入された後の 4.0-CURRENT + 400016 + + + + 4.0-RELEASE + 400017 + + + + 4.0-RELEASE より後の 4.0-STABLE + 400018 + + + + libxpg4 が libc にマージされた後の + 4.0-STABLE + 400020 + - - システムコンパイラを gcc 2.95.2 にアップグレードした後の - 4.0-CURRENT - 400012 - - - - - - + + Binutils の 2.10.0 へのアップグレードと + ELF バイナリのマーク付け (branding) 方法の変更, + ベースシステムへの tcsh の導入後の + 4.0-STABLE + 400021 + + + + 5.0-CURRENT + 500000 + - - (2.2-STABLE は, 2.2.5-RELESE 以後, - “2.2.5-STABLE” と呼ばれることがあります.) - 見ての通り, - これは年・月というフォーマットになっていましたが, - バージョン 2.2 から, - より直接的にメジャー/マイナー番号を使う - ように変更になりました. - 並行していくつかのブランチ(枝分かれし - たバージョン)を開発する場合には, - リリースされた日付でそれらの - リリースを分類することが不可能だからです. (あなたが今 port - を作成するときに, 古い -CURRENT 達について心配 - する必要はありません. - これは参考のために挙げられているにすぎま せん.) - + + ELF ヘッダフィールドの追加と ELF バイナリのマーク付け + (branding) 方法の変更後の 5.0-CURRENT + 500001 + + + + kld メタデータ変更後の 5.0-CURRENT + 500002 + + + + buf/bio 変更後の 5.0-CURRENT + 500003 + + + + binutils アップグレード後の 5.0-CURRENT + 500004 + + + + libxpg4 コードの libc へのマージと, + TASKQ インターフェイスの導入後の 5.0-CURRENT + 500005 + - これまで, 何百ものportが作られてきましたが, - __FreeBSD__ が正しく使われたのは, - 1つか2つの場合だけでしょう. - 以前のportが誤った場所でそのマクロを使っているからと いって, - それをまねする理由はありません. - + + AGP インターフェイスが追加された後の + 5.0-CURRENT + 500006 + + + + Perl を 5.6.0 にアップグレードした後の + 5.0-CURRENT + 500007 + + + + KAME コードを 2000/07 版のソースに更新した後の + 5.0-CURRENT + 500008 + - - <filename>bsd.port.mk</filename> の後に書くこと + + mtree のデフォルトをオリジナルの変種に戻し, + シンボリックリンクをたどる -L オプションを追加した後の + 5.0-CURRENT + 500010 + + + + + + + + + (2.2-STABLE は 2.2.5-RELESE 以後, + 2.2.5-STABLE と呼ばれることがあります.) + 見てのとおりこれは年・月というフォーマットになっていましたが, + バージョン 2.2 からより直接的にメジャー/マイナー番号を使うように変更になりました. + 並行していくつかのブランチ + (枝分かれしたバージョン) + を開発する場合には, + リリースされた日付でそれらのリリースを分類することが不可能だからです + (あなたが今 port + を作成するときに, 古い -CURRENT 達について心配する必要はありません. + これは参考のために挙げられているに過ぎないからです). + + + これまで, 何百もの + port が作られてきましたが, + __FreeBSD__ + が正しく使われたのは一つか二つの場合だけでしょう. + 以前の port が誤った場所でそのマクロを使っているからといって, + それをまねする理由はありません. + - .include <bsd.port.mk> - の行の後には なにも書かないようにしてください. 大抵の場合は - Makefile の 中程のどこかで, - bsd.port.pre.mk を include して, 最後に - bsd.port.pre.mk を include - することによって避けることができます. + + <filename>bsd.port.mk</filename> の後に書くこと + + .include <bsd.port.mk> + の行の後には何も書かないようにしてください. + 大抵の場合は + Makefile の中程のどこかで + bsd.port.pre.mk をインクルードして, + 最後に + bsd.port.pre.mk + をインクルードすることによって避けることができます. + + + pre.mk/post.mk + のペアか bsd.port.mk + だけのどちらかだけをインクルードし, 二つを混ぜないでください. + + + 前者はいくつかの変数の定義だけをして + Makefile + でのテストに使用し, 後者は残りを定義します. - - - pre.mk/post.mk - のペアか bsd.port.mk - だけのどちらかだけを include してください. - 2つを混ぜないでください. - - - 前者は, いくつかの変数の定義だけ をして, - Makefile でのテストに使用し, - 後者は残りを定義します. - - - 以下は bsd.port.pre.mk - で定義される重要な変数です. (これは, すべてではありません. - 完全なリストは bsd.port.mk - を参照してください.) - - - - - - - 変数名 - 解説 - - - - - - ARCH - uname -m で返される - アーキテクチャ. (例, i386). - - - - - OPSYS + 以下は bsd.port.pre.mk + で定義される重要な変数です + (これは, すべてではありません. + 完全なリストは bsd.port.mk を参照してください). + + + + + + + 変数名 + 解説 + + + + + + ARCH + uname -m で返される + アーキテクチャ. (例, i386). + + + + + OPSYS uname -s で返される - オペレーティングシステム (例, - FreeBSD). - - - - OSREL - オペレーティングシステムの - リリースバージョン - (例., 2.1.5, - 2.2.7). - - - - OSVERSION - 数字形式のオペレーティングシステム - のバージョン, - 上記の - __FreeBSD_version - と同じです. - - - - PORTOBJFORMAT - システムのオブジェクト - フォーマット (aout あるいは - elf). - - - - LOCALBASE - “local” ツリーのベース. - (例, /usr/local/). - - - - - X11BASE - “X11” ツリーのベース. - (例, /usr/X11R6/). - - - - - PREFIX - portsのインストール先 - ( - PREFIXについてを参照). - - - - - - - - USE_IMAKE, - USE_X_PREFIX あるいは - MASTERDIR - などの変数を定義する必要がある場合には, - bsd.port.pre.mk を include - する前に定義してください. 他のものは, - bsd.port.pre.mk - の前でも後でもかまいません. - - - 以下は bsd.port.pre.mk - の後に書けるものの例です: - - + オペレーティングシステム (例, + FreeBSD). + + + + OSREL + オペレーティングシステムの + リリースバージョン + (例., 2.1.5, + 2.2.7). + + + + OSVERSION + 数字形式のオペレーティングシステム + のバージョン, + 上記の + __FreeBSD_version + と同じです. + + + + PORTOBJFORMAT + システムのオブジェクト + フォーマット (aout あるいは + elf). + + + + LOCALBASE + local ツリーのベース. + (例, /usr/local/). + + + + + X11BASE + X11 ツリーのベース. + (例, /usr/X11R6/). + + + + + PREFIX + ports のインストール先 + ( + PREFIXについてを参照). + + + + + + + + USE_IMAKE, + USE_X_PREFIX あるいは + MASTERDIR + などの変数を定義する必要がある場合には, + bsd.port.pre.mk + をインクルード前に定義してください. + 他のものは bsd.port.pre.mk + の前でも後でもかまいません. + + + 以下は bsd.port.pre.mk + の後に書けるものの例です. + + # no need to compile lang/perl5 if perl5 is already in system .if ${OSVERSION} > 300003 BROKEN= perl is in system @@ -3145,237 +3344,268 @@ post-install: .if ${PORTOBJFORMAT} == "aout" ${LN} -sf liblinpack.so.1.0 ${PREFIX}/lib/liblinpack.so .endif - + + + + 付加的な文書のインストール + + 普通のマニュアルや info + ファイルの他にユーザにとって有用だと思えるような文書がある場合には, + PREFIX/share/doc + の下にインストールしてください. + これは前記と同様 + post-install + ターゲットの中から行なうと良いでしょう. + + まず, あなたの port のために新しいディレクトリを作ります. + どの port の文書か簡単にわかるような名前にする必要がありますので, + 普通は PORTNAME を使うと良いでしょう. + もちろん, ユーザが異なるバージョンのものを同時に使うことが予想される + port の場合には + PKGNAME をそのまま使っても構いません. + + ユーザが /etc/make.conf + でこの部分を禁止するために + NOPORTDOCS + という変数をセットしている場合には, + これらの文書がインストールされないようにしてください. + こんな具合です. - - 付加的ドキュメント - - 普通のマニュアルや info - ファイルのほかにユーザにとって有用だ - と思えるようなドキュメントがある場合には, - PREFIX/share/doc - の下にインストールしてく ださい. これは前記と同様, - post-installターゲットの - 中からするのがいいでしょう. - - まず, あなたのportのために新しいディレクトリを作りま す. - どのportのドキュメントか簡単にわかるような名前にする必 - 要がありますので, 普通は PKGNAME - からバージョ ン番号を除いた部分を使うといいでしょう. - もちろん, ユーザが異 - なるバージョンのものを同時に使うことが予想される port の場合 - には, PKGNAME - をそのまま使ってかまいません. - - ユーザが /etc/make.conf - でこの部分を禁止するために NOPORTDOCS - という変数をセットしている場合には, これらのドキュメントが - インストールされないようにしてください. こんな具合です. - - - + post-install: .if !defined(NOPORTDOCS) - ${MKDIR}${PREFIX}/share/doc/xv + ${MKDIR} ${PREFIX}/share/doc/xv ${INSTALL_MAN} ${WRKSRC}/docs/xvdocs.ps ${PREFIX}/share/doc/xv .endif - これらのファイルを pkg/PLIST - に入れるのを忘れないよ うにしてください. - (packageが/etc/make.conf内の - 変数を読む方法は今のところ存在しませんので, - NOPORTDOCS - については気にしないでください.) + これらのファイルを + pkg/PLIST + に入れるのを忘れないよ うにしてください + (package が + /etc/make.conf + 内の変数を読む方法は今のところ存在しませんので + NOPORTDOCS + については気にしないでください). + + インストール時に + pkg/MESSAGE + ファイルを利用してメッセージを表示することができます. + 詳細は + pkg/MESSAGE を使うの節を参照してください. - インストール時に pkg/MESSAGE - ファイルを利用して, メッセージを表示することができます. - 詳細は pkg/MESSAGE を使う - の節を参照してください. + + + MESSAGE + ファイルを + pkg/PLIST + に加える必要はありません. + + + + + <makevar>DIST_SUBDIR</makevar> + + /usr/ports/distfiles + ディレクトリ内をあまり散らかさないようにしてください. + たくさんのファイルを取ってくる port や, + 数は少なくても他の port + のファイルと混同される恐れがあるファイル + (Makefile など) + がある場合には, + DIST_SUBDIR に port の名前 + (${PORTNAME} か + ${PKGNAMEPREFIX}${PORTNAME} を使うといいでしょう) + を入れてください. + すると DISTDIR + がデフォルトの + /usr/ports/distfiles から + /usr/ports/distfiles/DIST_SUBDIR + に変更され, + 取ってきたファイルはすべてそのサブディレクトリの中に置かれるようになります. + + また, + ファイルを取ってくるときにバックアップサイトとして使われる + ftp.FreeBSD.org + のディレクトリ名にもこの変数の値が使われます + (DISTDIR を明示的に指定した場合, + ローカルのファイルを置くところは変わりますが, + このサイトのディレクトリ名は変わりません. + 必ず DIST_SUBDIR を使うようにしてください). + + + この変数は Makefile + 中で明示的に指定された + MASTER_SITES + には影響しないことに注意してください. + + + + + package 情報 + + pkg ディレクトリには必ず, + COMMENT や + DESCR, PLIST + といった package 情報を入れてください. + + + これらのファイルはもはや package + の作成だけに使われるものではなくなっています. + たとえ NO_PACKAGE + が定義されていたとしても必須であることに注意してください. + + + + + RCS 文字列 + + RCS が特別な意味を与えている文字列をパッチ内に入れないようにしてください. + ファイルを私たちのソースツリーに入れる時, + これらの文字列は CVS によって書き換えられてしまい, + 後でまたパッチを使おうとした時にうまくいかないことがあります. + RCS 文字列はドル記号 ($) + で囲まれており, + $FreeBSD や + $RCS + などで始まります. + + + + 再帰的 diff + + diff + の再帰 + () + フラグを使って再帰的なパッチを作るのは大変結構なのですが, + でき上がったパッチは必ず目でチェックして余計なゴミが入っていないことを確認してください. + よくあるのはバックアップファイル同士の変更点, + あるいは + Imake や + GNU configure + を使うソフトウェアの + Makefile + の変更点が入っている場合などです. + また configure.in を編集して + autoconf を使って + configure を作り直すときには, + configure の diff は含めずに + (それらは良く数千行におよぶことがあります), + USE_AUTOCONF=yes を定義して + configure.in の + diff をとってください. - - - MESSAGE ファイルは - pkg/PLIST に加える必要はありま - せん. - - - - - <makevar>DIST_SUBDIR</makevar> - - /usr/ports/distfiles - ディレクトリ内をあまり散らかさ ないようにしてください. - たくさんのファイルを取ってくるport や, - 数は少なくてもほかのportのファイルと混同されるおそれが - あるファイル (Makefile など) - がある場合には, DIST_SUBDIR に port - の名前 (PKGNAME - からバージョン番号を取った部分を 使うといいでしょう) - を入れてください. すると, - DISTDIRがデフォルトの - /usr/ports/distfiles から - /usr/ports/distfiles/DIST_SUBDIR - に変更され, - 取ってきたファイルはすべてそのサブディレクトリの中に置か - れるようになります. - - また, - ファイルを取ってくるときにバックアップサイトとして使われる - ftp.FreeBSD.org - のディレクトリ名にもこの変数の 値が使われます. - (DISTDIRを明示的に指定し た場合には, - ローカルのファイルを置くところは変わりますが, こ - のサイトのディレクトリ名は変わりませんので, 必ず - DIST_SUBDIRを使うようにしてください.) - - - この変数は Makefile 中で明示的に指定された - MASTER_SITES - には影響しないことに注意して ください. - - - - - RCS文字列 - - RCS - が特別な意味を与えている文字列をパッチ内に入れないように - してください. - ファイルを私たちのソースツリーに入れる時にこれら - の文字列はCVSによって書き換えられてしまい, あとでまたパッチ - を使おうとした時にうまくいかないことがあります. RCS文字列は - ドル記号 ($) で囲まれており, - $FreeBSD$RCS - などで始まり ます. - - - - パッチ作成上の注意 - - diffの再帰 () - フラグを使って再帰的なパッ チを作るのは大変結構なのですが, - でき上がったパッチは必ず目で - チェックして余計なゴミが入っていないことを確認してくださ い. - よくあるのはバックアップファイル同士の変更点, あるいは - Imake や GNU configure - を使うソフトウェアの Makefile - の変更点が入っている場合などです. また, - configure.in を編集して, - autoconf を使って - configure を作り直す ときには, - configure の diff は含めずに (それらは, - 数千行になることもしばしばです), - USE_AUTOCONF=yes を定義して, - configure.in の diff - をとってください. - - ファイルをまるごと消す場合にはパッチを使わずに - post-extract - ターゲットで消す方が簡単です. できあがった 差分に満足したら, - それらをソースのファイルごとに別々の - パッチファイルに分割してください. - - - - <makevar>PREFIX</makevar> - - なるべく port は PREFIX - に対する相対パス - にインストールすることができるように心がけてください. - (この変数の値は USE_X_PREFIXか - USE_IMAKEが指定してある時には - X11BASE - (デフォルト/usr/X11R6), - そうでない場合にはLOCALBASE - (デフォルト/usr/local) - にセットされます.) - - サイトによってフリーソフトウェアが - インストールされる場所が 違いますので, ソース内で - /usr/local や - /usr/X11R6 - を明示的に書かないようにしてください. X のプログラムで - imake を使うものについては, これは問題に - はなりません. それ以外の場合には, ソース中のMakefileやスク - リプトで - /usr/local (imakeを使わないXのプログラ - ムは /usr/X11R6) と書いてあるところを - PREFIX に書き換えてください. この値は - portのコンパイル, - およびインストール時に自動的に環境変数として - 下位makeに渡されます. - - USE_X_PREFIXは本当に必要な時 (つまり, - X のライブラリなどとリンクしたり, X11BASE - 以下にある ファイルを参照したりする必要がある時) - 以外には設定しないでください. - - 変数 PREFIX の値は port の Makefile - やユーザの環境で変更することもできます. しかし, 個々の port - が Makefile - でこの変数の値を明示的に設定することはなるべくしない - でください. - - また, 他の port - からインストールされるプログラムやファイル - を指定するときには, 上で述べた変数を使用してください. - 例えば, less のフルパスを - PAGER というマクロに入れた い場合は, - コンパイラに - -DPAGER=\"/usr/local/bin/less\" - と渡すかわりに - -DPAGER=\"${PREFIX}/bin/less\" - (Xを使うportの時は - -DPAGER=\"${LOCALBASE}/bin/less\" ) - を渡し てください. こうしておけば, `/usr/local' - がまるごとどこか他 の場所に移してあるサイトでも, - あなたのportがそのまま使える 可能性が高くなります. - - - - ディレクトリ構成 - - インストール時には PREFIX - の正しいサブディ - レクトリにファイルを置くように心がけてください. ソフトウェア - によっては新しいディレクトリを - 一つ作ってファイルを全部それに 入れてしまうものがありますが, - それはよくありません. また, バ イナリ, - ヘッダファイルとマニュアル以外のすべてを - lib - というディレクトリに入れてしまうportもあります が, - これもBSD的なファイルシステム構成からいうと正しくありま - せん. これは以下のように分散すべきです. - etc にセッ - トアップ/コンフィグレーションファイル, - libexec に 内部で使用されるプログラム - (コマンドラインから呼ばれることの ないコマンド), - sbin に管理者用のコマンド, - info に GNU Info 用のドキュメント, - そして share - にアーキテクチャに依存しないファイルが入り ます. - 詳細については man &man.hier.7; を見てくださ い. - /usrの構成方針はほとんどそのまま - /usr/localにもあてはまります. USENET - “ニュース”を 扱う ports は例外です. これらは, - ファイルのインストール先として + ファイルをまるごと消す場合には, + パッチを使わずに + post-extract ターゲットで消す方が簡単です. + できあがった差分に満足したら, + それらをソースのファイルごとに別々のパッチファイルに分割してください. + + + + <makevar>PREFIX</makevar> + + なるべく port は PREFIX + に対する相対パスにインストールすることができるように心がけてください + (この変数の値は + USE_X_PREFIX か + USE_IMAKE が指定してある時には + X11BASE + (デフォルト/usr/X11R6), + そうでない場合にはLOCALBASE + (デフォルト/usr/local) + にセットされます). + + サイトによってフリーソフトウェアがインストールされる場所が違いますので, + ソース内で + /usr/local や + /usr/X11R6 + を明示的に書かないようにしてください. + X のプログラムで + imake を使うものについては, + + これは問題にはなりません. + それ以外の場合にはソース中の Makefile やスクリプトで + /usr/local + (imake を使わない X のプログラムは /usr/X11R6) + と書いてあるところを + PREFIX に書き換えてください. + この値は port のコンパイルおよび, + インストール時に自動的に環境変数として下位 make に渡されます. + + USE_X_PREFIX + は本当に必要な時 + (つまり X のライブラリなどとリンクしたり, + X11BASE 以下にあるファイルを参照したりする必要がある時) + 以外には設定しないでください. + + 変数 PREFIX の値は + port の Makefile やユーザの環境で変更することもできます. + しかし, 個々の port が Makefile + でこの変数の値を明示的に設定することはなるべくしないでください. + + また, 他の port からインストールされるプログラムやファイルを指定するときには, + 上で述べた変数を使用してください. + たとえば less のフルパスを + PAGER というマクロに入れたい場合は, + コンパイラに + -DPAGER=\"/usr/local/bin/less\" + と渡すかわりに + -DPAGER=\"${PREFIX}/bin/less\" + (X を使う port の時は + -DPAGER=\"${LOCALBASE}/bin/less\") + を渡してください. + こうしておけば /usr/local + がまるごとどこか他の場所に移してあるサイトでもあなたの port + がそのまま使える可能性が高くなります. + + + + ディレクトリ構成 + + インストール時には + PREFIX + の正しいサブディレクトリにファイルを置くように心がけてください. + ソフトウェアによっては新しいディレクトリを一つ作って, + ファイルを全部それに入れてしまうものがありますが, + それは良くありません. + また, バイナリ, ヘッダファイルとマニュアル以外のすべてを + lib + というディレクトリに入れてしまう port もありますが, + これも BSD 的なファイルシステム構成からいうと正しくありません. + これは以下のように分散すべきです. + etc + にセットアップ/コンフィグレーションファイル, + libexec + に内部で使用されるプログラム + (コマンドラインから呼ばれることのないコマンド), + sbin + に管理者用のコマンド, + info + に GNU Info 用の文書, + そして + share にアーキテクチャに依存しないファイルが入ります. + 詳細については &man.hier.7; のマニュアルページを参照してください. + /usr + の構成方針はほとんどそのまま + /usr/local にもあてはまります. + USENET ニュースを扱う ports は例外です. + これらはファイルのインストール先として PREFIX/news を使用します. - - - - 空のディレクトリの除去 - - ports は デインストール(削除) の際には, - 自分自身を消去したあとに, (ディレクトリの) - 除去をするようにしてください. これは, 大抵の場合 - @dirrm の行を ports - が作成するすべてのディレクトリについて - 加えることによって実現できます. 親ディレクトリは, - 子ディレクトリを先に消さないと - 消せないことに気をつけて下さい. - - + + + + 空のディレクトリの削除 + + ports は削除の際に, + 自分自身を消去したあとに + (ディレクトリの) + 削除をするようにしてください. + これは大抵の場合 @dirrm の行を + ports が作成するすべてのディレクトリについて加えることによって実現できます. + 親ディレクトリは子ディレクトリを先に消さないと消せないことに注意してください. + + : lib/X11/oneko/pixmaps/cat.xpm lib/X11/oneko/sounds/cat.au @@ -3384,52 +3614,51 @@ lib/X11/oneko/sounds/cat.au @dirrm lib/X11/oneko/sounds @dirrm lib/X11/oneko - といった感じです. + といった感じです. + + しかし時として, + 他の port とディレクトリを共有しているために + @dirrm がエラーを返すことがあります. + rmdir を + @unexec + から呼びだすことによって, + 警告(warning)なしで空のディレクトリのみを削除することができます. + - しかし, ときとして, 他の port - をディレクトリを共有しているために @dirrm - がエラーを返すことがあります. rmdir を - @unexec から呼びだすことによって, - 警告(warning)なしで - 空のディレクトリのみを削除することができます: - - - + @unexec rmdir %D/share/doc/gimp 2>/dev/null || true - - これを使えば, たとえ, 他の port がファイルを - インストールしていて, - PREFIX/share/doc/gimp - が空でない場合でも エラーメッセージは表示されませんし, - pkg_delete - が異常終了することもありません. - - - - UID - - もしあなたの - portがインストールされるシステム上に特定のユー - ザを必要とする場合は, pkg/INSTALL - スクリプトから pw - コマンドを実行して自動的にそのユーザを追加するよ - うにしてください. net/cvsup-mirror の - portが参考になるでしょう. - - もしあなたの port が, バイナリのパッケージとしてとして - インストールされるときにも, - コンパイルされたときと同じユーザー/グループ ID - を使わなければならないのなら, 50 から 99 の間で空いている - UID を選んで登録してください. - japanese/Wnn の port - が参考になるでしょう. - - 既にシステムや他の portで利用されている - UIDを使わないように 十分注意してください. 現在の 50から - 99までの間の UIDは以下の とおりです. - - + + これを使えば, たとえ他の + port がファイルをインストールしていて + PREFIX/share/doc/gimp + が空でない場合でもエラーメッセージは表示されませんし, + pkg_delete + が異常終了することもありません. + + + + UID + + あなたの port が, + インストールされるシステム上に特定のユーザを必要とする場合は + pkg/INSTALL スクリプトから + pw + コマンドを実行して自動的にそのユーザを追加するようにしてください. + net/cvsup-mirror の port が参考になるでしょう. + + あなたの port がバイナリの + package としてインストールされる場合とコンパイルされる場合の両方で, + 同じユーザー/グループ ID + を使わなければならないのなら, 50 から 99 の間で空いている UID を選んで登録してください. + japanese/Wnn の port + が参考になるでしょう. + + 既にシステムや他の port で利用されている + UIDを使わないように十分注意してください. + 現在の 50 から 99 までの間の UID は以下のとおりです. + + majordom:*:54:54:Majordomo Pseudo User:/usr/local/majordomo:/nonexistent cyrus:*:60:60:the cyrus mail server:/nonexistent:/nonexistent gnats:*:61:1:GNATS database owner:/usr/local/share/gnats/gnats-db:/bin/sh @@ -3450,132 +3679,157 @@ qmailr:*:86:82:QMail user:/var/qmail:/nonexistent msql:*:87:87:mSQL-2 pseudo-user:/var/db/msqldb:/bin/sh mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin - このリストを最新の状態に保つためにも, - この範囲の UID や GID を予約するような port を作ったり, - 既存の port にそのような改変を行って我々に送るときには, - UID の予約に関する注意書きをつけてください. - + このリストを最新の状態に保つためにも, + この範囲の UID や GID を予約するような port を作ったり, + 既存の port にそのような改変を行ってわたしたちに送るときには + UID の予約に関する注意書きをつけてください. + + + + 合理的な port + + Makefile + は単純かつ適切であるべきです. もし, + Makefile を数行短かくできたり, + もっと読みやすくできるのであればそうしてください. + たとえば, + シェルの if 構文を使うかわりに + make の .if 構文を使う, + EXTRACT* の再定義で代用できるのであれば + do-extract を再定義しない, + CONFIGURE_ARGS += --prefix=${PREFIX} + とするかわりに + GNU_CONFIGURE とする, などです. + + + + <makevar>CFLAGS</makevar> の尊重 + + CFLAGS 変数は尊重すべきです. + port がこれを無視する場合は, + NO_PACKAGE=ignores cflags を + Makefile に加えてください. - - 合理的な port + CFLAGS 変数をきちんと考慮した + Makefile の例を以下に示します. + += の部分に注目してください. + + CFLAGS += -Wall -Werror - Makefile - は単純かつ適切であるべきです. もし, - Makefile を数行短かくできたり, - もっと読みやすくできるのであれば, そうしてください. 例えば, - shell の if 構文を使う代りに, make の - .if 構文を使う, - EXTRACT* の再定義で代用できるのであれば, - do-extract を再定義しない, - CONFIGURE_ARGS += - --prefix=${PREFIX} とするかわりに, - GNU_CONFIGURE とする, などです. - + 次は CFLAGS + 変数を考慮しない Makefile の例です. + + CFLAGS = -Wall -Werror - - <makevar>CFLAGS</makevar> の尊重 + CFLAGS 変数は, + FreeBSD システムの + /etc/make.conf + で定義されています. + 最初の例では既存の定義を保存しつつ CFLAGS + 変数にオプションフラグを追加しているのに対し, + 二番目の例では既存の定義をすべて無効にしてしまっています. + + + + コンフィグレーション (設定) ファイル + + もしあなたの port が設定ファイルを + PREFIX/etc + に置く必要がある場合には, それを単純にインストールしたり, + pkg/PLIST + に加えてはいけません. + こうしてしまうと + pkg_delete + によってユーザが苦労して作ったファイルが消えてしまったり, + 新しくインストールする時に上書きされてしまったりします. + + かわりに見本となるファイルを + サフィックス + (filename.sample が良いでしょう) + を付けてインストールしてメッセージを表示し, + ソフトウェアを動かす前にユーザがそのファイルをコピーして編集をしなければならないことを知らせましょう. + + - CFLAGS 変数は尊重すべきです. その - port がこれを無視するのであれば, - NO_PACKAGE=ignores cflags を - Makefile に加えてください. - + + portlint + + 送付や commit をする前に + portlint + を使ってチェックしましょう. + + + + フィードバック + + port を作るためにソフトウェアに変更を加えたら, + なるべく原作者にその旨を伝えてパッチ等を送ってください. + これらが次のリリースに取り入れられればアップグレードが楽になります. + - - コンフィグレーション(設定)ファイル + + <filename>README.html</filename> + + + README.html というファイルを含めてはいけません. + このファイルは, cvs コレクションの一部ではなく, + make readme コマンドで生成されるファイルです. + + + + その他諸々 + + pkg/DESCR, + pkg/COMMENT, + pkg/PLIST などのファイルはそれぞれ二重にチェックしてください. + 再検討してもっと良い記述があればそれに置きかえてください. + + GNU General Public License + (GNU一般公有使用許諾) + のコピーは + (すでにあるので) + コピーしないでください. + お願いします. + + 法律に関することには十分注意をはらってください. + わたしたちに法律に反するような形でソフトウェアの配布をさせないでください! + - もしあなたの port が設定ファイルを - PREFIX/etc - に置く必要がある場合には, それを単純にインストールしたり, - pkg/PLIST - に加えてはいけません. こうしてしまうと, - pkg_delete が - ユーザが苦労して作ったファイルを消してしまったり, 新しく - インストールすると上書きされてしまったりします. + + 困ったら.... + + わたしたちに質問を送る前に, + 既存の port の例と + bsd.port.mk をちゃんと読んでください! + ;) + + それでもわからないことがあったら一人で悩まないでどんどん質問してください! + :-) + + - 代りに, 見本となるファイルを suffix ( - - filename.sample が良いでしょう) - を付けて インストールして, - message を表示して, ソフトウエアを動かす前に, - ユーザがそのファイル - をコピーして編集をしなければならないことを知らせましょう. - - - - - Portlint - - 送付や commit をする前に portlint - を使ってチェックしましょう. - - - - フィードバック - - Portを作るためにソフトウェアに変更を加えたら, - なるべく原作者にその旨を伝えてパッチ等を送ってください. - これらが次のリリースに取り入れられれば, - アップグレードが楽になります. - - - - その他諸々 - - pkg/DESCR, - pkg/COMMENT, - pkg/PLIST などのファイルは, - それぞれ2重にチェックしてください. - 再検討してもっと良い記述があれば, - それに置きかえてください. - - GNU General Public License - (GNU一般公有使用許諾)のコピーは - (すでにあるので)コピーしないでください, - おねがいします. - - 法律に関することには, 十分注意をはらってください. - 私達に法律に反するような形でソフトフェアの配布をさせない - でください! - - - - 困ったら.... - - 私たちに質問を送る前に, - 既存のportの例とbsd.port.mkを - ちゃんと読んでください! ;) - - それでもわからないことがあったら, - 一人で悩まないでどんどん 質問してください! :-) - - - - - <filename>Makefile</filename> のお手本 - - これはportの Makefile - を作る際のお手本です. かぎかっこ - ([])内のコメントは忘れずに取ってください. - - 変数の順番, 段落の間の空行など, - Makefile を作るときはなるべくこ - の形式にしたがってください. - この形式は重要な情報が簡単に見つけられるように - 設計されています. portlint を使って - Makefile をチェックすることが - 推奨されています. - - -[ヘッダ -- どのようなportのMakefileかすぐにわかるようになっています] + + <filename>Makefile</filename> のサンプル + + これは port の + Makefile を作る際のお手本です. + かぎかっこ ([]) 内のコメントは忘れずに取ってください. + + 変数の順番, 段落の間の空行など, + Makefile + を作るときはなるべくこの形式に従ってください. + この形式は重要な情報が簡単に見つけられるように設計されています. + portlint を使って + Makefile をチェックすることが推奨されています. + + +[ヘッダ ... どのような port の Makefile かすぐにわかるようになっています] # New ports collection makefile for: xdvi -# Version required: pl18 ["1.5alpha" みたいなのでも結構です] -[この Makefile の最初の版が作成された日付です. この port をアップグ - レードするときには変えないでください.] +["version required" 行は, PORTVERSION 変数では port のバージョンを +十分に表現できない場合にのみ必要です. ] +# Version required: pl18 + japanization patches 18.1 and 18.2 +[この Makefile の最初の版が作成された日付です. + この port をアップグレードするときには変えないでください.] # Date created: 26 May 1995 [このソフトウェアを最初に FreeBSD に port した人の名前, つまり, この Makefile の最初の版を書いた人です. この port をアップグレー @@ -3587,21 +3841,24 @@ mysql:*:88:88:MySQL Daemon:/var/db/mysql:/sbin/nologin 置き換えられます.] # -[Port自体, およびオリジナルのソースを取ってくるところを記述する部分. - 最初は必ずDISTNAME, そして必要ならPKGNAME, CATEGORIES, 続いて - MASTER_SITESがおかれ, さらに MASTER_SITE_SUBDIR がおかれることもあり - ます. そのあと, EXTRACT_SUFX か DISTFILES を指定することも可能です] -DISTNAME= xdvi -PKGNAME= xdvi-pl18 +[port 自体, およびオリジナルのソースを取ってくるところを記述する部分. + 最初は必ず PORTNAME と PORTVERSION, そして必要なら PKGNAME, + CATEGORIES, 続いて MASTER_SITES が置かれ, さらに MASTER_SITE_SUBDIR が + 置かれることもあります. 必要なら PKGNAMEPREFIX と PKGNAMESUFFIX が + それに続き, そして DISTNAME, EXTRACT_SUFX, DISTFILES が, + また, その後に必要に応じて EXTRACT_ONLY が置かれます.] +PORTNAME= xdvi +PORTVERSION= 18.2 CATEGORIES= print [MASTER_SITE_* マクロを使用しない場合は, 最後のスラッシュを忘れないように ("/")!] MASTER_SITES= ${MASTER_SITE_XCONTRIB} MASTER_SITE_SUBDIR= applications +DISTNAME= xdvi-pl18 [ソースファイルが標準の ".tar.gz" 形式でない時にこれを使いましょう] EXTRACT_SUFX= .tar.Z -[配布パッチのセクション -- ない場合もあります] +[配布パッチセクション -- ない場合もあります] PATCH_SITES= ftp://ftp.sra.co.jp/pub/X11/japanese/ PATCHFILES= xdvi-18.patch1.gz xdvi-18.patch2.gz @@ -3615,21 +3872,21 @@ MAINTAINER= asami@FreeBSD.org RUN_DEPENDS= gs:${PORTSDIR}/print/ghostscript LIB_DEPENDS= Xpm.5:${PORTSDIR}/graphics/xpm -[ここには標準のbsd.port.mkの変数で, 上のどれにもあてはまらないものを +[ここには標準の bsd.port.mk の変数で, 上のどれにもあてはまらないものを 書きます] [コンフィグレーション, コンパイル, インストールなどの時に質問をする なら...] IS_INTERACTIVE=yes -[${DISTNAME}以外のディレクトリにソースが展開されるなら...] +[${DISTNAME} 以外のディレクトリにソースが展開されるなら...] WRKSRC= ${WRKDIR}/xdvi-new [配布されているパッチが ${WRKSRC} に対する相対パスで作られてい い場合にこの変数の指定が必要かも...] PATCH_DIST_STRIP= -p1 -[GNU autoconfによって生成された "configure" スクリプトを走らせたいなら...] +[GNU autoconf によって生成された "configure" スクリプトを走らせたいなら...] GNU_CONFIGURE= yes -[/usr/bin/makeでなく, GNU makeを使わないといけないなら...] +[/usr/bin/makeでなく, GNU make を使わないといけないなら...] USE_GMAKE= yes -[これがXのアプリケーションで "xmkmf -a" を走らせたいなら...] +[これが X のアプリケーションで "xmkmf -a" を走らせたいなら...] USE_IMAKE= yes [などなど] @@ -3648,708 +3905,795 @@ pre-install: [最後には必ず] .include <bsd.port.mk> - + - - 自動的な package list の生成 + + パッキングリストの自動生成 - まず, あなたの port が PLISTPLIST の - ないことを除いて完全なことを確認し, - 空の PLIST を作ってください. - - &prompt.root; touch PLIST - - 次に, あなたの port をインストールすることができるディレクトリ階層 - を新たに作成してください. また, 依存するものをインストールしてください. - - &prompt.root; mtree -U -f /etc/mtree/BSD.local.dist -d -e -p /var/tmp/port-name + まず, あなたの port に + PLIST + がないことを除いて完全なことを確認して, + 空の PLIST を作ってください. + + &prompt.root; touch PLIST + + 次に, あなたの port + をインストールすることができるディレクトリ階層を新たに作成してください. + また, 依存するものをインストールしてください. + + &prompt.root; mtree -U -f /etc/mtree/BSD.local.dist -d -e -p /var/tmp/port-name &prompt.root; make depends PREFIX=/var/tmp/port-name - このディレクトリ構造を新しいファイルに保存してください. + このディレクトリ構造を新しいファイルに保存してください. - &prompt.root; (cd /var/tmp/port-name && find * \! -type d) > OLD-DIRS + &prompt.root; (cd /var/tmp/port-name && find * \! -type d) > OLD-DIRS - もしあなたの port が PREFIX にちゃんと従うなら, - ここで port をインストールして package list を作ることができます. + もしあなたの port が PREFIX にちゃんと従うなら, + ここで port をインストールしてパッキングリストを作ることができます. - &prompt.root; make install PREFIX=/var/tmp + &prompt.root; make install PREFIX=/var/tmp &prompt.root; (cd /var/tmp/port-name && find * \! -type d) > pkg/PLIST - 新しく生成されたディレクトリはいずれも packing list に追加する - 必要があります. + 新しく生成されたディレクトリはすべてパッキングリストに追加する必要があります. - &prompt.root; (cd /var/tmp/port-name && find * -type d) | comm -13 OLD-DIRS - | sed -e 's#^#@dirrm#' >> pkg/PLIST + &prompt.root; (cd /var/tmp/port-name && find * -type d) | comm -13 OLD-DIRS - | sed -e 's#^#@dirrm#' >> pkg/PLIST - 最後に, packing list を手で整える必要があります. - 完全に自動化されていると言ったのはうそです. マニュアルのファイルは - port の Makefile 中の - MANn に記述されるべきで, - package list にではありません. ユーザ設定ファイルは取り除くか, - filename.sample - としてインストールされるべきです. - port によってインストールされるライブラリは, - ldconfig の節で明示したように - 記載されるべきです. - - - - Packageの名前 - - Package の名前は以下のルールにしたがってつけてください. こ - れは package のディレクトリを見やすくするためで, 無秩序な名前 - がたくさん並んでいるとユーザが使いづらくなるのでは - という心配か らです. - (FTPサイトなどにはたくさんpackageがありますからね.) - - Packageの名前は以下のようにしてください. - - 言語-名前-オプション - バージョン.番号 - - - DISTNAME - が上記の形式になっていない場合に は, - PKGNAME をそのようにしてください. - - + 最後に, パッキングリストを手で整える必要があります. + 完全に自動化されていると言ったのはうそです. + マニュアルページファイルはパッキングリストにではなく, + port の Makefile 中の + MANn + に記述しなければなりません. + ユーザ設定ファイルは削除するか + filename.sample + としてインストールされなければなりません. + また info/dir + ファイルはリストに含めず, + info ファイルに記述されているように, + 適切な install-info 行に追加しなければなりません. + port によってインストールされるライブラリは, + ldconfig + の節で示したように記載されるべきです. + + + + package の名前 + + package の名前は以下のルールにしたがってつけてください. + これは package のディレクトリを見やすくするためで, + 無秩序な名前がたくさん並んでいるとユーザが使いづらくなるのではという心配からです + (FTP サイトなどにはたくさん package がありますからね). + + package の名前は以下のようにしてください. + 言語-名前-オプションバージョン.番号 + + package 名は + ${PKGNAMEPREFIX}${PORTNAME}${PKGNAMESUFFIX}-${PORTVERSION} + というように定義されています. + 変数がこの書式と適合していることを確認してください. + + + + FreeBSD + はユーザの慣れ親しんだ言語のサポートに力を入れています. + 特定の言語のための port の package 名には + 言語- に ISO-639 + で定義されている言語名の略称を入れてください. + たとえば日本語なら ja, + ロシア語なら ru, + ベトナム語なら vi, + 中国語なら zh, + 韓国語ならば ko, + ドイツ語なら de + といった具合です. + + port がある言語地域に特化したものである場合には, + さらに二文字の国名コードを付加してください. + たとえば合衆国英語圏は en_US となり, + スイスのフランス語圏は fr_CH となります. + + 言語- 部分は, + PKGNAMEPREFIX 変数に定義されなければなりません. + + - FreeBSD - はユーザの慣れ親しんだ言語のサポートに力を入れて います. - 特定の言語のためのportのpackage名には - 言語- に ISO-639 - で定義されている言語名の略称を入れ てください. 例えば, - 日本語なら ja, ロシア語なら - ru, ベト ナム語なら - vi, 中国語なら zh, - 韓国語ならば ko, ドイツ 語なら - de, といった具合です. - - - - 名前 - の部分は原則的にはすべて英小文字 を使います. - 例外はたくさんのプログラムが入っている巨大なport の場合で, - XFree86 (ほんとにあるんですよ) やImageMagickな - どがこれにあたります. そうでない場合には, - 名前の大文字を小文 字に (少なくとも最初の一字だけは) - 変えてください. もし, 大文字であることが重要な場合(例えば, - 1文字の名前, R とか - V)には, - あなたの裁量で大文字を使うのも良いでしょう. Perl 5 - のモジュールでは, 頭に p5- を付け, - 2重コロン (::) のセパレータをハイフン( - - ) に置きかえるしきたりになっています. - 例えば, Data::Dumper は - p5-Data-Dumper になります. また, その - ソフトウェアの名前として通常使われるものに番号, ハイフン, - あ るいは下線が入っている場合には, - それらを使うことも構いません (kinput2 - など). - - - - コンパイル時に環境変数や make - の引数などで - ハードコードされたデフォルト - を変えてコンパイルできる場合, - -compiled.specifics - にそのコンパイル時のデフォルトを入れてください - (ハイフンはあってもなくてもかまいません). 用紙のサイズ, - あるいはフォントの解像度などがこれにあたります. - - - - バージョン番号は数字とアルファベットからなり, ピリオド - (.) で区切ります. - アルファベットは二文字以上続けてはいけませ ん. - ただ一つの例外は「パッチレベル」を意味する - pl で, それ 以外にバージョン番号が - まったくついていない場合にのみ使うことがで きます. - - - - では, DISTNAMEを正しい - PKGNAMEに直す例を見てみましょう: - + 名前の部分は原則的にはすべて英小文字を使います. + 例外はたくさんのプログラムが入っている巨大な port の場合で, + XFree86 (ほんとにあるんですよ) や + ImageMagick + などがこれにあたります. + そうでない場合には名前の大文字を小文字に + (少なくとも最初の一字だけは) + 変えてください. + もし大文字であることが重要な場合 + (たとえば一文字の名前, + R とか V) + には, + あなたの裁量で大文字を使うのも良いでしょう. + Perl 5 のモジュールでは先頭に + p5- を付け, + 二重コロン (::) + のセパレータをハイフン + (-) + に置きかえる習慣になっています. + たとえば + Data::Dumper は + p5-Data-Dumper になります. + また, そのソフトウェアの名前として通常使われるものに番号, + ハイフン, あるいは下線が入っている場合には, + それらを使うことも構いません + (kinput2など). + + + + コンパイル時に環境変数や + make の引数などでハードコードされたデフォルトを変えてコンパイルできる場合, + -compiled.specifics + にそのコンパイル時のデフォルトを入れてください + (ハイフンはあってもなくてもかまいません). + 用紙のサイズ, あるいはフォントの解像度などがこれにあたります. + + compiled.specifics 部分は, + PKGNAMESUFFIX 変数に定義されなければなりません. + + + + バージョン番号は数字とアルファベットからなり, + ピリオド (.) で区切ります. + アルファベットは二文字以上続けてはいけません. + ただ一つの例外は「パッチレベル」を意味する + pl で, + それ以外にバージョン番号がまったくついていない場合にのみ使うことができます. + もしソフトウェアのバージョンに + "alpha", "beta" や "pre" といった文字列が含まれる場合には, + ピリオドの後に最初の一文字をとってください. + これらの後に, さらにバージョン文字列が続く場合には, + 一文字のアルファベットの後にピリオドをつけずに番号を続けます. + + この考え方は, + バージョン文字列を見て簡単に ports を並べられるようにするためのものです. + 特に, バージョン番号の各部分が必ずピリオドで区切られていること, + また日付の部分がバージョン文字列の一部となっている場合には + + yyyy.mm.dd + + という書式を使っていることを確認してください. + + dd.mm.yyyy + + や, 2000 年問題に対応していない + + yy.mm.dd + + という書式を使ってはいけません. + + + + では, DISTNAMEを正しい + PKGNAME + に直す例を見てみましょう: + + 以下は, ソフトウェアの作者が決めた名前から + 適切な package 名に変換する方法を示した (実際の) 例です. + + + + + + 配布名 + PKGNAMEPREFIX + PORTNAME + PKGNAMESUFFIX + PORTVERSION + 理由 + + + + + + mule-2.2.2 + (空) + mule + (空) + 2.2.2 + 変更の必要はありません + + + + XFree86-3.3.6 + (空) + XFree86 + (空) + 3.3.6 + 変更の必要はありません + + + + EmiClock-1.0.2 + (空) + emiclock + (空) + 1.0.2 + プログラム一つだけの時は小文字のみ + + + + rdist-1.3alpha + (空) + rdist + (空) + 1.3.a + alpha のような文字列は使えない + + + + es-0.9-beta1 + (空) + es + (空) + 0.9.b1 + alpha のような文字列は使えない + + + + v3.3beta021.src + (空) + tiff + (空) + 3.3 + なんなんでしょう ;) + + + + tvtwm + (空) + tvtwm + (空) + pl11 + バージョン番号は必ず必要 + + + + piewm + (空) + piewm + (空) + 1.0 + 同上 + + + + xvgr-2.10pl1 + (空) + xvgr + (空) + 2.10.1 + pl が使えるのは, + 他にメジャー/マイナーバージョン番号がない場合のみ + + + + gawk-2.15.6 + ja- + gawk + (空) + 2.15.6 + 日本語バージョン + + + + psutils-1.13 + (空) + psutils + -letter + 1.13 + コンパイル時に用紙のサイズを指定 + + + + pkfonts + (空) + pkfonts + 300 + 1.0 + 300dpiフォント用の package + + + + + + オリジナルのソースにまったくバージョン情報が見当たらず, + また原作者が新しいバージョンをリリースする可能性が低いときには, + バージョン番号として + 1.0 を使えばいいでしょう + (上記の piewm の例がこれにあたります). + そうでない場合には原作者に聞くか, 日付 + (yyyy.mm.dd) + を使うなどしてください. + + + + カテゴリ + + すでにご存知のように, + ports はいくつかのカテゴリに分類されています. + これを有効に利用するためには, + port を作成する人々とユーザが, + それぞれのカテゴリが何であるか, + どのようにしてカテゴリに分類するかを理解する必要があります. + + + 現在のカテゴリのリスト + + まず, これが現在の port のカテゴリのリストです. + アスタリスク(*) + が付いているものは仮想 (virtual) + カテゴリです — + これらには対応するサブディレクトリが port ツリーにはありません. + + + + 仮想カテゴリでないものは, + そのサブディレクトリ内の + pkg/COMMENT + に一行の記述があります + (例: archivers/pkg/COMMENT). + + - - - - DISTNAME - PKGNAME - 理由 - - + + + + カテゴリ + 説明 + + + + + + afterstep* + AfterStep ウィンドウマネージャをサポートする ports + + + + archivers + アーカイブ用ツール + + + + astro + 天文学関連の ports + + + + audio + サウンドをサポートする ports + + + + benchmarks + ベンチマークユーティリティ + + + + biology + 生物学関連のソフトウェア + + + + cad + CAD ツール + + + + chinese + 中国語サポート + + + + comms + 通信ソフトウェア. ほとんどはシリアルポート用です. + + + + converters + 文字コード変換 + + + + databases + データベース + + + + deskutils + コンピュータが発明される以前に机上で使われていた道具 + (訳注: いわゆるデスクトップユーティリティのこと) + + + + devel + 開発ユーティリティ. + どうしてもここに置かなければならない理由があるのでない限り, + ライブラリをここに含めないでください. + + + + editors + 一般的なエディタ. + 特殊なエディタはそれぞれふさわしいセクションに入れます + (たとえば数式エディタは math です). + + + + elisp + Emacs-lisp の ports + + + + emulators + 他のオペレーティングシステムのエミュレータ. + 端末エミュレータはここに含まれません — + X ベースのものは x11 に, + テキストベースのものは機能によって + comms か + misc に分類されます. + + + + ftp + FTP クライアントとサーバユーティリティ. + port が FTP と HTTP の両方をサポートしていれば, + ftp + に入れ, 第二カテゴリを + www とします. + + + + games + ゲーム + + + + german + ドイツ語サポート + + + + gnome* + GNU Object Model Environment (GNOME) + プロジェクトの ports + + + + graphics + グラフィックユーティリティ + + + + irc + インターネットリレーチャット (IRC) 用ユーティリティ + + + + ipv6* + IPv6 関連のソフトウェア + + + + japanese + 日本語サポート + + + + java + Java 言語サポート + + + + kde* + K Desktop Environment (kde) の ports + + + + korean + 韓国語サポート + + + + lang + プログラミング言語 + + + + linux* + Linux アプリケーションとサポートユーティリティ + + + + mail + メールソフトウェア + + + + math + 数値計算ソフトウェアやその他の数学ソフトウェア + + + + mbone + MBone アプリケーション + + + + misc + 種々のユーティリティ + — + 基本的に他のカテゴリに属さないものです. + これは他の仮想でないカテゴリを伴わない, 唯一のカテゴリです. + misc と他のカテゴリが + CATEGORIES 行に書かれている場合, + misc + を削除して他のサブディレクトリにおいて良いという意味になります. + + + + net + 種々のネットワークソフトウェア + + + + news + USENET ニュースソフトウェア + + + + offix* + OffiX suite の ports + + + + palm + 3Com Palm(tm) シリーズをサポートするソフトウェア + + + + perl5* + 実行に perl バージョン 5 を必要とする ports + + + + plan9* + Plan9 に由来するさまざまなソフトウェア + + + + print + 印刷ソフトウェア. + DTP 用ツール (プレビュアなど) もここに分類されます. + + + + python* + python 言語で書かれたソフトウェア + + + + russian + ロシア語サポート + - - - mule-2.2.2. - mule-2.2.2 - まったく問題なし - + + security + セキュリティ関連のユーティリティ + + + + shells + コマンドラインシェル + + + + sysutils + システムユーティリティ + + + + tcl75* + 実行に Tcl バージョン 7.5 を必要とする ports + + + + tcl76* + 実行に Tcl バージョン 7.6 を必要とする ports + - - XFree86-3.1.2 - XFree86-3.1.2 - 同上 - - - - EmiClock-1.0.2 - emiclock-1.0.2 - プログラム一つだけの時は小文字のみ - - - - gmod1.4 - gmod-1.4 - - `<名前>' のあとにハイフンが必要 - - - - xmris.4.0.2 - xmris-4.0.2 - 同上 - - - - rdist-1.3alpha - rdist-1.3a - alphaのような文字列は使えない - - - - - es-0.9-beta1 - es-0.9b1 - 同上 - - - - v3.3beta021.src - tiff-3.3 - なんなんでしょう ;) - - - - tvtwm - tvtwm-pl11 - バージョン番号は必ず必要 - - - - piewm - piewm-1.0 - 同上 - - - - xvgr-2.10pl1 - xvgr-2.10.1 - pl - が使えるのは他にバージョン番号がない場合のみ - - - - gawk-2.15.6 - ja-gawk-2.15.6 - 日本語バージョン - - - - psutils-1.13 - psutils-letter-1.13 - コンパイル時に用紙のサイズを指定 - - - - pkfonts - pkfonts300-1.0 - 300dpiフォント用のpackage - - - + + tcl80* + 実行に Tcl バージョン 8.0 を必要とする ports + + + + tcl81* + 実行に Tcl バージョン 8.1 を必要とする ports + + + + textproc + テキスト処理ユーティリティ. + DTP ツールはここではなく, print/ に分類されます. + + + + tk41* + 実行に Tk バージョン 4.1 を必要とする ports + + + + tk42* + 実行に Tk バージョン 4.2 を必要とする ports + + + + tk80* + 実行に Tk バージョン 8.0 を必要とする ports + + + + tk81* + 実行に Tk バージョン 8.1 を必要とする ports + + + + tkstep80* + 実行に TkSTEP バージョン 8.0 を必要とする ports + + + + vietnamese + ベトナム語サポート + + + + windowmaker* + WindowMaker ウィンドウマネージャをサポートする ports + + + + www + World Wide Web 関連のソフトウェア. + HTML 言語サポートもここに分類されます. + + + + x11 + X ウィンドウシステムとその関連ソフトウェア. + このカテゴリは, + 直接ウィンドウシステムをサポートするソフトウェアのみを対象とするものです. + 通常の X アプリケーションをここに分類しないでください. + あなたの port が X アプリケーションで, + USE_XLIB が定義 + (USE_IMAKE を定義すると自動的に定義されます) + されている場合は, 適切なカテゴリに分類してください. + また, それらのほとんどは他の x11-* + カテゴリ (下記参照) に分類されます. + + + + x11-clocks + X11 用時計 + + + + x11-fm + X11 用ファイルマネージャ + + + + x11-fonts + X11 フォントとフォントユーティリティ + + + + x11-servers + X11 サーバ + + + + x11-toolkits + X11 ツールキット + + + + x11-wm + X11 ウィンドウマネージャ + + + - - オリジナルのソースにまったくバージョン情報が見当たらず, - また原作 - 者が新しいバージョンをリリースする可能性が低いときには, - バージョ ン番号として 1.0 - を使えばいいでしょう (上記のpiewmの例がこ れにあたります). - そうでない場合には, 原作者に聞くか, 日付 - ( - 年. - .) - を使うなどしてください. - - - - カテゴリ - - すでに御存知のように, ports はいくつかのカテゴリに - 分類されています. これを有効に利用するためには, port を - 行う人々とユーザが, そろぞれのカテゴリが何であるか, - どのようにしてカテゴリに分類するかを理解する必要が - あります. - - - 現在のカテゴリのリスト - - まず, これが現在の port のカテゴリーのリストです. - アスタリスク(*) が付いているものは, - バーチャル(virtual) カテゴリです -- - これらには対応するサブディレクトリが port - ツリーにはありません. - - - - バーチャルカテゴリでないものは, - そのサブディレクトリ内の pkg/COMMENT - に1行の記述があります (例, - archivers/pkg/COMMENT). - - - - - - - Category - Description - - - - - - afterstep* - Ports to support AfterStep window manager - - - - archivers - Archiving tools. - - - - astro - Astronomical ports. - - - - audio - Sound support. - - - - benchmarks - Benchmarking utilities. - - - - biology - Biology-related software. - - - - cad - Computer aided design tools. - - - - chinese - Chinese language support. - - - - comms - Communication software. Mostly software to talk to - your serial port. - - - - converters - Character code converters. - - - - databases - Databases. - - - - deskutils - Things that used to be on the desktop before - computers were invented. - - - - devel - Development utilities. Do not put libraries here just - because they are libraries—unless they truly don't - belong to anywhere else, they shouldn't be in this - category. - - - - editors - General editors. Specialized editors go in the - section for those tools (e.g., a mathematical-formula - editor will go in math). - - - - elisp - Emacs-lisp ports. - - - - emulators - Emulators for other operating systems. Terminal - emulators do not belong - here—X-based ones should go to - x11 and text-based ones to either - comms or misc, - depending on the exact functionality. - - - - ftp - FTP client and server utilities. If your - port speaks both FTP and HTTP, put it in - ftp with a secondary - category of www. - - - - games - Games. - - - - german - German language support. - - - - gnome* - Ports from the GNU Object Model Environment (GNOME) - Project. - - - - graphics - Graphics utilities. - - - - irc - Internet Chat Relay utilities. - - - - japanese - Japanese language support. - - - - java - Java language support. - - - - kde* - Ports that form the K Desktop Environment - (kde). - - - - korean - Korean language support. - - - - lang - Programming languages. - - - - mail - Mail software. - - - - math - Numerical computation software and other utilities - for mathematics. - - - - mbone - MBone applications. - - - - misc - Miscellaneous utilities—basically things that - doesn't belong to anywhere else. This is the only category - that should not appear with any other non-virtual - category. If you have misc with - something else in your CATEGORIES line, - that means you can safely delete misc - and just put the port in that other subdirectory! - - - - net - Miscellaneous networking software. - - - - news - USENET news software. - - - - offix* - Ports from the OffiX suite. - - - - palm - Software support for the 3Com Palm(tm) series. - - - - perl5* - Ports that require perl version 5 to run. - - - - plan9* - Various programs from Plan9. - - - - print - Printing software. Desktop publishing tools - (previewers, etc.) belong here too. - - - - python* - Software written in python. - - - - russian - Russian language support. - - - - security - Security utilities. - - - - shells - Command line shells. - - - - sysutils - System utilities. - - - - tcl75* - Ports that use Tcl version 7.5 to run. - - - - tcl76* - Ports that use Tcl version 7.6 to run. - - - - tcl80* - Ports that use Tcl version 8.0 to run. - - - - tcl81* - Ports that use Tcl version 8.1 to run. - - - - textproc - Text processing utilities. It does not include - desktop publishing tools, which go to print/. - - - - tk41* - Ports that use Tk version 4.1 to run. - - - - tk42* - Ports that use Tk version 4.2 to run. - - - - tk80* - Ports that use Tk version 8.0 to run. - - - - tk81* - Ports that use Tk version 8.1 to run. - - - - tkstep80* - Ports that use TkSTEP version 8.0 to run. - - - - vietnamese - Vietnamese language support. - - - - windowmaker* - Ports to support the WindowMaker window - manager - - - - www - Software related to the World Wide Web. HTML language - support belong here too. - - - - x11 - The X window system and friends. This category is - only for software that directly support the window system. - Do not put regular X applications here. If your port is - an X application, define USE_XLIB - (implied by USE_IMAKE) and put it in - appropriate categories. Also, many of them go into other - x11-* categories (see below). - - - - x11-clocks - X11 clocks. - - - - x11-fm - X11 file managers. - - - - x11-fonts - X11 fonts and font utilities. - - - - x11-servers - X11 servers. - - - - x11-toolkits - X11 toolkits. - - - - x11-wm - X11 window managers. - - - - - - - - 適切なカテゴリの選択 - - 多くのカテゴリに重なるので, どれを '第一' - カテゴリにするかを決めなければならないことが - たびたびあるでしょう. これを - うまく決めるルールがいくつかあります. - 以下はその優先順のリストで, 優先度の高いものから - 低いものの順に書いてあります. - - - - 言語特有のカテゴリがまず最初です. 例えば日本語の - X11 のフォントをインストールする port の場合, - CATEGORIES 行は japanese - x11-fonts となるでしょう. - - - - より特徴的なカテゴリが, 一般的なカテゴリより - 優先されます. 例えば, HTML エディタの場合は www - editors となり, 逆順にはしないでください. - また, port が irc, mail, - mbone, news, - security, www - のいづれかに属するとには, net - は必要ありません. - - - - x11 を第2カテゴリにするのは, - 第1カテゴリが自然言語の場合のみにしてください. 特に X - のアプリケーションには x11 - を指定しないでください. - - - - もし, あなたの port が他のどのカテゴリにも - 属しないばあいには, misc - にしてください. - - - - もし, あなたがカテゴリについて自信が持てない場合には, - そのことを send-pr するときに - 書き加えてください. そうすれば import するまえに - それについて議論できます. (もしあなたが commiter であれば, - そのことを &a.ports に送って, 先に議論 - するようにしてください — 新しい port - が間違ったカテゴリに import されて, - すぐ移動されることが多いので.) - - - - - このドキュメントと ports システムの変更 - - もしあなたが, たくさんの ports の保守を - しているのであれば, &a.ports メーリングリストの内容を - フォロウすることを考えてください. Ports - のしくみについての重要な変更点はここに アナウンスされます. - 最新の変更点については, いつでも, the bsd.port.mk CVS log で詳細な情報を得ることができます. - - - - - やっとおしまい! - - いやはや, 長い文章ですみません. - ここまで読んでくださった方に は感謝, 感謝でございます. - さあ, portの作り方がわかったところで, - 世界中のソフトウェア をport化しましょう. - FreeBSDプロジェクトに貢献するには, それ - がもっとも簡単な方法です! - :-) - + + + + 適切なカテゴリの選択 + + 多くのカテゴリに重なるので, + どれを第一カテゴリにするかを決めなければならないことがたびたびあるでしょう. + これをうまく決めるルールがいくつかあります. + 以下はその優先順のリストで, 優先度の高いものから低いものの順に書いてあります. + + + + 言語特有のカテゴリがまず最初です. + たとえば日本語の + X11 のフォントをインストールする port の場合, + CATEGORIES 行は + japanese x11-fonts + となるでしょう. + + + + より特徴的なカテゴリが, + 一般的なカテゴリより優先されます. + たとえば, HTML エディタの場合は www editors となります. + これを逆順にはしないでください. + また, + port が irc, + mail, + mbone, + news, + security, + www + のいずれかに属する場合には + net + は必要ありません. + + + + x11 + を第二カテゴリにするのは第一カテゴリが自然言語の場合のみにしてください. + 特に X のアプリケーションには + x11 + を指定しないでください. + + + + もし, あなたの port が他のどのカテゴリにも属しない場合には + misc にしてください. + + + + もし, あなたがカテゴリについて自信が持てない場合には, + そのことを send-pr する時に書き加えてください. + そうすれば import する前にそれについて議論できます + (もしあなたがコミッターであれば, + そのことを &a.ports; に送って先に議論するようにしてください + — 新しい port が間違ったカテゴリに import + されて, すぐ移動されることが多いので). + + + + + この文書と ports システムの変更 + + もしあなたが, たくさんの ports の保守をしているのであれば, + &a.ports; メーリングリストの内容を読むことを考えてください. + ports のしくみについての重要な変更点はここに アナウンスされます. + 最新の変更点については, いつでも, + bsd.port.mk + の CVS ログで詳細な情報を得ることができます. + + + + やっとおしまい! + + いやはや, 長い文章ですみません. + ここまで読んでくださった方には感謝, 感謝でございます. + さあ, port の作り方がわかったところで世界中のソフトウェアを + port 化しましょう. + FreeBSD プロジェクトに貢献するには, + それが最も簡単な方法です! + :-) + - +