Chapter 1. pkgsrc とは何か

Table of Contents

1.1. イントロダクション
1.1.1. なぜ pkgsrc なのか?
1.1.2. 対応プラットフォーム
1.2. 概要
1.3. 専門用語
1.3.1. pkgsrc に関わる人たち
1.4. 体裁

1.1. イントロダクション

Unix ベースのシステム向けの自由に使えるソフトウェアは数多くあり、 それらはたいていソースコード形式で提供されています。 このようなソフトウェアを使うためには、あらかじめ、ローカルシステム用の設定、 コンパイルおよびインストールをしておく必要がありますが、NetBSD パッケージコレクション (pkgsrc) はまさにこの作業をおこなってくれます。 このほか、pkgsrc にはバイナリーパッケージを扱うための基本的なコマンドがあるので、 各利用者が時間をかけて自分でパッケージを構築する必要はありません。

pkgsrc には現在、 以下のものをはじめ数千個のパッケージがあります。

……などなど。

pkgsrc には、各対応プラットフォームについて、 pthreads や X11 のようなプラットフォームによって異なる依存関係や、 IPv6 対応のような拡張機能の処理が組み込まれています。

1.1.1. なぜ pkgsrc なのか?

pkgsrc が提供する重要な機能は、以下のようなものです

  • ソフトウェアのソースからの構築のほか、バイナリーパッケージの作成および インストールが容易にできるようになります。ソースと最新のパッチを マスターサイトかミラーダウンロードサイトから取得し、チェックサムを検証してから、 あなたのシステムで構築をおこないます。 バイナリーのみ配布されているソフトウェアも、ネイティブプラットフォームと NetBSD でエミュレートされたプラットフォームの双方で利用可能です。

  • バイナリー、ライブラリー、マニュアルページ、その他の文書など、 すべてのパッケージは首尾一貫したディレクトリーツリーにインストールされます。

  • パッケージの依存関係は、パッケージ更新時も含め、 自動的に解決されます。更新の際には、 さまざまなパッケージの設定ファイルが自動的に処理され、 ローカルな変更点は保持されます。

  • NetBSD と同様、 pkgsrc は移植性を意図して設計されており、 高い移植性を持つコードでできています。これにより、 新しいプラットフォームへの移植は、きわめて迅速な開発が可能です。 この移植性はまた、 pkgsrc を 全プラットフォームの間で一貫したものにしています。

  • 膨大な数のパッケージに対する、インストール先、 受け入れ可能なソフトウェアライセンス、国際版の暗号が必要か、 および構築時オプションは、 すべて単一の設定ファイルで管理されます。

  • 完全なソース (ソフトウェアの配布ファイルは含みません) は、 BSD ライセンスの下で自由に使用できますので、必要に応じて pkgsrc の拡張や改造ができます。そのままでローカルパッケージやパッチに 対応しているので、あなたの環境に合わせて設定することができます。

pkgsrc では、以下の思想が基礎となっています。

  • 正しいもののみが動くべき。 — これは、パッケージにバグがある場合に、 パッケージをただインストールして、それがうまく動くよう祈るよりも、 バグを見つけて、そのことを訴えるほうがよいということです。 pkgsrc には、そのようなバグを見つけるために、 静的な分析ツール (pkgtools/pkglint)、構築時の検査 (シェルスクリプトの移植性)や、 インストール後の検査 (インストールされたファイル、 共有ライブラリーの参照、スクリプトインタープリター) といった、 多数の検査が用意されています。

  • 動くものは、どこででも動くべき — NetBSD が多くのハードウェアアーキテクチャーに移植されているのと同様に、 pkgsrc は多くのオペレーティングシステムに移植されています。 すべてのプラットフォームでパッケージが同じように動くように注意が払われています。

1.1.2. 対応プラットフォーム

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 月

1.2. 概要

