Chapter 8. パッケージコレクション

目次
8.1. パッケージコレクションのインストール
8.2. パッケージコレクションのアップデート
8.3. 例: プログラムをソースからインストールする
8.4. 例: バイナリーパッケージのインストール
8.5. パッケージ管理コマンド
8.6. パッケージ詰めに簡単に取り組めるガイド

NetBSD パッケージコレクションはツールのコレクションで、 Unix システム 用の膨大な量のフリーソフトウェアーのコンパイルと インストールを非常に簡素に行えるものです。 たった 1,2 のコマンドで、完璧な設定で動作するパッケージをインストール できます。

NetBSD パッケージシステムにはじめて出会うと、若干混乱し: 同じ事をするのに、 明らかにコマンドがあることが明らかです。 その問題は実に単純で: プログラムのインストールには 2 通り の方法が あります。

前述の2つの方法は両方とも、誰かほかの人が "パッケージを作る" ことが要求され、 つまり、 NetBSD に移植され設定されています。 パッケージコレクションには 1000 を超えるプログラムがありますが、 あなたの欲しいものがまだ入ってないこともあり得ます。 この場合、パッケージシステム無しにコンパイルして、動かせるようになれば、 パッケージを作ってコレクションに追加することができ:それによって、 ほかのユーザーは、あなたの作業の恩恵を受けるようになります。

8.1. パッケージコレクションのインストール

プログラムをソースからインストールする前に、 NetBSD のサイトか、自分で選んだミラーサイトから パッケージコレクションをダウンロード、インストールするべきです。 次のステップに書かれています。

  1. 必要な makefile と設定ファイルを全て含んでいる 最新のパッケージシステムのソースを ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/tar_files/ からダウンロードします。 ダウンロードするファイルは pkgsrc.tar.gz です。

  2. (もしすでにインストールされていれば、)次のコマンドで ハードディスクから、現存するコレクションを消し:

    # cd /usr
    # rm -rf pkgsrc
    	  

  3. ダウンロードしたコレクションをインストールします:

    # tar -xzvpf pkgsrc.tar.gz -C /usr    
    上のコマンドの実行には、時間がかかります。 莫大な数の (小さな) ファイルが展開されるからです。 終わると、新しいプログラムのインストールに必要な枠組の準備が整い、 インストールが開始できます。

    註: たぶん明らかでしょうが、上のコマンドは プログラムの 自動インストールに必要な設定ファイルを インストールしたのであって: まだプログラムは インストールされていません! 基本的に、この時、システムは存在しているパッケージの一覧を 持っていて、取得、コンパイルそして、それのインストールが記録されています。

パッケージコレクションをインストールしたら、 Lynx や Netscape で、 存在する全パッケージおよびカテゴリーの 詳細と記述をブラウズすることができます。 例えば:

$ cd /usr/pkgsrc
$ lynx README.html
      

8.2. パッケージコレクションのアップデート

パッケージコレクションはたびたび更新され: たいてい、毎週新しいバージョンが 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 はほかのパッケージを インストールできます。

8.3. 例: プログラムをソースからインストールする

この節では、あるプログラムのインストールについて記述し: addnerd アプリケーション、 これはシステムに新しいアカウントの作成を簡単にするものです。 最初に、 /usr/pkgsrc/sysutils/addnerd ディレクトリー に cd します。

8.3.1. ソースのダウンロード

インターネットに接続していると、 Makefile は自動的に必要なソースを 取得するので、この節は読む必要がありません。

さも無ければ、自分で tarball を取ってくる必要があります。 この場合、 tarball の名前を知っていることが必要で; Makefile の次の行を見て、

DISTNAME = addnerd-1.6      

パッケージのフルネームは addnerd-1.6.tar.gz です。

同じ結果を簡単に得るには、次のコマンドで:

# cd /usr/pkgsrc/sysutils/addnerd
# make fetch-list
      

パッケージがダウンロードできるサイトの 一覧も表示します。

8.3.2. コンパイルとインストール

パッケージをコンパイルするには、入力します

# 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      

8.4. 例: バイナリーパッケージのインストール

この章の最初の部分で説明したことは、パッケージシステムによる、 ソースからのプログラムのインストールですが、誰かほかの人が 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 プログラムをインストールしてみましょう。

  1. 作業ディレクトリーに gtexinfo-3.12.tgz を コピーします。

  2. 次のコマンドを与え、

    # pkg_add -v gtexinfo-3.12.tgz    

  3. インストールされたパッケージの確認には、このコマンドで

    # pkg_info    

  4. 作業ディレクトリーの 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    

8.5. パッケージ管理コマンド

パッケージの管理にいちばん重要なコマンドは:

pkg_add

あらかじめコンパイルされたパッケージを追加します。

pkg_delete

インストールされているパッケージを消します。 パッケージ名には、バージョンをつけていてもいなくても良く; バージョンを与えなければ、 pkg_deleteはインストールされているバージョンを探し出します。 ワイルドカードが使えます (でもシェルからはエスケープされている必要があります); 例えば:

# pkg_delete "*emacs*"	    
-r オプションは非常に強力で: そのパッケージを必要とする全パッケージを消して それからそれ自身も消します。 例えば:
# pkg_delete -r jpeg	    
で jpeg パッケージーとそれを使うパッケージの全部を消し; これで jpeg パッケージがアップデートできるようになります。

