ports-mgmt/portmaster のすすめ

以前、 ports-mgmt/pkg_replaceのすすめというエントリを書きましたが、最近は ports-mgmt/portmaster を使いだしたので、そちらも紹介しておきます。

portmaster 本体は pkg_replace と同様に、シェルスクリプトで書かれたもので、インストールの際に、他の依存したパッケージがありません。
pkg_replace との違いは、オプションが portupgrade とまるっきり互換性がないため、新たにオプションを覚える必要があります。」

早速、インストールして使ってみましょう。

$ cd /usr/ports/ports-mgmt/portmaster
$ sudo make install clean

これだけです。shell に bash と zsh を使っている場合は シェル補完機能を追加するか聞いてきますので、お好みで設定してください。

あとは早速つかってみよう!と、その前に、/usr/local/etc/ 以下に portmaster.rc.sample というファイルが作られますので、 .sample を消して編集します。

diff -u portmaster.rc.sample portmaster.rc
--- portmaster.rc.sample 2013-12-15 18:53:07.000000000 +0900
+++ portmaster.rc 2014-01-12 00:13:56.516194768 +0900
@@ -13,7 +13,7 @@
# BACKUP=bopt
#
# Make and save a package of the new port (-g)
-# MAKE_PACKAGE=gopt
+MAKE_PACKAGE=gopt
#
# Do not preclean the port's build directory (-C)
# DONT_PRE_CLEAN=Copt
@@ -25,7 +25,7 @@
# DONT_SCRUB_DISTFILES=Dopt
#
# Always delete stale distfiles without prompting (-d)
-# ALWAYS_SCRUB_DISTFILES=dopt
+ALWAYS_SCRUB_DISTFILES=dopt
#
# Do not run 'make config' for ports that need updating (-G)
# PM_NO_MAKE_CONFIG=Gopt
@@ -79,7 +79,7 @@
# PM_DELETE_PACKAGES=pm_delete_packages
#
# Suppress the build confirmation message (--no-confirm)
-# PM_NO_CONFIRM=pm_no_confirm
+PM_NO_CONFIRM=pm_no_confirm
#
# Do not update the xterm title bar (--no-term-title)
# PM_NO_TERM_TITLE=pm_no_term_title

コマンドラインでいうところの -g -d --no-confirm を指定しているのと同じです。この辺はお好みでいろいろ変えてみてください。
-g パッケージを作成
-d 常に配布ファイルを削除
--no-confirm 確認をしない。

設定ファイルを修正したら、あとはいろいろ試してみましょう。

新規にインストールする場合。
$ sudo portmaster /usr/ports/sysutil/tmux

依存関係で、複数の ports がある場合は、最初に一気に聞いてきて、それから make に入るため、時間がかかる ports を寝る前に仕掛けておいて、最初のいくつかで入力待ちで止まっていて orz になるのを防げます。

インストール済みのportsを更新する場合。
$sudo portmaster /var/db/pkg/tmux-1.8_1
強制的に更新する場合は -f をつけます。
更新する際に、それに依存する ports も更新する場合は -r オプションをつけます。
その際に、-Rをつけると、前回更新したportsは更新しません。

インストールしてあるportsを更新する場合2
たとえば、postgresql 9.1 を 9.3に更新する場合
$sudo portmaster -o /usr/ports/databases/postgresql93-server /var/db/pkg/postgresql91-server-9.1.13_1

あとはごとごと make が終わるのを待つだけです。
余談ですが、postgresql のバージョンを上げる際には pg_dumpall してデータベースのバックアップを*必ず*とっておきましょう。

インストールしてあるportsが最新かどうかチェックする。
$ portmaster -L | grep New

インストールしてあるすべての ports を更新する。
$ sudo portmaster -a

普通に使う分にはこのくらい覚えておけば十分だと思います。