このドキュメントは三部に別れています。第一部は pkgsrc 利用者向けの手引きで、パッケー ジコレクションの一つのパッケージを使う方法を、コンパイル済みのバイナリー パッケージのインストールと、自分自身でコピーしたNetBSDパッケージシステムか ら構築する方法の両方で説明します。第二部の pkgsrc 開発者向けの手引き は、他 のNetBSDユーザーがその構築の詳細について知らなくても簡単にパッケージを構築 できるようにするために、パッケージを用意する方法を説明します。第三部の pkgsrc 基盤の内部 は、pkgsrc がどのように実装されているかを理解したい方のためのものです。

このドキュメントは、以下の各種形式で利用できます。 HTML, PDF, PS, TXT.

1.3. 専門用語

ここまでですでにポート(ports)パッケージ(packages)などについて何度も触れています。 ここで、このドキュメント中に使われている用語を説明します。

パッケージ(Package)

ファイルのセットで、pkgsrc を使用したソフトウェアを構築 するのに必要なことが記述された構築手順書です。パッケージは、伝統的に /usr/pkgsrcの下に置かれます。

NetBSDパッケージシステム

pkgsrc の旧名です。これは NetBSD オペレーティングシステムの一部分ですが、 NetBSD 以外のオペレーティングシステムでも NetBSD 同様に使えるようにすることができます。 パッケージの構築 (コンパイル)、インストール、および削除を扱います。

distfile

この用語は、ソフトウェアの作者が、彼の仕事を配布するため に提供しているファイルのことを指しています。NetBSDで構築するのに必要な全 ての変更は、対応するパッケージに反映されます。通常distfileは、圧縮された tarアーカイブ形式ですが、他の形式でも使用できます。distfileは通常は /usr/pkgsrc/distfilesの下に保存されます。

ポート(Port)

これはFreeBSDやOpenBSDの人たちが、 私たちがパッケージ(package)と呼んでいるものを表 すために使われている用語です。NetBSDではポート(port)は、異なるアーキ テクチャーを参照する用語となります。

コンパイル済み(バイナリー)パッケージ

pkgsrc を使ってdistfileより作成されたバイナリーのセット で、ひとつの.tgzファイルに集められています。これはリコンパイルなしに同じ マシンアーキテクチャーのマシンにインストールすることができます。パッケー ジは通常は/usr/pkgsrc/packagesに生成され、それ は ftp.NetBSD.orgにもアーカイブされています。

時々、これは、特にコンパイル済みのパッケージの文脈で、単にパッケージ と表されることもあります。

プログラム

対応するパッケージが、distfileにあるファイルから作成した、インストールさ れるべきソフトウェアのひとまとまりです。

1.3.1. pkgsrc に関わる人たち

pkgsrc 利用者

pkgsrc 利用者とは、pkgsrc で提供されているパッケージを使う人たちです。 ふつうはシステム管理者のことです。パッケージを構成するソフトウェアを使う人たち (末端利用者 ということがあります) については、 the pkgsrc guide では対象としません。

pkgsrc 利用者には二通りあります: 一方は、 構築済みバイナリーパッケージをインストールしたいだけの人たちです。 もう一方は、pkgsrc のパッケージをソースから構築する人たちで、 こちらは、そのままインストールすることが目的の場合と、 バイナリーパッケージ自体を構築することが目的の場合があります。 pkgsrc 利用者にとって必要なことはすべて、Part I, “pkgsrc 利用者向けの手引き” に書いてあるはずです。

パッケージメンテナー

パッケージメンテナーは、Part II, “pkgsrc 開発者向けの手引き” で説明されているようにパッケージを作成する人です。

基盤開発者

mk/ ディレクトリー以下にある各ファイルに携わる人たちです。 Part III, “pkgsrc 基盤の内部” を通しで読む必要があるのは、この人たちだけのはずです (基盤開発者以外の人が興味を持つこともあるでしょうが)。

1.4. 体裁

コマンドの実行例を示す場合、そのコマンドをrootで実行しなければならない/する ことができるか、一般のユーザー権限で十分であるかを、シェルプロンプトで 区別します。Cシェルかtcshを使っているものとして、rootのシェルプロンプトには #を、一般ユーザーのシェルプロンプトには%を使います。