The pkgsrc guide

NetBSD パッケージシステムに関するドキュメンテーション

Alistair Crooks

Hubert Feyrer

The pkgsrc Developers

$NetBSD: pkgsrc.xml,v 1.26 2007/09/18 08:17:21 rillig Exp $

Abstract

pkgsrc は、Unix 風のオペレーティングシステム向けの、 集中管理型パッケージ管理システムです。この手引きでは、 pkgsrc の利用者向けと開発者向けの情報を掲載しています。 バイナリーおよびソースパッケージのインストール、 バイナリーおよびソースパッケージの作成から、 基盤についての高度な概観までを網羅しています。


Table of Contents

1. pkgsrc とは何か
1.1. イントロダクション
1.1.1. なぜ pkgsrc なのか?
1.1.2. 対応プラットフォーム
1.2. 概要
1.3. 専門用語
1.3.1. pkgsrc に関わる人たち
1.4. 体裁
I. pkgsrc 利用者向けの手引き
2. どこからpkgsrcを得て、どうやって最新に保つか
2.1. pkgsrc を初めて入手する
2.1.1. tar ファイル
2.1.2. anonymous CVS 経由
2.2. pkgsrc を最新の状態に保つ
2.2.1. tar ファイルを使用
2.2.2. CVS 経由
3. NetBSD 以外のシステムで pkgsrc を使う
3.1. バイナリー配布
3.2. pkgsrc を使う準備をする
3.3. プラットフォーム別の覚書
3.3.1. Darwin (Mac OS X)
3.3.2. FreeBSD
3.3.3. Interix
3.3.4. IRIX
3.3.5. Linux
3.3.6. OpenBSD
3.3.7. Solaris
4. pkgsrc を使う
4.1. バイナリーパッケージを使う
4.1.1. バイナリーパッケージの配布場所
4.1.2. バイナリーパッケージをインストールする
4.1.3. パッケージをアンインストールする
4.1.4. インストールされているパッケージの情報を得る
4.1.5. インストール済パッケージの脆弱性チェック
4.1.6. インストール済パッケージのより新しいバージョンが pkgsrc にあるかどうか調べる
4.1.7. その他の管理用機能
4.1.8. 警告
4.2. ソースからパッケージを構築する
4.2.1. 必要なもの
4.2.2. 配布ファイルの取得
4.2.3. 構築とインストール方法
5. pkgsrc を設定する
5.1. 全般的な設定
5.2. 構築の過程に影響を及ぼす変数
5.3. インストール過程に影響をおよぼす変数
5.4. コンパイラーの選択と設定
5.4.1. コンパイラーを選ぶ
5.4.2. コンパイラーへのフラグの追加 (CFLAGS)
5.4.3. リンカーへのフラグの追加 (LDFLAGS)
5.5. 開発者および上級者向けの設定
5.6. 構築オプションの選択
6. バイナリーパッケージを作る
6.1. 単数のバイナリーパッケージを構築する
6.2. バイナリーパッケージ作成用の設定
7. pkgsrc のバイナリーパッケージを全部作成する (バルクビルド)
7.1. まず考察、構築はその後
7.2. バルクビルドに必要なもの
7.3. 旧方式のバルクビルドを実行する
7.3.1. 設定
7.3.2. ほか、環境に関する考察
7.3.3. 操作
7.3.4. 何を実行するのか
7.3.5. 必要なディスク容量
7.3.6. chroot構築用の砂場を用意する
7.3.7. パッケージを部分的に構築する
7.3.8. バルクビルドの成果をアップロードする
7.4. pbulk 方式のバルクビルドを実行する
7.4.1. 事前準備
7.4.2. 設定
7.5. CD-ROM複数枚に収めたパッケージコレクションの作成
7.5.1. cdpackの使用例
8. インストールされたファイルのディレクトリー配置
8.1. ${LOCALBASE} 以下のファイルシステム配置
8.2. ${VARBASE} 以下のファイルシステム配置
9. よくある質問
9.1. pkgについて話しあうためのメーリングリストはありますか?
9.2. pkgviews のドキュメンテーションはどこにあるか?
9.3. パッケージ管理用ユーティリティー (pkgtools)
9.4. pkgsrc を root 以外で使う方法
9.5. distfile 取得時に、転送を再開する方法は?
9.6. pkgsrc の modular X.org をインストールあるいは使用する方法は?
9.7. 防火壁の内側からファイルを取得する方法
9.8. どうすればmake fetchでpassive FTPを使用することができますか?
9.9. 一度にすべてのdistfileを取得する方法
9.10. Don't know how to make /usr/share/tmac/tmac.andoc ってどういうこと?
9.11. Could not find bsd.own.mk ってどういうこと?
9.12. pkgsrcで'sudo'を使う
9.13. 設定ファイルの置き場所を変更する方法は?
9.14. 自動セキュリティーチェック
9.15. CFLAGS を無視するパッケージがあるのはなぜ?
9.16. パッケージが構築できません。どうすればいい?
9.17. Makefile appears to contain unresolved cvs/rcs/??? merge conflicts ってどういうこと?
II. pkgsrc 開発者向けの手引き
10. 新しいパッケージを一から作る
10.1. ありがちな種類のパッケージ
10.1.1. Perl モジュール
10.1.2. KDE アプリケーション
10.1.3. Python モジュールおよびプログラム
10.2. 例
10.2.1. www/nvu パッケージはいかに pkgsrc に追加されたか
11. パッケージコンポーネント - ファイル、ディレクトリー、およびコンテンツ
11.1. Makefile
11.2. distinfo
11.3. patches/*
11.3.1. 個々のパッチファイルの構造
11.3.2. パッチファイルを作成する
11.3.3. パッチファイルの出どころ
11.3.4. パッチ作成の指針
11.3.5. 作者へのフィードバック
11.4. その他の必須のファイル
11.5. オプションのファイル
11.5.1. バイナリーパッケージに影響をおよぼすファイル
11.5.2. 構築の過程に影響をおよぼすファイル
11.5.3. 何の影響もおよぼさないファイル
11.6. work*
11.7. files/*
12. Makefile におけるプログラミング
12.1. 警告
12.2. Makefile 変数
12.2.1. 命名規約
12.3. コードの断片
12.3.1. リストに要素を追加する
12.3.2. 内部リストを外部リストに変換する
12.3.3. シェルコマンドに値を渡す
12.3.4. クォートの指針
12.3.5. BSD Make のバグの回避方法
13. PLIST 問題
13.1. RCS ID
13.2. PLIST の半自動生成
13.3. make print-PLIST の出力を細工する
13.4. PLIST における各種の置換
13.5. マニュアルページの圧縮
13.6. PLIST_SRC を使って PLIST のソースを変更する
13.7. プラットフォーム別に異なるPLIST
13.8. 複数のパッケージでディレクトリーを共有する
14. buildlink 方法論
14.1. パッケージを変換して buildlink3 を使うようにする
14.2. buildlink3.mk ファイルを書く
14.2.1. buildlink3.mk ファイルの分析
14.2.2. buildlink3.mk ファイルの BUILDLINK_API_DEPENDS.pkg を更新する
14.3. builtin.mk ファイルを書く
14.3.1. builtin.mk ファイルの分析
14.3.2. ネイティブおよび pkgsrc のソフトウェアの選択に関する、大域的な設定
15. pkginstall の枠組
15.1. インストール用のプレフィックス以外の場所にあるファイルとディレクトリー
15.1.1. ディレクトリーの操作
15.1.2. ファイルの操作
15.2. 設定ファイル
15.2.1. PKG_SYSCONFDIR はどのように設定されるか
15.2.2. ソフトウェアに設定ファイルの置き場所を教える
15.2.3. インストールの過程を修正する
15.2.4. 設定ファイルの処理をしないようにする
15.3. システム起動スクリプト
15.3.1. システム起動スクリプトの処理をしないようにする
15.4. システムユーザーとグループ
15.5. システムシェル
15.5.1. シェルの登録をしないようにする
15.6. フォント
15.6.1. フォントデータベースの自動更新をしないようにする
16. オプションの扱い
16.1. 標準の大域的なオプション
16.2. パッケージを変換して bsd.options.mk を使うようにする
16.3. オプション名
16.4. 依存パッケージのオプションを判別する
17. 構築の手順
17.1. 序
17.2. プログラムの場所
17.3. 構築の過程で使われるディレクトリー
17.4. 相の実行
17.5. fetch
17.5.1. 何を、どこから取得するか
17.5.2. ファイルの取得はどのようにおこなわれるか?
17.6. checksum
17.7. extract
17.8. patch
17.9. tools
17.10. wrapper
17.11. configure
17.12. build
17.13. test
17.14. install
17.15. package
17.16. 掃除をする
17.17. 他の役に立つターゲット
18. 構築や実行のために必要なツール
18.1. pkgsrc 構築用のツール
18.2. パッケージが必要とするツール
18.3. プラットフォーム附属のツール
18.4. ツールに関する質問
19. パッケージを動くようにする
19.1. 一般的な操作
19.1.1. パッケージの移植性
19.1.2. mk.conf から利用者が設定可能な変数を捕まえる方法
19.1.3. ユーザーとの対話
19.1.4. ライセンスの処理
19.1.5. 制限つきパッケージ
19.1.6. 依存性の処理
19.1.7. 他のパッケージとの衝突の処理
19.1.8. 構築することができない、あるいはすべきでないパッケージ
19.1.9. 一旦インストールしたら削除すべきでないパッケージ
19.1.10. セキュリティー問題を持つパッケージへの対処
19.1.11. 既存パッケージ修正時に、バージョンを上げるにはどうするか
19.1.12. パッケージのファイル中の各種テキストを置換する (SUBST の枠組)
19.2. fetch 相での問題を修正する
19.2.1. distfileのダウンロードが単純にできないパッケージ
19.2.2. '古い'名前のまま更新されたdistfileの取り扱い
19.3. configure 相での問題を修正する
19.3.1. 共有ライブラリー - libtool
19.3.2. すでにlibtoolをサポートしているGNUパッケージでlibtoolを使う
19.3.3. GNU Autoconf/Automake
19.4. プログラミング言語
19.4.1. C, C++ および Fortran
19.4.2. Java
19.4.3. perl スクリプトを含むパッケージ
19.4.4. 他のプログラミング言語
19.5. build 相での問題を修正する
19.5.1. C および C++ のコードの条件つきコンパイル
19.5.2. コンパイラーのバグへの対処方法
19.5.3. undefined reference to ...
19.5.4. メモリーが不足する
19.6. install 相での問題を修正する
19.6.1. 必要なディレクトリーを作成する
19.6.2. ドキュメンテーションのインストール場所
19.6.3. 最高得点ファイルをインストールする
19.6.4. パッケージを DESTDIR に対応させる
19.6.5. その他のインタープリターへのパスがハードコードされているパッケージ
19.6.6. perl モジュールをインストールするパッケージ
19.6.7. infoファイルをインストールするパッケージ
19.6.8. マニュアルページをインストールするパッケージ
19.6.9. GConf のデータファイルをインストールするパッケージ
19.6.10. scrollkeeper/rarian のデータファイルをインストールするパッケージ
19.6.11. X11 のフォントをインストールするパッケージ
19.6.12. GTK2 のモジュールをインストールするパッケージ
19.6.13. SGML または XML のデータをインストールするパッケージ
19.6.14. MIME データベースの拡張をインストールするパッケージ
19.6.15. intltool を使うパッケージ
19.6.16. 起動スクリプトをインストールするパッケージ
19.6.17. TeX モジュールをインストールするパッケージ
19.6.18. エミュレーションによるバイナリーの実行に対応したパッケージ
19.6.19. ハイカラーテーマのアイコンをインストールするパッケージ
19.6.20. デスクトップファイルをインストールするパッケージ
19.7. パッケージに問題があるという印をつける
20. デバッグ
21. 提出およびコミット
21.1. バイナリーパッケージの提出
21.2. ソースパッケージの提出 (NetBSD 開発者以外の方向け)
21.3. パッケージを追加・更新・削除する際の一般的な覚書
21.4. コミット: パッケージのCVSへのインポート
21.5. パッケージを新しいバージョンに更新する
21.6. pkgsrc のパッケージの名前を変更する
21.7. pkgsrcのパッケージを移動する
22. よくある質問
23. GNOME のパッケージングおよび移植
23.1. メタパッケージ
23.2. GNOME アプリケーションをパッケージングする
23.3. GNOME を新バージョンに更新する
23.4. 修正の指針
III. pkgsrc 基盤の内部
24. pkgsrc の基盤の設計
24.1. 変数定義の意図するもの
24.2. 問題を未然に防ぐ
24.3. 変数の評価
24.3.1. 読み込み時
24.3.2. 実行時
24.4. 変数の仕様を定める方法は?
24.5. Makefile の断片のインターフェースを設計する
24.5.1. 引数を伴うプロシージャー
24.5.2. 引数に応じたアクション
24.6. ファイルが読み込まれる順序
24.6.1. bsd.prefs.mk での順序
24.6.2. bsd.pkg.mk での順序
25. 退行テスト
25.1. 退行テストの枠組
25.2. 退行テストを実行する
25.3. 新しい退行テストを追加する
25.3.1. 上書き可能な関数
25.3.2. 補助関数
26. pkgsrc を移植する
26.1. pkgsrc を未対応のオペレーティングシステムに新たに移植する
26.2. 未対応のコンパイラーに新たに対応させる
A. パッケージの簡単な例: bison
A.1. ファイル
A.1.1. Makefile
A.1.2. DESCR
A.1.3. PLIST
A.1.4. pkglint でパッケージをチェックする
A.2. 構築、インストール、パッケージングの手順
B. 構築のログ
B.1. figletの構築
B.2. figlet のパッケージング
C. pkgsrc FTP サーバーのディレクトリー配置
C.1. distfiles: ソースファイルの配布物
C.2. misc: 種々雑多なもの
C.3. packages: バイナリーパッケージ
C.4. reports: バルクビルドの結果報告
C.5. current, pkgsrc-20xxQy: ソースパッケージ
D. the pkgsrc guide 編集の指針
D.1. make ターゲット
D.2. 編集手順

List of Tables

1.1. pkgsrc が対応しているプラットフォーム
11.1. パッチ適用例
23.1. GNOME パッケージ用の PLIST の扱い