[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Packages.txt: 1.232 -> 1.265
Packages.txt: 1.232 -> 1.265 です。ツッコミをお願いします。
対応する原文の差分は
http://cvsweb.NetBSD.org/bsdweb.cgi/pkgsrc/Attic/Packages.txt.diff?r1=1.232&r2=1.265
です。
査読等の便のため、改行位置の調整はしていません。
(調整したうえでcommitします)
--- Packages.txt.orig Tue Dec 27 22:17:35 2005
+++ Packages.txt Thu Dec 29 22:23:05 2005
@@ -1,4 +1,4 @@
-# $NetBSD: Packages.txt,v 1.232 2002/02/15 09:33:43 skrll Exp $
+# $NetBSD: Packages.txt,v 1.265 2002/10/23 12:21:29 wiz Exp $
# $Id: Packages.txt,v 1.25 2005/12/27 13:17:35 kano Exp $
###########################################################################
@@ -14,7 +14,7 @@
=====
目次作成にはこのコマンドを実行します:
- grep -B1 '^.====' Packages.txt | egrep -v '^.[-=]'
+ sed '/^.====/{g;p;};h;d' Packages.txt
0 イントロダクション
@@ -246,12 +246,6 @@
い場合は、「make fetch-list」を実行すれば、必要なファイルがわかります。それ
らの配布ファイルを/usr/pkgsrc/distfilesに置いてください。
-動的なURLからダウンロードする必要がある場合は、DYNAMIC_MASTER_SITESを設定す
-ることができます。すると、'make fetch'は、ダウンロードすべき各ファイルを引
-数としてfiles/getsite.shを呼び出します。このスクリプトは、ファイルをダウン
-ロードするディレクトリーのURLを出力することが前提となっています。
-graphics/ns-cult3dが、この使い方の例となっています。
-
2.4 構築とインストール方法
==========================
@@ -281,9 +275,14 @@
と設定してください。なお、ルートにはパッケージ専用の場所を使うべきであり、
他のプログラムと共有させてはいけません(つまり、 LOCALBASE=/usr などとしては
-いけません)。これは、パッケージシステムがインストールするプログラムなどのファ
+いけません)。
+また、LOCALBASEツリー内には、独自のファイルやディレクトリー
+(たとえば、src, obj, pkgsrcのようなもの)は一切追加しないようにしてください。
+これは、パッケージシステムがインストールするプログラムなどのファ
イルが、そこにインストールされているかもしれない別のファイルと衝突すること
-がないようにするためです。もちろん、ひとつ例外があります。X11パッケージは伝
+がないようにするためです。
+
+もちろん、ひとつ例外があります。X11パッケージは伝
統的にX11ツリーにインストールされます。X11ツリーのルートの決定には、X11BASE
の定義が使われます。
@@ -297,6 +296,27 @@
た環境変数は、pkgsrc使用時に毎回使えるように/etc/mk.confで設定しておくこと
ができます。
+時々、 パッケージの構築やインストールの際に、
+「水面下」で何が起きているかを見たいことがあります。
+これは、デバッグのためなのかもしれませんし、好奇心が高じたものかもしれません。
+このような用途に使うための変数がいくつも用意されています。
+
+(1) makeコマンドをPKG_DEBUG_LEVEL=2付きで呼び出すと、
+大量の情報が表示されるようになります。実際の例として、
+
+ make patch PKG_DEBUG_LEVEL=2
+
+は、"patchの段階"および、
+そこに至るまでに呼び出されるコマンドをすべて表示します。
+
+(2) 特定のmake(1)定義の値を知りたい場合は、show-varターゲットとともに、
+VARNAME定義を使います。
+たとえば、
+
+ make show-var VARNAME=DISTFILES
+
+は、make(1)変数"DISTFILES"の展開結果を表示します。
+
自分で作った(次章参照)、手動でpkgsrc/packagesに置いた、またはリモートFTPサー
バーに置かれたバイナリーパッケージを、アンインストールおよび再インストール
したい場合は、"bin-install"ターゲットを使うことができます。このターゲットは、
@@ -365,23 +385,14 @@
はpkgsrc/mk/bsd.pkg.defaults.mkを見てください。ACCEPTABLE_LICENSESはローカ
ルポリシーに適合するようにしておきます:
- BATCH= yes # required for bulk builds
- DEPENDS_TARGET?= bulk-install
PACKAGES?= ${_PKGSRCDIR}/packages/${MACHINE_ARCH}
- OBJHOST?= yes # use work.`hostname`
WRKOBJDIR?= /usr/tmp/pkgsrc # build here instead of in pkgsrc
+ BSDSRCDIR= /usr/src
+ BSDXSRCDIR= /usr/xsrc # for x11/xervers
+ OBJHOSTNAME?= yes # use work.`hostname`
FAILOVER_FETCH= yes # insist on the correct checksum
PKG_DEVELOPER?= yes
- ACCEPTABLE_LICENSES= shareware \
- fee-based-commercial-use \
- mosaic-license \
- no-profit \
- no-commercial-use \
- non-commercial-use \
- limited-redistribution \
- kermit-license \
- sun-swing-license \
- sun-jsdk20-license
+ _ACCEPTABLE= yes
完全な構築のためにxpkgwedgeを使いたい場合は、以下を加えます:
@@ -502,6 +513,68 @@
ん。
+ 3.2.6 chroot構築用の砂場を用意する
+ ==================================
+
+バルクビルドによってパッケージを全部消される
+(マシンがパッケージのコンパイル以外に無用なものになってしまう)のが嫌な場合は、
+chroot環境下でパッケージをバルクビルドすることもできます。
+
+そうするためには、まず、chrootされた砂場を、たとえば/usr/sandboxに用意します。
+NetBSDのインストール配布物をすべて展開するか、
+src/etcで"make distribution DESTDIR=/usr/sandbox"を実行した後、
+以下のものを用意して適切に設定された状態にします。
+
+ * カーネル:
+ cp /netbsd /usr/sandbox
+ * /dev/*:
+ cd /usr/sandbox/dev ; sh MAKEDEV all
+ * /etc/resolv.conf (security/snmpdおよびメール用):
+ cp /etc/resolv.conf /usr/sandbox/etc
+ * 動作する(!)ようなメールの設定 (hostname, sendmail.cf):
+ cp /etc/mail/sendmail.cf /usr/sandbox/etc/mail
+ * /etc/localtime (security/snmpd用):
+ ln -sf /usr/share/zoneinfo/GMT /usr/sandbox/etc/localtime
+ * /usr/src (sysutils/aperture, net/ppp-mppe用のシステムソース):
+ ln -s ../disk1/cvs .
+ ln -s cvs/src-1.6 src
+ ln -s cvs/pkgsrc .
+ * /var/db/pkgを作成する(デフォルトのインストールには含まれません):
+ mkdir /usr/sandbox/var/db/pkg
+ * /usr/pkgを作成する(デフォルトのインストールには含まれません)
+ mkdir /usr/sandbox/usr/pkg
+ * /usr/sandbox/usr/pkgsrc内にpkgsrcをcvsからチェックアウトする
+ cvs -d cvs.netbsd.org:/cvsroot co pkgsrc
+ * /usr/pkgsrc/packages & .../distfiles (砂場の外を指します)
+ * /etc/mk.conf, 3.2.1.1節参照
+ * .../mk/bulk/build.confを調整する
+
+!!! Xをインストールするのを忘れないでください !!!
+あなたが開発者で、構築したバイナリーパッケージをftp.netbsd.orgへアップロードする場合は、
+当該アーキテクチャーおよびリリースでのデフォルトのXバージョン
+(1.6以降は、全アーキテクチャーが3.3.6)を使うようにしてください。
+
+次に、/usr/sandbox/usr/pkgsrc以下に、
+(たとえばanoncvsで)チェックアウトしたままのpkgsrcを置きます。
+開発用のpkgsrcツリーをここにマウントしたり、
+リンクしたりすると問題が起こりがちなので、
+そういうことはしてはいけません!
+.../pkgsrc/packagesおよび.../pkgsrc/distfilesのファイルを公開したい場合は、
+これらのディレクトリーが砂場の外のどこかを指すように調節します。
+
+その後、必要に合わせて.../pkgsrc/mk/bulk/build.confを設定してください!
+
+chroot砂場の用意ができれば、以下の手順で構築を開始できます:
+
+ # cd /usr/sandbox/usr/pkgsrc
+ # sh mk/bulk/do-sandbox-build
+
+このコマンドは、砂場内に移動して、激しい構築を開始するものです。
+構築が終わると、構築の結果がメールで送信されます。
+できあがったバイナリーパッケージは、
+/usr/sandbox/usr/pkgsrc/packages (の指す/マウントされた先/元)に置かれます。
+
+
3.3 CD-ROM複数枚に収めたパッケージコレクションの作成
====================================================
@@ -624,18 +697,8 @@
bsd.pkg.mkのコメントを参照。
- すべてのファイルの/usr/localを${PREFIX}に変更してください。(後述のパッチ
を参照)
- - もし、パッケージがinfoファイルをインストールするのであれば、メインのinfo
- ディレクトリーファイルにこの事実を反映するために更新する必要があります。
- NetBSDではこれを行うためのINFO_FILES定義を持っています。例えば、
- indent.infoをインストールしたことをinfoディレクトリーファイルに反映する
- には、単に
-
- INFO_FILES= indent.info
-
- とパッケージのMakefileに定義してください。もしパッケージにこれを追加する
- ならば、必需品であるGNU texinfoパッケージがあなたのシステムにインストー
- ルされているかどうかを確認するために、USE_GTEXINFOもパッケージのMakefile
- に指定してください。
+ - もし、パッケージがinfoファイルをインストールするのであれば、
+ この文書の`infoファイルが附属するパッケージ'節を参照してください。
- もしあなたが将来の更新のために、そのパッケージをメンテナンスするつもりで
あれば、MAINTAINERにあなたのメールアドレスをセットしてください。標準では
MAINTAINERはpackages@netbsd.orgにセットします。
@@ -817,8 +880,8 @@
す。このようなケースに対応するため、実際に使われる前に、PLISTに前処理が
おこなわれます。そして、シンボル「${MACHINE_ARCH}」は、「uname -p」の出
力でおきかえられます。${MACHINE_GNU_ARCH}がPLISTのどこかにうめこまれてい
- る場合も同様の事がおこなわれます。これは、GNU autoconfigureを使用してい
- るパッケージで使われます。
+ る場合も同様の事がおこなわれます。これは、GNU autoconf
+ で作成されたconfigureスクリプトを持つパッケージで使われます。
昔の話:「<$ARCH>」シンボルは「uname -m」の出力によって置きかえられていま
した。しかし、もはやサポートされていませんし、削除されています。
@@ -885,6 +948,29 @@
ンストールされうる三つの場所を表すもので、packlistを持たないperl5パッケージ
で使うことができます。この3変数の置換は、PLISTでもおこなわれます。
+ 5.5 ユーザーとの対話
+ ====================
+
+時々、パッケージがユーザーとの対話を必要とする場合がありますが、
+そのような状況は何通りもありえます:
+
++ distfileの取得に関する補助
++ パッケージの構築前の設定の補助
++ 構築過程の最中の補助
++ パッケージのインストール中の補助
+
+どの段階で対話が必要になるかをpkgsrcの機構に知らせるため、
+INTERACTIVE_STAGE
+定義が用意されており、
+パッケージのMakefileで定義します。たとえば以下のようにします。
+
+INTERACTIVE_STAGE= build
+
+複数の段階を指定することもできます:
+
+INTERACTIVE_STAGE= configure install
+
+
6 パッケージの修正に関する6つの注意
===================================
@@ -1002,7 +1088,9 @@
かもしれません。
パッケージが動的共有オブジェクトのロードに、libtool (libltdl)のプラットフォー
-ム独立なライブラリーを使う場合は、MakefileにUSE_LTDL= yesを追記してください。
+ム独立なライブラリーを使う場合は、
+libtoolのbuildlink2.mkをインクルード
+(さらに、USE_BUILDLINK2をYESに設定)してください。
パッケージによっては、環境により動作や構築ができなくなるような、正しくない
libtoolの使い方をしているものがあります。ありがちな間違いは以下のようなもの
@@ -1062,14 +1150,19 @@
* PKG_SYSCONFSUBDIRはPKG_SYSCONFBASEのサブディレクトリーで、個々のパッケー
ジ用の設定ファイルはこの下に置かれます。たとえば、Apacheの設定ファイルは
すべて、${PKG_SYSCONFBASE}のサブディレクトリー"httpd"の下に置かれます。
+ これは、パッケージのMakefileで設定することを想定しています。
-* PKG_SYSCONFDIR.${PKGBASE}は、個々のパッケージについて${PKG_SYSCONFDIR}の
- 値を上書きします。これは、パッケージのMakefileで設定するためのものではな
- く、個々のパッケージについてPKG_SYSCONFDIRの設定を上書きしたいユーザー用
- に予約されているものです。
-
-普通はPKG_SYSCONFBASEを/etcに設定するか、デフォルトの場所の${PREFIX}/etcの
-ままにするのがよいでしょう。
+* デフォルトではPKG_SYSCONFDIR=${PKG_SYSCONFBASE}/${PKG_SYSCONFSUBDIR}になりますが、
+ このデフォルト値は、個々のパッケージに対して PKG_SYSCONFDIR.${PKG_SYSCONFVAR}
+ を設定することで上書きすることができます。
+ このPKG_SYSCONFVARは、デフォルトでは${PKGBASE}です。
+ これは、パッケージのMakefileで設定するためのものではなく、
+ ユーザーが個々のパッケージについてPKG_SYSCONFDIRの設定を特別な場所に上書きするために
+ 予約されているものです。
+
+ユーザーがカスタマイズすべき変数は、PKG_SYSCONFBASEとPKG_SYSCONFDIR.${PKG_SYSCONFVAR}だけです。
+通常、ユーザーはPKG_SYSCONFBASEを/etcに設定するか、またはデフォルトの場所の
+${PREFIX}/etcのままにするでしょう。
6.6 作者へのフィードバック
@@ -1304,7 +1397,7 @@
ジと、それに依存するすべてのパッケージをアンインストールします。それから
最新のバージョンのパッケージをコンパイル、インストールします。これは、現
在どのパッケージがインストールされているかを調べ、「make deinstall」、
- 「make install」(または、DEPENDS_TARGETで設定されたターゲット)を続けて実
+ 「make install」(または、UPDATE_TARGETで設定されたターゲット)を続けて実
行するのと同じです。
以前に実行した「make update」がさまざまな理由で中断された場合、パッケー
@@ -1322,9 +1415,10 @@
は/etc/mk.confで使うことができます。
- DEPENDS_TARGET:
- 更新されたパッケージや依存パッケージのために使用されるインストールター
- ゲット。デフォルトは「install」です。例えば、「make update
- DEPENDS_TARGET=package」のように使用します。
+ 更新されたパッケージや依存パッケージのために再帰的に使用されるインストールター
+ ゲット。"make update"用のデフォルトは、${DEPENDS_TARGET}が設定されている場合はその値、
+ それ以外の場合は"install"です。
+ 例えば、"make update UPDATE_TARGET=package"のように使用します。
- NOCLEAN:
更新した後、きれいに掃除をしません。調査やその他の目的のために、更新
@@ -1339,6 +1433,15 @@
ルします。これは、"make update"の実行中断後に"clean-update"ターゲット
(以下参照)が呼ばれた場合に必要となることがあります。
+ - DEPENDS_TARGET:
+ 再帰を無効化し、パッケージのターゲットをハードコードすることができます。
+ updateターゲット用のデフォルトは"update"であり、
+ 事前に必要なパッケージを再帰的に更新するようになっています。
+ DEPENDS_TARGETを設定するのは、再帰的な更新を無効化したいときだけにしてください。
+ "make update" (後述します)の最中にインストールされる各パッケージに対して、
+ 特定のターゲットを指定するだけの場合は、
+ これのかわりに"UPDATE_TARGET"を使ってください。
+
* clean-update:
カレントディレクトリーで「make update」が実行された時に更新されるすべて
のパッケージのソースツリーを掃除します。カレントパッケージ(あるいは、依
@@ -1346,7 +1449,20 @@
した後)場合には、このターゲットを使ってはいけません。もし使用すると、更
新するつもりのパッケージのいくつかを失う可能性があります。経験的には、初
めて「make update」を実行する前、あるいは汚れたパッケージツリーがある場
- 合(例えばNOCLEANを使用した場合)にのみ使用すべきです。「make clean-update」
+ 合(例えばNOCLEANを使用した場合)にのみ使用すべきです。
+
+ パッケージのツリーが掃除されているかどうかわからない場合は、
+ ツリーの最上層で"make clean"を実行するか、
+ 更新しようとしているパッケージのディレクトリーで以下のコマンドをこの順に使うか、
+ どちらかをおこなうことができます。
+ ("make update"を初めて実行するより*前*におこなってください。
+ それ以外の場合、更新しようとしているパッケージをすべて失ってしまいます)
+
+ make clean-update
+ make clean CLEANDEPENDS=YES
+ make update
+
+ 「make clean-update」
の動作を変更するために、以下の変数をコマンドライン、または/etc/mk.confで
使うことができます。
@@ -1546,14 +1662,7 @@
buildlink.mk instead. The following variables may also be replaced with
buildlink.mk files:
- USE_LIBINTL --> .include "../../devel/gettext-lib/buildlink.mk"
- USE_LTDL --> .include "../../devel/libtool/buildlink.mk"
- USE_MESA --> .include "../../graphics/Mesa/buildlink.mk"
- USE_MOTIF --> .include "../../mk/motif.buildlink.mk"
- USE_SSL --> .include "../../security/openssl/buildlink.mk"
USE_X11 --> .include "../../mk/x11.buildlink.mk"
- USE_XAW --> .include "../../mk/xaw.buildlink.mk"
- USE_XPM --> .include "../../graphics/xpm/buildlink.mk"
Packages that have an explicit dependency on ncurses should set USE_NCURSES
to the reason why the system curses is insufficient, and include
@@ -1565,7 +1674,7 @@
Package that need a Motif-1.2-compatible installation should define
USE_MOTIF12, otherwise assume the need for a Motif-2.0-compatible
installation. If MOTIFBASE or MOTIF12BASE is set, then it is assumed that
-they point to valid 1.2-compatible or 2.0-compatible Motif, respectively.
+they point to valid 2.0-compatible or 1.2-compatible Motif, respectively.
Packages that use OpenSSL that require a specific version of OpenSSL should
define USE_OPENSSL_VERSION to the minimum version number required prior to
@@ -1673,10 +1782,10 @@
10 FAQとパッケージシステムの特徴
================================
- 10.1 GNU autoconfigを利用するパッケージ
- =======================================
+ 10.1 GNU autoconfを利用するパッケージ
+ =====================================
-もしパッケージがGNU autoconfを使うのであれば、パッケージのMakefileに以下の
+もしパッケージがGNU autoconfで作成されたconfigureスクリプトを使うのであれば、パッケージのMakefileに以下の
設定を追加してください。
GNU_CONFIGURE= yes
@@ -2144,6 +2253,9 @@
れにより、pre-install時にユーザーとグループが作成されるようになり、
post-deinstall時にはこのユーザーとグループの削除を管理者に促すようになりま
す。
+パッケージのインストールの前に
+環境変数 PKG_CREATE_USERGROUPをonかoffに設定しておくと、
+ユーザーとグループを自動で作成するかどうかを切替えることができます。
10.23 コンパイラーのバグへの対処方法
@@ -2160,6 +2272,175 @@
doc/HACKSを参照してください。
+ 10.24 infoファイルが附属するパッケージ
+ ======================================
+
+パッケージによっては、infoファイルをインストールしたり、
+makeinfoまたはinstall-infoコマンドを使ったりします。
+この場合、パッケージのMakefileで、
+mk/bsd.pkg.mkをインクルードする前に、
+makefileの断片mk/texinfo.mkをインクルードする必要があります。
+texinfoの新しいバージョン(バージョン4以上)は、困ったことに、
+それより前のバージョンとコマンド行のレベルで互換性がありません。
+また、TeXinfoマクロセットに拡張がいくつか導入されています。
+このため、パッケージ作者は、シェルのPATH変数の内容に依存したりせずに、
+適切なバイナリーが選ばれるようにすべきです。
+
+主たるinfoディレクトリーファイルは、
+infoファイルがインストールされたことを反映するために更新する必要があります。
+パッケージによっては、インストール過程でこの更新をおこなってくれます。
+そうしてくれないパッケージでは、
+NetBSDパッケージコレクションのINFO_FILES定義を、
+この更新用に使うことができます。
+パッケージのMakefileで、
+
+ INFO_FILES= ident.info
+
+と定義するだけです。この"ident.info"は、
+infoディレクトリーファイルにインストールされるinfoファイルの名前にします。
+
+パッケージ作者は、
+パッケージの構築とインストールのプロセスが、適切なバージョンの
+makeinfoおよびinstall-infoコマンドを使うようにするよう、注意を払うべきです。
+最近のソフトウェアパッケージに附属する
+Makefilesやconfigureスクリプトのなかには、
+makeinfoおよびinstall-infoコマンドへのパス名を含めているものがあります。
+残念ながら、古いソフトウェアパッケージは、そのようにはしない傾向があります。
+問題となるのはこのケースで、
+パッケージ作者が手間をかける必要があります。
+
+makefileの断片mk/texinfo.mkは、
+適切なmakeinfoおよびinstall-infoコマンドをシステム上で利用可能な状態にして、
+パッケージのconfigureおよびbuildプロセスがこれらのコマンドのバイナリーを使うようにします。
+
+あるバージョン以上のmakeinfoおよびinstall-infoコマンドが必要な場合は、
+パッケージのMakefileで、 TEXINFO_REQDを必要な最低バージョンに設定します。
+
+パッケージが適切な挙動をしない
+(つまり、configureやbuildの際に環境変数MAKEINFOやINSTALL_INFOを参照しない)
+場合は、以下のいずれか適切な方をおこなうべきです:
+ a) パッケージのファイルにパッチを当てて、
+ configureやbuildの際に、
+ makeinfoやinstall-infoがPATH中にあることを前提にするのではなく、
+ 環境変数MAKEINFOやINSTALL_INFOを使うようにする;
+ b) パッケージのMakefileにTEXINFO_OVERRIDE=YESを書いておき、
+ パッケージのソースファイルの内容を置換するようにする
+ (mk/texinfo.mkの内容を参考にしてください)。
+
+
+ 10.25 distfileのダウンロードが単純にできないパッケージ
+ ======================================================
+
+動的なURLからダウンロードする必要がある場合は、DYNAMIC_MASTER_SITESを設定す
+ることができます。すると、'make fetch'は、ダウンロードすべき各ファイルを引
+数としてfiles/getsite.shを呼び出します。このスクリプトは、ファイルをダウン
+ロードするディレクトリーのURLを出力することが前提となっています。
+graphics/ns-cult3dが、この使い方の例となっています。
+
+パスワード用に個人情報の登録が必要だったり、
+ソースに代金を払う必要があったり、その他もろもろの理由により、
+ダウンロードが自動化できない場合は、
+_FETCH_MESSAGE
+に、説明文を表示するマクロを設定することができます。
+_FETCH_MESSAGE
+は、説明文そのものではなく、
+実行可能なシェルコマンドである必要があります。
+(一般的には、${ECHO}を実行します)。
+本稿執筆時点で、この方法を使っているパッケージは、
+audio/realplayer, cad/simian, devel/ipv6socket,
+emulators/vmare-module, fonts/acroread-jpnfont, sysutils/storage-manager,
+www/ap-aolserver, www/openacs
+です。これらと一貫性のある使い方をしてください。
+
+
+ 10.26 NetBSD以外(Linux, Solaris, Darwin, MacOS X)でpkgsrcを使う
+ ===============================================================
+
+NetBSD以外のオペレーティングシステムでpkgsrcを使うためには、
+まず、必要なユーティリティー(BSD make, pkg_*, ...)の準備が必要です。
+この準備についてはhttp://www.zoularis.org/を参照してください。
+
+
+ 10.27 設定ファイルの処理および配置
+ ==================================
+
+大域変数PKG_SYSCONFBASE(とその他の変数)を、
+システム管理者が/etc/mk.confで設定すると、
+設定ファイルのインストール場所を定義することができます。
+このため、各パッケージはこの機能に対応する必要があります。
+この変数で定義される設定ファイル用ディレクトリーには、
+本当に必要なファイルだけをインストールすべきであって、
+$PREFIX/shareに置いてもよいファイルはそちらにインストールすべきであることに注意してください。
+
+まず、利用可能な変数をお見せします(bsd.pkg.mkに、さらに詳しい情報があります)。
+PKG_SYSCONFDIRが、パッケージの設定ファイルが置かれる場所になります
+(これはフルパスです。たとえば、/etcや/usr/pkg/etcになります)。
+この変数値は、さまざまな方法によってカスタマイズすることができます:
+
+ 1) PKG_SYSCONFBASEは主たる設定ディレクトリーで、
+ パッケージ用の設定ファイルすべてがこれ以下に置かれます。
+ ユーザーは普通はPKG_SYSCONFBASEを/etcに設定するか、デフォルトの場所の${PREFIX}/etcの
+ ままにするでしょう。
+
+ 2) PKG_SYSCONFSUBDIRのサブディレクトリーで、
+ 個々のパッケージ用の設定ファイルはこの下に置かれます。
+ デフォルトでは$SYSCONFBASEになります。
+
+ 3) PKG_SYSCONFVARは、
+ 個々のパッケージの設定を上書きする値を識別するための、特別な接尾辞です(次の項目参照)。
+ デフォルトでは${PKGBASE}になりますが、
+ PKG_SYSCONFDIRを同じに揃えておくべき一連の関連パッケージに対しては、
+ 各パッケージのMakefileで、PKG_SYSCONFVARを同じ値に設定することができます。
+
+ 4) PKG_SYSCONFDIR.${PKG_SYSCONFVAR}は、
+ 同じPKG_SYSCONFVARを持つパッケージの${PKG_SYSCONFDIR}を上書きします。
+
+ たとえば、KDE関連の各パッケージでは、PKG_SYSCONFVARを"kde"に設定するとよいでしょう。
+ こうしておくと、管理者が/etc/mk.confで${PKG_SYSCONFDIR.kde}を設定して、
+ KDEの設定ファイルのインストール場所を定義できるようになります。
+
+プログラムの設定ディレクトリーは、configureの段階で定義すべきです。
+GNU autoconfを使うパッケージでは、通常は
+--sysconfdirのパラメーターを使って定義することができますが、
+この方法は問題を起こすことがわかっています。
+このパス名をパッケージ側で変更する場合は、
+ファイルをディレクトリーに直接インストールするようにすべきではありません。
+そうするかわりに、
+ファイルをshare/examples/${PKGNAME}以下にインストールして、
+PLISTにそちらを登録できるようにする必要があります。
+
+必要な設定ファイルを適切な場所
+(share/examplesディレクトリー以下)
+に一旦置いてから、
+この設定ファイルをPKG_SYSCONFDIRにコピーするために、
+CONF_FILES変数を設定します。
+この変数の値は、ファイル名を二個組み合わせたものを並べたものです;
+組合せの一つ目で、examplesディレクトリー内のファイル
+(PLISTに登録されているもの)を指定し、
+二つ目で、それをコピーする先のファイルを指定します。
+これにより、バイナリーパッケージが、
+自動生成されるINSTALL/DEINSTALLスクリプトを使って、
+ファイルを正しいディレクトリーに配置することが可能になります。
+また、この自動生成されるスクリプトを使うために、
+パッケージのMakefileでbsd.pkg.mkをインクルードする前に
+"../../mk/bsd.pkg.install.mk"をインクルードしなければなりません。
+設定ファイルの自動コピーは、
+パッケージをインストールする前に環境変数PKG_CONFIGを設定しておくことで、
+おこなうかどうかを切替えることができます。
+
+mail/mutt/Makefileでの例を示します:
+
+ EGDIR= ${PREFIX}/share/doc/mutt/samples
+ CONF_FILES= ${EGDIR}/Muttrc ${PKG_SYSCONFDIR}/Muttrc
+
+ご覧のとおり、このパッケージは設定ファイルをEGDIRにインストールし、
+この場所がPLISTに登録されています。
+その後、CONF_FILES変数に、
+はじめにインストールされたファイルと、そのコピー先ファイルを列挙します。
+ファイルがこの方法でインストールされる時には、
+パッケージの利用者にメッセージを自動的に表示します。
+
+
11 提出およびコミット
=====================
@@ -2178,7 +2459,7 @@
*パッケージ:
最初にパッケージが完全かどうか、コンパイル、実行できるかどうかを確認して
- ください。このドキュメントのセクション8、その他が参考になるでしょう。次に、
+ ください。このドキュメントのセクション9、その他が参考になるでしょう。次に、
パッケージに必要なすべてのファイルのgzipされたtarファイルを作成してくださ
い。これは、すべてのファイルをひとつのディレクトリーにおきたいためです。
次に、そのtarファイルを、パッケージのメンテナーがFTPかHTTP (WWW)を使用し
@@ -2214,11 +2495,16 @@
初回のインポートでは、コミットメッセージにDESCRファイルの内容を含めておき、
どういうパッケージなのかがメーリングリストの読者にわかるようにしてください。
-すべてのパッケージの変更、追加をdoc/pkg-CHANGESに記述してください。このファ
+すべてのパッケージの変更や追加を、pkgsrc/doc/CHANGESに記述してください。このファ
イルを、これまでと同じ形式のまま最新の状態に保つことは非常に重要なことです。
なぜなら、このファイルはスクリプトによりwww.netbsd.orgや他のサイトのページ
を自動的に更新するために使用されているからです。
+新しいパッケージを追加する場合は、
+"cvs add"ではなく"cvs import"を使うようにしてください。
+"cvs import"なら、単一のコマンドですべて記述することができ、
+また、一貫したタグを打つことができるからです。
+
11.3 パッケージを新しいバージョンに更新する
===========================================
@@ -2246,6 +2532,28 @@
れません)よりも安定性のほうが好ましいことを念頭に置いてください。
+ 11.4 pkgsrcのパッケージを移動する
+ =================================
+
+ 1. パッケージのディレクトリーをどこかにコピーします。
+ 2. コピーしたものからCVSディレクトリーをすべて削除します。
+ 手順1,2は、以下のようにすることもできますので、
+ 今後の作業にはこちらを使ってください:
+ cvs -d user@cvs.netbsd.org:/cvsroot export -D today pkgsrc/category/package
+ 3. CATEGORIESを修正します。
+ また、../../category/packageのかわりに単に../packageとすることができるDEPENDSのパスをすべて修正します。
+ 4. 新しい場所で、修正後のパッケージを"cvs import"します。
+ 5. このパッケージに依存しているパッケージを調べます:
+ cd /usr/pkgsrc
+ grep /package */*/Makefile* */*/buildlink*
+ 6. 手順5で見つかったものに対して、このパッケージへのパスを、新しい場所を指すように修正します。
+ 7. 古い場所で、移動前のパッケージを"cvs rm (-f)"します
+ 8. oldcategory/Makefileからこのパッケージを削除します。
+ 9. newcategory/Makefileにこのパッケージを追加します。
+10. 変更および削除されたファイルを commit します:
+ cvs commit oldcategory/package oldcategory/Makefile newcategory/Makefile
+ もちろん、手順5の各パッケージもです。
+
12 パッケージの簡単な例: bison
==============================
@@ -2277,6 +2585,7 @@
GNU_CONFIGURE= yes
INFO_FILES= bison.info
+ .include "../../mk/texinfo.mk"
.include "../../mk/bsd.pkg.mk"