2. FreeBSD 10.4 RELEASE/ports・pkg/ports

 
2.1 portsnap
2.2 portupgrade
2.3 portsの状態を参照する
2.4 portsのアップグレード

2.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 をメンテナンスするための portsportupgrade をインストールします。

2.2 portupgrade

 portupgrademake する前に 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 を再度、fetchextract します。

> portsnap fetch
> portsnap extract
 ここまで終わっていれば、これ以降、ports の更新は

> portsnap fetch
> portsnap update
 となります。  データベースの更新は

> portsdb -Fu
 で行います。

2.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

2.4 ports のアップグレード

 portversion で新しい版が出ている ports を更新するには、

> portupgrade [-オプション] ports名
 というコマンドを使用します。  わたしは以下のオプションを使用しています。
オプション意味
v冗長な出力を行う(細かい動きまで見ることができるということです)
R対象の ports が依存している ports を同時に更新する
r対象の ports に依存している ports を同時に更新する