1. portsnap
portsnap コマンドを使用して、ports の状態を最新にします。
portsnap のコンフィグレーションファイルは /etc/portsnap.conf です。これを編集します。
# REFUSE arabic chinese french german hebrew hungarian japanese
# REFUSE korean polish portuguese russian ukrainian vietnamese
ports の更新をかけないグループを指定するもので、日本語以外の他言語を使用しないのであれば、上記より japanese を削除して先頭のコメント定義である # を削除します。
fetch オプションで最新のスナップショットを取得します。
> portsnap fetch
fetch が終了したら、システムインストール後はじめての portsnap の場合は
> portsnap extract
というオプションを使用します。
これ以降は本来、一度 extract を行った後は fetch 後
> portsnap update
というオプションを使用できるのですが、いったん ports をメンテナンスするための ports、portupgrade をインストールします。
2. portupgrade
portupgrade を make する前に make のコンフィグレーションファイルを
> cp /usr/share/examples/etc/make.conf /etc/make.conf
でコピーして編集します。
末尾に下記の行を加えます。
↓ここから
WITHOUT_X11=yes
WITHOUT_GUI=yes
NO_X=true
OPTIONS_UNSET=X11
↑ここまでは X11 を使用しない設定です。使用する場合は記述しません
WITH_MBSTRING=yes PHP をインストールする際、日本語を使う場合は必須です
PHP をインストールしないのであれば、不要です
/etc/make.conf を編集したら、portupgrade をインストールします。
/usr/ports/ports-mgmt/portupgrade
インストールが終わったら、いったん fetch して extract した ports を再度、fetch、extract します。
> portsnap fetch
> portsnap extract
ここまで終わっていれば、これ以降、ports の更新は
> portsnap fetch
> portsnap update
となります。
データベースの更新は
> portsdb -Fu
で行います。
3. ports の状態を参照する
データベースの状態を参照するには
> portversion -v
とします。
結果として以下のような表示になります。(あくまでも一例です)
[Reading data from pkg(8) ... - 23 packages found - done]
autoconf-2.69_1 = up-to-date with port
autoconf-wrapper-20131203 = up-to-date with port
automake-1.15.1 = up-to-date with port
automake-wrapper-20131203 = up-to-date with port
db5-5.3.28_6 = up-to-date with port
dialog4ports-0.1.6 = up-to-date with port
gettext-runtime-0.19.8.1_1 = up-to-date with port
gettext-tools-0.19.8.1 = up-to-date with port
gmake-4.2.1_1 = up-to-date with port
help2man-1.47.5 = up-to-date with port
indexinfo-0.2.6 = up-to-date with port
libedit-3.1.20170329_2,1 = up-to-date with port
libffi-3.2.1_1 = up-to-date with port
libunwind-20170113_1 = up-to-date with port
libyaml-0.1.6_2 = up-to-date with port
m4-1.4.18,1 = up-to-date with port
p5-Locale-gettext-1.07 = up-to-date with port
perl5-5.24.3 = up-to-date with port
pkg-1.10.1 = up-to-date with port
pkgconf-1.3.7,1 = up-to-date with port
portupgrade-2.4.15,2 = up-to-date with port
ruby-2.3.5,1 = up-to-date with port
ruby23-bdb-0.6.6_5 = up-to-date with port
「=」マークがついていれば、最新版がインストールされている
「<」マークがついていれば、ports に新しい版が存在する(更新すべきかも)
ということになります。
> pkg version -vl "<"
というコマンドを使えば
gmake-3.81_4 < needs updating (port has 3.82)
help2man-1.38.4 < needs updating (port has 1.40.4)
ja-freebsd-doc-20110110 < needs updating (port has 20110828)
libtool-2.2.10 < needs updating (port has 2.4)
m4-1.4.15,1 < needs updating (port has 1.4.16,1)
perl-5.10.1_3 < needs updating (port has 5.10.1_4)
portupgrade-2.4.8_1,2 < needs updating (port has 2.4.9.3,2)
ruby-1.8.7.302,1 < needs updating (port has 1.8.7.352_2,1)
ruby18-bdb-0.6.5_1 < needs updating (port has 0.6.6)
というように新しい版が存在するものを一覧表示できます。
ここまでの一連の動作を、crontab に記述して定期的に ports を更新する方法もありますが、バックグラウンドでやってしまうと見落とすことがありますので、例えば適当なディレクトリに下記のような Makefile を作成しておいて、明示的に make する方法もあります。
ports :
portsnap fetch
portsnap update
portsdb -Fu
portversion -v
4. ports のアップグレード
portversion で新しい版が出ている ports を更新するには、
portupgrade [-オプション] ports名
というコマンドを使用します。
わたしは以下のオプションを使用しています。