pkgsrc Guide

目次

pksrcをインストールする

NetBSD以外のシステムでpkgsrcを使う

bootstrapスクリプトはprefixやデータベースのパスを変更できるので, /usr/pkg 以下ですべて完結させたい場合は

# ./bootstrap --prefix=/usr/pkg \
--pkgdbdir=/usr/pkg/.db \
--sysconfdir=/usr/pkg/etc

とする.オプションの詳細についてはbootstrap --helpを参照する.

いつもの使い方

ソフトウェアをインストールする

日本語用の入力メソッドibus-mozcをインストールする場合は

# cd /usr/pkgsrc/inputmethod/ibus-mozc
# make install clean clean-depends

ソフトウェアをアンインストールする

makeのdeinstallターゲットを実行する.

# cd /usr/pkgsrc/inputmethod/ibus-mozc
# make deinstall

pkg_deleteコマンドを使うのもよい.

pkg_delete ibus-mozc

ソフトウェアをなんとなく探す

おおよそのソフトウェアにはそれなりに分かりやすい名前がつけられている.たとえばRuby系のソフトウェアを探したいという大雑把な気持ちを解決するには

# cd /usr/pkgsrc
# ls ./* | grep ruby | less

のようにpkgsrcに収録されている全パッケージ名から"ruby"という文字列が含まれているものを抜き出すと,それなりに絞り込める.

あるいは

# cd /usr/pkgsrc
# grep -r "ruby" ./*/*/DESCR | less

各ディレクトリ内にある,パッケージについての説明が書かれたファイル(DESCR)に対して grep を使って絞り込んだりもする.

検索用のソフトウェアもあるのだろうが僕は使ったことがない.pkgsrcはすべてテキストファイルで構成されているので,テキスト処理に強いUnixコマンド群で完結してしまうからだ.

/etc/mk.confの例

実際に使っているmk.conf.

MAKE_JOBS= 4 # make(1)のジョブ数を指定する.
ACCEPTABLE_LICENSES= vim-license # Vimのライセンスへ同意. 
ACCEPTABLE_LICENSES+= ruby-license # Rubyのライセンスへ同意.

pkgsrcではmakeの-jオプションに直接数字を渡すのを許さないので /etc/mk.conf に書く必要がある.

なぜソースコードからビルドしインストールするのか

DebianやCentOSのようなLinuxディストリビューションでは,指定のリポジトリからコンパイル済みのパッケージをダウンロードしインストールする.ソースコードからビルドしパッケージをゼロから作る行為は時間の無駄かもしれない.

pkgsrcではコンパイル済みのパッケージをそのままインストールするためのターゲットがある.

# cd /usr/pkgsrc/lang/python
# make bin-install

bin-installターゲットはコンパイル済みのパッケージがあればそれを直接インストールし,なければmake installと同じ処理をする.

それでもなぜソースコードからビルドしなければならないのか?その理由は3つある.

ひとつは,ビルドオプションを自由に指定できるためだ.

たとえばFirefoxはソースコードからビルドするのにかなりの時間を要する.しかしbin-installターゲットでインストールされるコンパイル済みのFirefoxパッケージは,音声出力にpulseaudioを使っているのか,ossを使っているのか,alsaを使っているのか不明だ.自分で /etc/mk.confMakefile を編集してpkgsrc越しにビルドすることで,ソフトウェアをきめ細かに設定できる.

ふたつは,ライセンスによるものだ. fonts/ricty パッケージはライセンスの都合から,バイナリ形式の頒布が禁止されている. ライセンスの都合でバイナリ形式の頒布が不可能なソフトウェアはソースコードからビルドしなければならない.

最後に,必ずしもコンパイル済みのパッケージがすべて用意されているわけではないからだ.多くはコンパイル済みのパッケージが用意されているものの,用意されていないものについてはpkgsrcでビルドするしかない.