NetBSD パッケージコレクションはツールのコレクションで、 Unix システム 用の膨大な量のフリーソフトウェアーのコンパイルと インストールを非常に簡素に行えるものです。 たった 1,2 のコマンドで、完璧な設定で動作するパッケージをインストール できます。
NetBSD パッケージシステムにはじめて出会うと、若干混乱し: 同じ事をするのに、 明らかにコマンドがあることが明らかです。 その問題は実に単純で: プログラムのインストールには 2 通り の方法が あります。
自分のシステム上でパッケージをソースからコンパイルします。 これは、パッケージコレクションの完成した利用法で、 インターネットからソースを自動的にダウンロードでき、 コンパイルし、インストールとプログラムの設定と documentation をたった2コマンドでできます。 パッケージコレクションは、 基本システムでインストールされた標準 Unix ツールを使う makefile と設定ファイルのセットからなっています。 パッケージシステムのほかの nice 機能はというと、 依存関係を自動的にチェックし、依存パッケージも ダウンロードおよびインストールさせられるということです。 パッケージコレクションは頻繁に更新されているので 基本システムとして自動的にインストールされず : 次の節でダウンロードとインストール法を説明します。 NetBSD のサイト には、 パッケージシステムについての技術的に詳細な記述があります。
あらかじめコンパイルされ設定されているプログラムをインストールします。 ユーティリティーのセットの pkgtools は完成したもので、 基本システムにインストールされています。 この方法は速いのですが、先に挙げた方法に比べ柔軟性に欠けます(たとえば、 コンパイル時にオプション設定ができません)。 pkgtools はインストールされたプログラム (ソースからでもプレコンパイルパッケージでも) の管理に使われ、データベースに記録され: 例えば、インストールされたパッケージの一覧表示やパッケージの消去などができます。
プレコンパイルパッケージのインストールだけがしたいのなら、 パッケージコレクションのダウンロードは必要ありません。
前述の2つの方法は両方とも、誰かほかの人が "パッケージを作る" ことが要求され、 つまり、 NetBSD に移植され設定されています。 パッケージコレクションには 1000 を超えるプログラムがありますが、 あなたの欲しいものがまだ入ってないこともあり得ます。 この場合、パッケージシステム無しにコンパイルして、動かせるようになれば、 パッケージを作ってコレクションに追加することができ:それによって、 ほかのユーザーは、あなたの作業の恩恵を受けるようになります。
プログラムをソースからインストールする前に、 NetBSD のサイトか、自分で選んだミラーサイトから パッケージコレクションをダウンロード、インストールするべきです。 次のステップに書かれています。
必要な makefile と設定ファイルを全て含んでいる 最新のパッケージシステムのソースを ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/ からダウンロードします。 ダウンロードするファイルは pkgsrc.tar.gz です。
(もしすでにインストールされていれば、)次のコマンドで ハードディスクから、現存するコレクションを消し:
# cd /usr # rm -rf pkgsrc
ダウンロードしたコレクションをインストールします:
# tar -xzvpf pkgsrc.tar.gz -C /usr上のコマンドの実行には、時間がかかります。 莫大な数の (小さな) ファイルが展開されるからです。 終わると、新しいプログラムのインストールに必要な枠組の準備が整い、 インストールが開始できます。
註: たぶん明らかでしょうが、上のコマンドは プログラムの 自動インストールに必要な設定ファイルを インストールしたのであって: まだプログラムは インストールされていません! 基本的に、この時、システムは存在しているパッケージの一覧を 持っていて、取得、コンパイルそして、それのインストールが記録されています。
パッケージコレクションをインストールしたら、 Lynx や Netscape で、 存在する全パッケージおよびカテゴリーの 詳細と記述をブラウズすることができます。 例えば:
$ cd /usr/pkgsrc $ lynx README.html
パッケージコレクションはたびたび更新され: たいてい、毎週新しいバージョンが ftp サイトに置かれます。 パッケージコレクションのアップデートには、最初にインストールしたのと 同様に行います。
時々、 パッケージコレクションをアップデートするとき、 "pkgtools" ユーティリティーのアップデートも必要になります。 それが必要なら、簡単に spot : プログラムをインストールしようとした時 パッケージシステムが、あなたの pkgtools が時代遅れだと不平をいいます。
# make ===> Validating dependencies for gqmpeg-0.6.3 Your package tools need to be updated to 2000/02/02 versions. The installed package tools were last updated on 1999/01/01. Please make and install the pkgsrc/pkgtools/pkg_install package. *** Error code 1
アップデートするいちばん簡単な方法は:
# cd /usr/pkgsrc/pkgtools/pkg_install # make install
このあと、パッケージのインストールを 元のエラーメッセージのところから再開できます。
註: 要求されるバージョンを決定するには、 pkgsrc/mk/bsd.pkg.mk ファイルを調べ: 次の行を探します:
PKGTOOLS_REQD = 20000202(日付の 20000202 は単なる例です。) この意味は、 必要なこのバージョンのプログラムが pkg_install-20000202.tar.gz ファイル中にあり、 NetBSD の ftp サイトの packages/distfiles/LOCAL_PORTS にあります。 pkg_install はほかのパッケージを インストールできます。
この節では、あるプログラムのインストールについて記述し: addnerd アプリケーション、 これはシステムに新しいアカウントの作成を簡単にするものです。 最初に、 /usr/pkgsrc/sysutils/addnerd ディレクトリー に cd します。
インターネットに接続していると、 Makefile は自動的に必要なソースを 取得するので、この節は読む必要がありません。
さも無ければ、自分で tarball を取ってくる必要があります。 この場合、 tarball の名前を知っていることが必要で; Makefile の次の行を見て、
DISTNAME = addnerd-1.6
パッケージのフルネームは addnerd-1.6.tar.gz です。
同じ結果を簡単に得るには、次のコマンドで:
# cd /usr/pkgsrc/sysutils/addnerd # make fetch-list
パッケージがダウンロードできるサイトの 一覧も表示します。
パッケージをコンパイルするには、入力します
# cd /usr/pkgsrc/sysutils/addnerd # make
上のコマンドで(もし、 distfiles ディレクトリーにまだ無ければ) ソースアーカイブを取得し、ソースを展開し、 NetBSD でコンパイルするのに必要なパッチを適用し、 それからパッケージを構築します。
それをインストールするには
# make install
新しいプログラムのインストールはシステムに 記録されていて: pkg_info -a コマンドで確認できます。
addnerd パッケージを使う準備ができました; コンパイラーが作った中間生成ファイルを 消すことで、ディスクをいくらか空けることができ:
# make clean # make clean-depends
2番目のコマンドは、いくつかの依存パッケージがインストールされているときに必要で、 addnerd の場合は該当しません。 同じ結果は1コマンドで得ることができ:
# make clean CLEANDEPENDS=1
この章の最初の部分で説明したことは、パッケージシステムによる、 ソースからのプログラムのインストールですが、誰かほかの人が NetBSD 用に 作ってくれたバイナリーパッケージのインストールもできます。 この、2番目の方式のインストールのほうが早くできます。というのも、 パッケージをコンパイルする必要がなく、また、バイナリーパッケージの tarballs のほうが大抵は小さくて、取得も速いからです。 バイナリーパッケージのインストールにはパッケージコレクションは必要ではなく "pkgtools" ユーティリティーだけが必要です。
バイナリープログラムの tarballs は、普通、拡張子は .tgz で、ソースの tarballs は .tar.gz で終わります。
註: ソース tarballs のすべてが、 .tar.gz で終わるわけではありません。 パッケージシステムはほかの のパッケージを扱えます。 たとえば、 .zip, .bz2, etc.
インストール前にバイナリーパッケージをダウンロードすることは必ずしも必要ではなく: ftp://-URL というのも使えます。 例えば:
ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/tcsh-6.09.00.tgz
もし、 FTP サイトにどのバージョンのパッケージがあるかわからなければ、 バージョン情報を無視することができて、 pkg_add は FTP サーバーの最新バージョンをとってきます。 例えば:
# pkg_add ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/tcsh
PKG_PATH に ; で区切られた path と URL のリストを設定することで、 pkg_add でその部分を省略することができて:
# PKG_PATH="/cdrom;/usr/pkgsrc/packages/All;ftp://ftp.netbsd.org/pub/NetBSD/packages/1.4.2/i386/All/" export PKG_PATH # pkg_add tcsh
上のコマンドでは、最初に見つかった tcsh バイナリーパッケージを インストールします。
例として、あらかじめコンパイルされた形態の texinfo プログラムをインストールしてみましょう。
作業ディレクトリーに gtexinfo-3.12.tgz を コピーします。
次のコマンドを与え、
# pkg_add -v gtexinfo-3.12.tgz
インストールされたパッケージの確認には、このコマンドで
# pkg_info
作業ディレクトリーの gtexinfo-3.12.tgz を 消します。
あらかじめコンパイルされたパッケージは、利用するのに非常に便利で、 それは、インストールするのに最小限の手間と時間で済むからなのですが、 でも、ソースパッケージは、コンパイルオプションをカスタマイズできるので、 よりコントロールできます。 コンパイルするのでインストールはやや長めでして、これは、 いくつかの(古めの)プラットホームではきついかもしれません。
プレコンパイルパッケージを pkg_add でインストールする前に、 pkg_info コマンドで、調査するほうが良いでしょう。 例えば:
# pkg_info -f jpeg-6b.tgz
最初の CWD コマンドは調べる価値があり、パッケージのインストール場所 (基本ディレクトリー)です。 いちばん一般的な基本ディレクトリーは /usr/pkg と /usr/X11R6 です。 基本ディレクトリーが希望するものでなければ、 pkg_add コマンドを -p オプションで変えることができます。 例えば、 jpeg-6b.tgz パッケージは標準では /usr/pkg にインストールされますが、 /usr/X11R6 にインストールすることもでき、 次のコマンドで:
# pkg_add -p /usr/X11R6 -v jpeg-6b.tgz
パッケージの管理にいちばん重要なコマンドは:
あらかじめコンパイルされたパッケージを追加します。
インストールされているパッケージを消します。 パッケージ名には、バージョンをつけていてもいなくても良く; バージョンを与えなければ、 pkg_deleteはインストールされているバージョンを探し出します。 ワイルドカードが使えます (でもシェルからはエスケープされている必要があります); 例えば:
# pkg_delete "*emacs*"-r オプションは非常に強力で: そのパッケージを必要とする全パッケージを消して それからそれ自身も消します。 例えば:
# pkg_delete -r jpegで jpeg パッケージーとそれを使うパッケージの全部を消し; これで jpeg パッケージがアップデートできるようになります。
インストールされているいないパッケージの情報を表示します。
パッケージコレクション用の新しいパッケージを作ります。 このプログラムは、新しくコンパイルれさたパッケージに使います。 これは、システムから自動的に呼ばれるので、 手動で呼び出す必要はありません。
パッケージシステムのさまざまな管理上の命令を実行します。
この節 (Quick Start Packaging Guide) は Jason R. Fink による寄稿です。
この節では、 NetBSD パッケージシステムで割合 小さいパッケージ の構築をすばやくはじめる方法を説明します。 NetBSD パッケージシステムの、込み入ったより詳しいことは、 pkgsrc tree の Packages.txt を見てください。
NetBSD に追加する小型パッケージの迅速な構築のための 3つの基本的なツールは:
url2pkg |
a template package |
pkglint |
url2pkg ユーティリティーは pkgsrc ツリーからインストールできます。 このツールはパッケージ構築者を助けます 自動的にできる部分をすばやくやってくれて、 パッケージ構築の基本的な試験をしてくれます。
これは構築者に役に立つもので、 Packages.txt では、11節で、構築例 'A simple example of a package: bison' が示され、加えて、 pkgsrc ツリーの多くのパッケージは、ぜんぜん複雑でないことを示しています。
pkglint ユーティリティーは pkgsrc ツリーからインストールできます。 このツールはパッケージが間違っていないか基本的な検査をします。
工程を開始するのは実に簡単です。パッケージ構築者(たとえばあなた)が NetBSD システム上でソースから構築して、すでにテストされたパッケージを 持っていることが重要です。さもなければ、 も、もし構築にこけたら、 新しいパッケージの設定は問題的のあることかもしれません。 通常、注記すべきで、あらゆる構築問題を解決するための ソースのパッチを書いて、パッケージに入れることができます。 それは、手っ取り早く始めるためのガイドの範囲を超えてしまいます。 (詳しいことは Packages.txt をご覧ください)。
次の段階は url2pkg の使用です。
次は url2pkg を使った、 新パッケージに必要な初期ファイルの作成の各段階を示します:
新しいパッケージのために、 適切な pkgsrc ディレクトリーの下に ディレクトリーを作ります。まだ何も置かないで下さい。
新しいディレクトリーの中に cd します。/P >
入力し
$ url2pkg
ここで url を入力するようにプロンプトが出るので、 url を入力して <リターン> を打ちます。
vi セッションが始まり
註: これは、 NetBSD の標準の場所にある vi を使い、デフォルトでは nvi です。もし、普段、ほかの vi クローン、たとえば vim を 使っていると、 .exrc エラーが出るでしょう。
ファイルをセーブし、抜けます。
url2pkg はパッケージを自動的に取得し、 作業サブディレクトリーに置きます。
次に、 url2pkg は md5 ファイルを生成します。
それで url2pkg session は終わります。 url2pkg は Makefile を除いては、いかなるファイルにも fill しないことに 注意してください。空の PLIST ファイルが生成されます。
この時点で、 Makefile は作られていて、残りのファイルを作成する必要があります。 テンプレートパッケージを使って、テンプレートパッケージの pkg サブディレクトリー から次のファイルをコピーします。
ソフトウェアについての複数行での解説です。 これにはクレジットもきちんと入れるべきです。
ソフトウェアについての1行での解説です。 パッケージ名の記述は必要無く - これは pkg_* ツールが呼び出されたときに 自動的に付加してくれます。
このファイルにはシステム上にインストールされる時のファイルの位置が 書かれています。小さいパッケージ (例えば バイナリー1本と マニュアルページが 1,2 ページ) では、配布物の Makefile や インストールスクリプト 等を覗いてみてると これらのファイルをどこに置くのか簡単な例になるでしょう。
すべてのファイルの準備が整ったら、パッケージを pkglint ツールでチェックする時が来ました。 しばしば Makefile はセクションの移動、変更や追加が必要になりますが、しかしながら、 最初のころは、手作業を行う前に単に pkglint を実行することが役に立って、 何を変更するべきなのかを的確に知ることができ、 下記は pkglint session の Packages.txt から持ってきた あるサンプル出力で:
$ pkglint OK: checking pkg/COMMENT. OK: checking pkg/DESCR. OK: checking Makefile. OK: checking files/md5. OK: checking patches/patch-aa. looks fine.
もしエラーになったら、 それは普通、実になんて言うこともない物で、 私がパッケージ構築中に出たエラーのサンプルは:
extract suffix not requiredMakefile 内では suffix を外す必要がなかったのでした。
今、もし pkglint が通ったら、私は普通、 取得、構築、インストール の完全な試験をします。 これをきちんとするには、作業用サブディレクトリーと /usr/pkgsrc/distfiles にある配布ファイルを消す必要があります。 これで、全体の完全なテストが確実にできます。
最初に、このようにして (pkg/work サブディレクトリーを含む) パッケージツリー自体のアーカイブを作り:
$ tar -czf packagename.tgz package_dir
次に、このアーカイブを NetBSD パッケージのメンテナーが アクセスできるところにアップロードします。 もし、アーカイブのアップロードができなければ、 あなたのアーカイブを何か他の方法で、パッケージメンテナーに届け られないか、 NetBSD にコンタクトをとって見ましょう。
NetBSD パッケージメンテナーへの提出法は "pkg" カテゴリーの send-pr ユーティリティーを使い、概要として、 パッケージ名とバージョン番号、パッケージの簡単な解説、 tar ファイルの URL を書いて提出します。
自分の NetBSD システムにある send-prユーティリティーを使うことができ、 あるいは、何らかの原因でローカルで send-pr が使えなければ、 http://www.NetBSD.org/cgi-bin/sendpr.cgi?gndb=netbsd のオンラインフォームを使うこともできます。
重ねて、この小さなガイドは、わずか数ファイルだけが NetBSD システムに インストールされる小さなパッケージについて書かれています。 それは、パッケージが何のパッチも要求していなくて、依存するものも ないことを仮定しています。
もっと高度なことは、 Packages.txt をご覧ください。