FreeBSD 11.1 RELEASE - ports・pkg - ports

クラウディア 
 2021年4月以降、「ports」のリポジトリが「Subversion」から「Git」へ移行しました。  それに伴い、「ports」の更新方法も変わりましたので、詳細は「「メンテナンス・トラブルシュート - pkg・ports - Subversion から Git へ」」をご参照ください。
1. 概要
2. portsnap
3. portupgrade
4. データベースの更新
5. ports の状態を参照する
6. ports のアップグレード
7. INDEXが壊れている場合の対処

1. 概要

 FreeBSD でアプリケーション・ツール・ユーティリティプログラムをインストールするには ports を使用します。  RedHat 系の Linux を知っている人であれば、rpm に相当するものだと思ってよいかと思います。  ports は刻々かわりますので、インストール時の最新の ports を入手し、必要に応じて更新することになります。

2. portsnap

 portsnap コマンドを使用して、ports の状態を最新にします。  以前のバージョンでは、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 extract
 というオプションを使用して取得した情報を反映します。

3. portupgrade

 ports をメンテナンスするための ports、portupgrade をインストールします。  portupgrade を make する前に make のコンフィグレーションファイルを

> cp /usr/share/examples/etc/make.conf /etc/make.conf
 でコピーして編集します。  X11 を使用しない場合、以下の行を追加します。

OPTIONS_UNSET+=X11
WITHOUT_GUI=yes
NO_X=true
 後で PHP をインストールし、かつ、日本語を使用するのであれば、以下の行を追加します。

WITH_MBSTRING=yes
 /etc/make.conf を編集したら、portupgrade を以下の手順でインストールします。

プロンプト略
cd /usr/ports/ports-mgmt/portupgrade
make
make install
 インストールが終わったら、以下のコマンドを再度実行します。

> rehash
> portsnap fetch
> portsnap extract
 ここまで終われば、これ以降、ports 参照の更新は

> portsnap fetch
> portsnap update
 となります。

4. データベースの更新

 ports データベースの更新を

> portsdb -Fu
 で行います。  この -F オプションはサーバからインデックスファイルを取得してきますが、そのときにルート証明書が必要になります。  ルート証明書も ports で提供されていて、これを更新しておかないと証明書のエラーとなることがあるのでインストールしておきます。

プロンプト略
cd /usr/ports/security/ca_root_nss
make
make install
 インストール時のメッセージ

Installing ca_root_nss-3.36.1...
********************************* WARNING *********************************

FreeBSD does not, and can not warrant that the certification authorities
whose certificates are included in this package have in any way been
audited for trustworthiness or RFC 3647 compliance.

Assessment and verification of trust is the complete responsibility of the
system administrator.

*********************************** NOTE **********************************

This package installs symlinks to support root certificates discovery by
default for software that uses OpenSSL.

This enables SSL Certificate Verification by client software without manual
intervention.

If you prefer to do this manually, replace the following symlinks with
either an empty file or your site-local certificate bundle.

  * /etc/ssl/cert.pem
  * /usr/local/etc/ssl/cert.pem
  * /usr/local/openssl/cert.pem

***************************************************************************

5. ports の状態を参照する

 データベースの状態を参照するには

> portversion -v
 とします。  結果として以下のような表示になります。(あくまでも一例です)

[Rebuilding the pkgdb <format:bdb_btree> in /var/db/pkg ... - 17 packages found (-0 +17) ................. done]
autoconf-2.78               =  up-to-date with port
autoconf-wrapper-20101119   =  up-to-date with port
automake-1.11.1             =  up-to-date with port
automake-wrapper-20101119   =  up-to-date with port
db41-4.1.25_4               =  up-to-date with port
gettext-0.18.1.1            =  up-to-date with port
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)
libiconv-1.13.1_1           =  up-to-date with port
libtool-2.2.10              <  needs updating (port has 2.4)
m4-1.4.15,1                 <  needs updating (port has 1.4.16,1)
p5-Locale-gettext-1.05_3    =  up-to-date with port
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)
「=」マークがついていれば、最新版がインストールされている 「<」マークがついていれば、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.20              <  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

6. ports のアップグレード

 portversion で確認した結果、新しいバージョンが出ている ports を更新するには、

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

7. INDEXが壊れている場合の対処

 portsnap の途中で失敗して INDEX が壊れいると、portsnap のコマンド途中にエラーになります。  そういう場合は、

> rm /var/db/portsnap/INDEX
 でダウンロードに失敗した INDEX を削除後

> portsnap fetch
> portsnap extract
> portsnap update
 とやれば正常に戻ります。
ハイスピードプランJETBOY