pkg_info

インストールされているいないパッケージの情報を表示します。

pkg_create

パッケージコレクション用の新しいパッケージを作ります。 このプログラムは、新しくコンパイルれさたパッケージに使います。 これは、システムから自動的に呼ばれるので、 手動で呼び出す必要はありません。

pkg_admin

パッケージシステムのさまざまな管理上の命令を実行します。

8.6. パッケージ詰めに簡単に取り組めるガイド

この節 (Quick Start Packaging Guide) は Jason R. Fink による寄稿です。

この節では、 NetBSD パッケージシステムで割合 小さいパッケージ の構築をすばやくはじめる方法を説明します。 NetBSD パッケージシステムの、込み入ったより詳しいことは、 pkgsrc tree の Packages.txt を見てください。

8.6.1. ツール

NetBSD に追加する小型パッケージの迅速な構築のための 3つの基本的なツールは:

url2pkg
a template package
pkglint

8.6.1.1. url2pkg

url2pkg ユーティリティーは pkgsrc ツリーからインストールできます。 このツールはパッケージ構築者を助けます 自動的にできる部分をすばやくやってくれて、 パッケージ構築の基本的な試験をしてくれます。

8.6.1.2. Template package

これは構築者に役に立つもので、 Packages.txt では、11節で、構築例 'A simple example of a package: bison' が示され、加えて、 pkgsrc ツリーの多くのパッケージは、ぜんぜん複雑でないことを示しています。

8.6.1.3. pkglint

pkglint ユーティリティーは pkgsrc ツリーからインストールできます。 このツールはパッケージが間違っていないか基本的な検査をします。

8.6.2. 始めよう

工程を開始するのは実に簡単です。パッケージ構築者(たとえばあなた)が NetBSD システム上でソースから構築して、すでにテストされたパッケージを 持っていることが重要です。さもなければ、 も、もし構築にこけたら、 新しいパッケージの設定は問題的のあることかもしれません。 通常、注記すべきで、あらゆる構築問題を解決するための ソースのパッチを書いて、パッケージに入れることができます。 それは、手っ取り早く始めるためのガイドの範囲を超えてしまいます。 (詳しいことは Packages.txt をご覧ください)。

8.6.2.1. url2pkg の使用

次の段階は url2pkg の使用です。

次は url2pkg を使った、 新パッケージに必要な初期ファイルの作成の各段階を示します:

  1. 新しいパッケージのために、 適切な pkgsrc ディレクトリーの下に ディレクトリーを作ります。まだ何も置かないで下さい。

  2. 新しいディレクトリーの中に cd します。/P >

  3. 入力し

    $ url2pkg	      

  4. ここで url を入力するようにプロンプトが出るので、 url を入力して <リターン> を打ちます。

  5. vi セッションが始まり

    註: これは、 NetBSD の標準の場所にある vi を使い、デフォルトでは nvi です。もし、普段、ほかの vi クローン、たとえば vim を 使っていると、 .exrc エラーが出るでしょう。

    vi セッションは 新しいパッケージの Makefile のためです。 パッケージ名、パッケージのメンテナー e-mail 、 パッケージの該当するカテゴリーを入力します。

  6. ファイルをセーブし、抜けます。

  7. url2pkg はパッケージを自動的に取得し、 作業サブディレクトリーに置きます。

  8. 次に、 url2pkg は md5 ファイルを生成します。

それで url2pkg session は終わります。 url2pkg は Makefile を除いては、いかなるファイルにも fill しないことに 注意してください。空の PLIST ファイルが生成されます。

8.6.3. 残りを埋める

この時点で、 Makefile は作られていて、残りのファイルを作成する必要があります。 テンプレートパッケージを使って、テンプレートパッケージの pkg サブディレクトリー から次のファイルをコピーします。

DESCR

ソフトウェアについての複数行での解説です。 これにはクレジットもきちんと入れるべきです。

COMMENTS

ソフトウェアについての1行での解説です。 パッケージ名の記述は必要無く - これは pkg_* ツールが呼び出されたときに 自動的に付加してくれます。

PLIST

このファイルにはシステム上にインストールされる時のファイルの位置が 書かれています。小さいパッケージ (例えば バイナリー1本と マニュアルページが 1,2 ページ) では、配布物の Makefile や インストールスクリプト 等を覗いてみてると これらのファイルをどこに置くのか簡単な例になるでしょう。

8.6.4. pkglint でチェックする

すべてのファイルの準備が整ったら、パッケージを 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 required	
Makefile 内では suffix を外す必要がなかったのでした。

8.6.5. 構築/インストールの実行試験

今、もし pkglint が通ったら、私は普通、 取得、構築、インストール の完全な試験をします。 これをきちんとするには、作業用サブディレクトリーと /usr/pkgsrc/distfiles にある配布ファイルを消す必要があります。 これで、全体の完全なテストが確実にできます。

8.6.6. send-pr を使ってパッケージを提出する

最初に、このようにして (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 のオンラインフォームを使うこともできます。

8.6.7. 締めくくりのメモ

重ねて、この小さなガイドは、わずか数ファイルだけが NetBSD システムに インストールされる小さなパッケージについて書かれています。 それは、パッケージが何のパッチも要求していなくて、依存するものも ないことを仮定しています。

もっと高度なことは、 Packages.txt をご覧ください。