Table of Contents
Unix ベースのシステム向けの自由に使えるソフトウェアは数多くあり、 それらはたいていソースコード形式で提供されています。 このようなソフトウェアを使うためには、あらかじめ、ローカルシステム用の設定、 コンパイルおよびインストールをしておく必要がありますが、NetBSD パッケージコレクション (pkgsrc) はまさにこの作業をおこなってくれます。 このほか、pkgsrc にはバイナリーパッケージを扱うための基本的なコマンドがあるので、 各利用者が時間をかけて自分でパッケージを構築する必要はありません。
pkgsrc には現在、 以下のものをはじめ数千個のパッケージがあります。
www/apache
- Apache
web サーバー
www/firefox
- Firefox
web ブラウザー
meta-pkgs/gnome
- GNOME
デスクトップ環境
meta-pkgs/kde3
- K
デスクトップ環境
……などなど。
pkgsrc には、各対応プラットフォームについて、 pthreads や X11 のようなプラットフォームによって異なる依存関係や、 IPv6 対応のような拡張機能の処理が組み込まれています。
pkgsrc が提供する重要な機能は、以下のようなものです
ソフトウェアのソースからの構築のほか、バイナリーパッケージの作成および インストールが容易にできるようになります。ソースと最新のパッチを マスターサイトかミラーダウンロードサイトから取得し、チェックサムを検証してから、 あなたのシステムで構築をおこないます。 バイナリーのみ配布されているソフトウェアも、ネイティブプラットフォームと NetBSD でエミュレートされたプラットフォームの双方で利用可能です。
バイナリー、ライブラリー、マニュアルページ、その他の文書など、 すべてのパッケージは首尾一貫したディレクトリーツリーにインストールされます。
パッケージの依存関係は、パッケージ更新時も含め、 自動的に解決されます。更新の際には、 さまざまなパッケージの設定ファイルが自動的に処理され、 ローカルな変更点は保持されます。
NetBSD と同様、 pkgsrc は移植性を意図して設計されており、 高い移植性を持つコードでできています。これにより、 新しいプラットフォームへの移植は、きわめて迅速な開発が可能です。 この移植性はまた、 pkgsrc を 全プラットフォームの間で一貫したものにしています。
膨大な数のパッケージに対する、インストール先、 受け入れ可能なソフトウェアライセンス、国際版の暗号が必要か、 および構築時オプションは、 すべて単一の設定ファイルで管理されます。
完全なソース (ソフトウェアの配布ファイルは含みません) は、 BSD ライセンスの下で自由に使用できますので、必要に応じて pkgsrc の拡張や改造ができます。そのままでローカルパッケージやパッチに 対応しているので、あなたの環境に合わせて設定することができます。
pkgsrc では、以下の思想が基礎となっています。
“正しいもののみが動くべき。”
— これは、パッケージにバグがある場合に、
パッケージをただインストールして、それがうまく動くよう祈るよりも、
バグを見つけて、そのことを訴えるほうがよいということです。
pkgsrc には、そのようなバグを見つけるために、
静的な分析ツール (pkgtools/pkglint
)、構築時の検査 (シェルスクリプトの移植性)や、
インストール後の検査 (インストールされたファイル、
共有ライブラリーの参照、スクリプトインタープリター) といった、
多数の検査が用意されています。
“動くものは、どこででも動くべき” — NetBSD が多くのハードウェアアーキテクチャーに移植されているのと同様に、 pkgsrc は多くのオペレーティングシステムに移植されています。 すべてのプラットフォームでパッケージが同じように動くように注意が払われています。
pkgsrc には、 これらのオペレーティングシステム用のソース配布およびバイナリー配布の両形態があります。 必要なソースまたはバイナリーを取ってくれば、 すぐに pkgsrc で作業を始めることができます。
pkgsrc は FreeBSD の ports システムから派生したもので、 はじめは NetBSD 専用として開発されていました。その後、 pkgsrc は大きく成長し、現在では以下のプラットフォームに対応しています。
Table 1.1. pkgsrc が対応しているプラットフォーム
プラットフォーム | 対応した日 |
---|---|
NetBSD | 1997 年 8 月 |
Solaris | 1999 年 3 月 |
Linux | 1999 年 6 月 |
Darwin (Mac OS X) | 2001 年 10 月 |
FreeBSD | 2002 年 11 月 |
OpenBSD | 2002 年 11 月 |
IRIX | 2002 年 12 月 |
BSD/OS | 2003 年 12 月 |
AIX | 2003 年 12 月 |
Interix (Microsoft Windows Services for Unix) | 2004 年 3 月 |
DragonFlyBSD | 2004 年 10 月 |
OSF/1 | 2004 年 11 月 |
HP-UX | 2007 年 4 月 |
Haiku | 2010 年 9 月 |
このドキュメントは三部に別れています。第一部は pkgsrc 利用者向けの手引きで、パッケー ジコレクションの一つのパッケージを使う方法を、コンパイル済みのバイナリー パッケージのインストールと、自分自身でコピーしたNetBSDパッケージシステムか ら構築する方法の両方で説明します。第二部の pkgsrc 開発者向けの手引き は、他 のNetBSDユーザーがその構築の詳細について知らなくても簡単にパッケージを構築 できるようにするために、パッケージを用意する方法を説明します。第三部の pkgsrc 基盤の内部 は、pkgsrc がどのように実装されているかを理解したい方のためのものです。
ここまでですでに“ポート(ports)”、 “パッケージ(packages)”などについて何度も触れています。 ここで、このドキュメント中に使われている用語を説明します。
ファイルのセットで、pkgsrc を使用したソフトウェアを構築
するのに必要なことが記述された構築手順書です。パッケージは、伝統的に
/usr/pkgsrc
の下に置かれます。
“pkgsrc” の旧名です。これは NetBSD オペレーティングシステムの一部分ですが、 NetBSD 以外のオペレーティングシステムでも NetBSD 同様に使えるようにすることができます。 パッケージの構築 (コンパイル)、インストール、および削除を扱います。
この用語は、ソフトウェアの作者が、彼の仕事を配布するため
に提供しているファイルのことを指しています。NetBSDで構築するのに必要な全
ての変更は、対応するパッケージに反映されます。通常distfileは、圧縮された
tarアーカイブ形式ですが、他の形式でも使用できます。distfileは通常は
/usr/pkgsrc/distfiles
の下に保存されます。
これはFreeBSDやOpenBSDの人たちが、 私たちがパッケージ(package)と呼んでいるものを表 すために使われている用語です。NetBSDでは“ポート(port)”は、異なるアーキ テクチャーを参照する用語となります。
pkgsrc を使ってdistfileより作成されたバイナリーのセット
で、ひとつの.tgz
ファイルに集められています。これはリコンパイルなしに同じ
マシンアーキテクチャーのマシンにインストールすることができます。パッケー
ジは通常は/usr/pkgsrc/packages
に生成され、それ
は
ftp.NetBSD.orgにもアーカイブされています。
時々、これは、特にコンパイル済みのパッケージの文脈で、単に“パッケージ” と表されることもあります。
対応するパッケージが、distfileにあるファイルから作成した、インストールさ れるべきソフトウェアのひとまとまりです。
pkgsrc 利用者とは、pkgsrc で提供されているパッケージを使う人たちです。 ふつうはシステム管理者のことです。パッケージを構成するソフトウェアを使う人たち (“末端利用者” ということがあります) については、 the pkgsrc guide では対象としません。
pkgsrc 利用者には二通りあります: 一方は、 構築済みバイナリーパッケージをインストールしたいだけの人たちです。 もう一方は、pkgsrc のパッケージをソースから構築する人たちで、 こちらは、そのままインストールすることが目的の場合と、 バイナリーパッケージ自体を構築することが目的の場合があります。 pkgsrc 利用者にとって必要なことはすべて、Part I, “pkgsrc 利用者向けの手引き” に書いてあるはずです。
パッケージメンテナーは、Part II, “pkgsrc 開発者向けの手引き” で説明されているようにパッケージを作成する人です。
mk/
ディレクトリー以下にある各ファイルに携わる人たちです。
Part III, “pkgsrc 基盤の内部” を通しで読む必要があるのは、この人たちだけのはずです
(基盤開発者以外の人が興味を持つこともあるでしょうが)。