Table of Contents
基本的に、pkgsrc には二通りの使い方があります。 一つ目の使い方は、パッケージ用のツールだけをインストールして、 他の人が用意したバイナリーパッケージを使うものです。 これは、pkgsrc のうち “pkg” に相当します。 二つ目の使い方は、pkgsrc の “src” もインストールするものです。 こうすると、自分でパッケージを構築することができますし、 他の人が用意したバイナリーパッケージを使うこともできます。
ftp.NetBSD.org サーバーとそのミラーサイトには、バイナリーパッケージを揃えて置いてあり、 すぐにインストールして使える状態になっています。このバイナリーパッケージは、 以下のような、標準のディレクトリーの設定を使って構築されています。
LOCALBASE
は /usr/pkg
で、ここにほとんどのファイルがインストールされます。
設定ファイルは /usr/pkg/etc
です。
VARBASE
は /var
で、インストール後に変更することのあるファイルはここにインストールされます。
何らかの理由 (root 権限がないなど) でこの各ディレクトリーが使えない場合は、 このバイナリーパッケージを使うことはできないので、 パッケージ用ツールを自分で構築する必要があります。これについてはSection 3.2, “pkgsrc を使う準備をする”に説明があります。
バイナリーパッケージをインストールするためには、
まず、バイナリーパッケージがどこで入手できるか知っている必要があります。
最初に調べる場所は、pkgsrc の主たる FTP サーバーの /pub/pkgsrc/packages
ディレクトリーです。
このディレクトリーには、複数のプラットフォーム用の バイナリーパッケージがあります。 最初に、お使いのオペレーティングシステムのディレクトリーを選んでください。 (バージョン番号がついているディレクトリーは、 歴史的な理由で残っているだけですので、無視してください。) 次に、ハードウェアアーキテクチャーを選び、 その次に、OS のバージョンと pkgsrc の“バージョン”の組合せを選びます。
多くの場合、このディレクトリーには、
パッケージ管理ツールが入った bootstrap.tar.gz
というファイルがあります。このファイルがない場合は、
お使いのオペレーティングシステムにパッケージ管理ツールがもともとあるのでしょう。
このファイルをダウンロードして /
ディレクトリーに展開します。
展開すると、/usr/pkg
(この下には、
バイナリーパッケージ管理用のツールがある) および /var/db/pkg
(インストールされたパッケージのデータベース用) の各ディレクトリーが作られます。
前節で説明したディレクトリーには、
All
というサブディレクトリーがあり、
当該プラットフォーム向けのバイナリーパッケージがすべて置かれています。
ただし、FTP または CDROM (利用しているメディアによって異なります)
経由での配布ができないパッケージは、
除かれています。
パッケージを FTP または HTTP サーバーから直接インストールするには、 Bourne シェルと互換のシェルで、以下のコマンドを実行します (最初に su して root になっておくことを忘れずに)。
#
PATH="/usr/pkg/sbin:$PATH"
#
PKG_PATH="ftp://ftp.NetBSD.org/pub/pkgsrc/packages/
OPSYS
/ARCH
/VERSIONS
/All"#
export PATH PKG_PATH
CDROM, DVD または NFS でマウントされた置き場所からインストールする場合などは、
URL のかわりに、ローカルのパスを使うこともできます。
複数の置き場所からパッケージをインストールしたい場合は、
それらをセミコロンで区切って PKG_PATH
に設定することができます。
以上の準備ができれば、 パッケージのインストールは非常に簡単です。
#
pkg_add openoffice2
#
pkg_add kde-3.5.7
#
pkg_add ap2-php5-*
なお、インストールしようとするパッケージを実行するために必要となるパッケージも、 すべて一緒にインストールされますが、 この必要なパッケージも同じ置き場所に用意されていると仮定されます (訳註: 必要なパッケージがすべて揃うように PKG_PATH を設定する必要があるということ)。
パッケージをインストールすると、脆弱性のあるパッケージがインストールされることもありえます。 このため、pkg_admin audit を定期的に (特に、パッケージを新たにインストールした後には) 実行して、 脆弱性の影響がある構成となっているかどうかを確認するようにしてください。
パッケージをインストールした後に、PATH
に
/usr/pkg/bin
と /usr/pkg/sbin
が含まれている事を確
認してください。これで、インストールされたプログラムを実際に使い始めること
ができます。
パッケージをアンインストールする方法は、そのパッケージを、
ソースコードからインストールしたかバイナリーパッケージからインストールしたかにかかわらず同じです。
どちらの方法でインストールされたかは、pkg_delete コマンドは一切関知しません。
パッケージの削除は、pkg_delete
package-name
を実行するだけでおこなうことができます。
パッケージ名はバージョン番号をつけてもつけなくてもかまいません。
一連のパッケージをアンインストールするために、
たとえば *emacs*
のようにワイルドカードを使うこともできます。
この場合、ワイルドカードが
pkg_delete
に渡る前にシェルに展開されないようにするため、
ワイルドカードはかならずクォートするようにします。
-r
オプションは非常に強力です。これを使うと、
指定したパッケージに依存しているパッケージをすべて削除してから、
指定したパッケージそのものを削除します。たとえば、
#
pkg_delete -r jpeg
は、jpeg および jpeg を使うすべてのパッケージを削除します。これにより、 jpeg パッケージをアップグレードすることが可能になります。
NetBSD セキュリティーオフィサーとパッケージグループでは、 pkgsrc に含まれる (あるいは含まれていた) パッケージの既知の脆弱性のリストを 保守しています。このリストは、 NetBSD FTP サイトの ftp://ftp.NetBSD.org/pub/pkgsrc/distfiles/vulnerabilities から入手できます
pkg_admin fetch-pkg-vulnerabilities を使うと、 このリストを自動的にダウンロードし、 システムにインストールされているパッケージすべてについて セキュリティー検証をすることができます。
このセキュリティー検証は、ふたつの部分からできています。 ひとつめの段階は pkg_admin fetch-pkg-vulnerabilities で、 NetBSD FTP サイトから 脆弱性のリストをダウンロードするものです。 ふたつめは pkg_admin audit で、インストールされているパッケージに脆弱性が ないかどうか検証するものです。脆弱性のあるパッケージがあった場合、 次のように出力してくれます:
Package samba-2.0.9 has a local-root-shell vulnerability, see http://www.samba.org/samba/whatsnew/macroexploit.html
vulnerabilities ファイルを毎日ダウンロードして、常に最新の状態にしておきたいという方もいらっしゃることでしょう。 root ユーザーの crontab(5) エントリーを適切に書いておけば、そういうこともできます。 たとえば、
# vulnerabilities ファイルをダウンロード 0 3 * * * /usr/sbin/pkg_admin fetch-pkg-vulnerabilities >/dev/null 2>&1
というエントリーを書けば、毎日午前 3 時に vulnerability リストを更新することになります。
この例は一日一回ですが、もっと頻繁に更新することもできます。
さらに、パッケージの検証を daily security script でおこないたい方もいらっしゃるでしょう。
これは、以下のような行を /etc/security.local
に書いておけば実現できます。
/usr/sbin/pkg_admin audit
インストール済パッケージが最新かどうかを確認するには、
pkgtools/lintpkgsrc
をインストールして、
lintpkgsrc に “-i” を付けて実行します。たとえば以下のようになります。
%
lintpkgsrc -i
... Version mismatch: 'tcsh' 6.09.00 vs 6.10.00
このようになった場合、パッケージを更新し、そのパッケージに依存しているパッケージをすべて再構築するために、 make update を使うことができます。
pkg_add(1) マニュアルページで警告されている、自分自身で作ったものでないバイナリー パッケージをインストールすることが孕む危険性、無思慮にこのようなファイルを インストールすることにより、あなたのシステムにセキュリティーホールが生じる 事についてよく注意してください。
もちろん、パッケージ、パッケージの構築用のコンパイラー、 その他、呼び出されるすべてのツールのソースコードを完全に読んで理解したわけではない場合は、 ソースからインストールしたパッケージにもすべて、 同じ警告があてはまります。
pkgsrc を入手すると、 pkgsrc
ディレクトリーには、
カテゴリー別に整理されたパッケージ一式が含まれます。
オンラインでパッケージの索引を見られますし、また、 pkgsrc
ディレクトリーで make readme してローカルで README.html
を作って、 www/lynx
や www/firefox
などの好みの
web ブラウザーで見られるようにすることもできます。
パッケージのインストール先のプレフィックスは、
デフォルトでは /usr/pkg
です。これを変えたい場合は、
mk.conf
で LOCALBASE
を設定してください。一つのシステム内で複数の
LOCALBASE
を定義して使い分けるようなことはしないでください
(chroot 環境内は除く)。
以下、本章では、パッケージがすでに pkgsrc に含まれていると仮定 しています。もし、そうでなければ、Part II, “pkgsrc 開発者向けの手引き”で、 パッケージを新たに作る方法をご覧ください。
ソースからパッケージを構築するためには、機能する C コンパイラーが必要です。NetBSD の場合は、 “comp” および “text” 配布物一式をインストールしておく必要があります。X11関連のパッケージを 構築する場合は、さらに“xbase”および“xcomp” 配布物一式も必要です。
パッケージを構築するうえで最初にすることは、配布ファイル (未変更のソース) のダウンロードです。配布ファイルがまだダウンロードされていない場合、 pkgsrc は自動的に配布ファイルを取得します。
distfiles
ディレクトリー
に必要なファイルが
すでに存在していれば、インターネットに接続する必要はありません。
CD-ROMなどにdistfilesがある場合には、CD-ROMを /cdrom
にmountし、
DISTDIR=/cdrom/pkgsrc/distfiles
を mk.conf
に加えて、使うことができます。
標準状態では、人気のあるパッケージを置いているサーバー
(たとえば SourceForge.net のミラー) に過大な負荷をかけないようにするため、
配布サイトのリストの順序はランダムに入れ換えられます。
このため、別の distfile を取得する必要が生ずるたびに、
すべてのミラーからの取得を、新たな (ランダムな) 順序で試みます。
この機能は、MASTER_SORT_RANDOM=NO
を設定して止めることができます (PKG_DEVELOPER
が設定されている場合は、すでに無効化されています)。
主要な配布サイトをあなたのところに近いサイトで上書きす
ることができます。
変数をひとつかふたつ設定すると、
マスターサイトにアクセスする順序を変えることができます。
MASTER_SORT
には、
ドメインの接尾辞を空白で区切ったリストが含まれます。
MASTER_SORT_REGEX
はこれより柔軟なもので、
正規表現を空白で区切ったリストが含まれます。
これは MASTER_SORT
より高い優先度を持ちます。
pkgsrc/mk/defaults/mk.conf
の例を参照してください。これにより、帯域幅
と時間が節約できるかもしれません。
これらの設定は、シェルの環境変数でも変更できますし、その設定を今後も有効に
したければ、
mk.conf
ファイルにその定義を書き加えておくこともできます。
パッケージが他のパッケージ(例えば meta-pkgs/kde3
など)
に依存している場合、
ダウンロードとコンパイルを交互に繰り返すことがあります。
最初に必要なすべてのソースを確実にダウンロードするには、
次のコマンドを使用します:
%
make fetch-list | sh
このコマンドは必要なファイルを取ってきてdistfiles
ディレクトリー
に保存するためのシェルコマンドを出力、実行します。必要なファイルを手動で
ダウンロードするという方法もあります。
ソフトウェアがダウンロードされると、パッチが適用された上で、 コンパイルされます。それにかかる時間はあなたのコンピューターによりますし、 そのソフトウェアが依存している他のパッケージの数とそれらのコンパイルに かかる時間にもよります。
bootstrap または pkgsrc を NetBSD 以外のシステムで使う場合は、 この手引きで例示されている “make” ではなく pkgsrc の bmake コマンドを使ってください。
たとえば、パッケージの各構成要素を構築するには、シェルプロンプトで
%
cd misc/figlet
%
make
とします。
次は新たにコンパイルされたプログラムを、 実際にあなたのシステムにインストールします。 インストールしようとしているパッケージのディレクトリーにいる間に
%
make install
と入力してください。
パッケージをシステムにインストールするには root 権限が必要なことがあります。 ただし、pkgsrc には必要な時のみ su する機能があり、 実際のインストール時にのみ root になることができます。
そのソフトウェアは今まさにインストールされ、 使用できるようにセットアップされたことになります。 もうこれ以上コンパイル後の作業ファイルは必要とされないので、
%
make clean
と入力し作業ディレクトリー内のファイルを削除してしまってもかまいません。 もし、プログラムをコンパイルするときに、 依存関係により他のパッケージがコンパイル/インストールされたならば、 それらも次のコマンドにより、きちんと削除することができます。
%
make clean-depends
figlet ユーティリティーを例にあげると、Appendix B, 構築のログのように構築することに より、システムにインストールすることができます。
プログラムはパッケージツリーのデフォルトルート- /usr/pkg
にインストール
されます。もし、このディレクトリーが趣味にあわないのであれば、環境変数
LOCALBASE
を設定してください。この値はパッケージツリーのルートとして使用さ
れます。例えば、/usr/local
を使う場合、
LOCALBASE=/usr/local
と設定してください。
なお、これにはパッケージ専用のディレクトリーを使い、他のプログ
ラムと共有させないようにします(つまり、 LOCALBASE=/usr
などとしてはいけませ
ん)。また、LOCALBASE
ツリー内には、独自のファイルやディレクトリー
(src/
,
obj/
, pkgsrc/
のようなもの)は一切追加しないようにしてください。これは、パッ
ケージシステムがインストールするプログラムなどのファイルが、そこにインストー
ルされているかもしれない別のファイルと衝突することがないようにするためです。
いくつかのパッケージは、構築時にいくつかのコンフィギュレーションオプション
を変えるためにmk.conf
を参照します。デフォルトの設定項目については、
pkgsrc/mk/defaults/mk.conf
をのぞいてみてください。LOCALBASE
といっ
た環境変数は、pkgsrc使用時に毎回使えるようにmk.conf
で設定しておくこと
ができます。
時々、 パッケージの構築やインストールの際に、“水面下”で何が起きているかを 見たいことがあります。これは、デバッグのためなのかもしれませんし、好奇心が 高じたものかもしれません。このような用途に使うための変数がいくつも用意され ています。
自分で作った(次章参照)、手動でpkgsrc/packagesに置いた、またはリモートFTPサー
バーに置かれたバイナリーパッケージをインストール
したい場合は、"bin-install"ターゲットを使うことができます。このターゲットは、
- もし可能ならば - pkg_add(1)を使ってバイナリーパッケージをインストールするほ
か、make packageをおこないます。検索先リモートFTPサーバーのリストは
BINPKG_SITES
変数に保持され、デフォルトはftp.NetBSD.orgです。pkg_add(1)に与え
るべきフラグはすべて、BIN_INSTALL_FLAGS
変数で保持することができます。詳細は
pkgsrc/mk/defaults/mk.conf
をご覧ください。
最後に警告: 標準でないLOCALBASE
の設定をしたシステムの場合は、
各パッケージのインストール前にこれらを設定するようにしてください。複数のディ
レクトリーを同じ目的用に分散して使うことはできないからです。そのようなこと
をすると、pkgsrcはインストール済みのパッケージを正しく検出することができず、
無惨に失敗することになるでしょう。また、コンパイル済バイナリーパッケージは、
通常はデフォルトのLOCALBASE
である
/usr/pkg
を使って構築されているので、標準で
ないLOCALBASE
を使っている場合は、とにかくコンパイル済バイナリーパッケージを
インストールしてはいけません。