- 1. 概要
- 2. git インストール
- 3. リポジトリ取得
- 4. perl5 アップグレード
- 5. ports 用ツール
- 6. ports の状態を参照する
- 7. ports のアップグレード
1. 概要
インストール時に「/usr/ports」をインストール対象にしていなければ、「/usr/ports」の下は、すっからかんです。
2. git インストール
「Git」のリポジトリから取得するためには、「git」が必要です。
ですが、「git」は、デフォルトではインストールされていません。
なんだか、矛盾する話だなぁ。
「ports」がないので、初回は「git」を次ページで示す、「pkg」でインストールすることになります。
次ページに基づいて、「pkg update」した後、「git」をインストールします。
pkg install -y git
3. リポジトリ取得
下記のコマンドで、リポジトリを取得します。
git clone --depth 1 https://git.FreeBSD.org/ports.git /usr/ports
「clone --depth 1」のオプションをつけないと、今までの全履歴こみで取得するので、大量に時間とディスクと通信量を消費するらしい。
下記のようなログが出力されます。
Cloning into '/usr/ports'...
remote: Enumerating objects: 201374, done.
remote: Counting objects: 100% (201374/201374), done.
remote: Compressing objects: 100% (188909/188909), done.
remote: Total 201374 (delta 14109), reused 127200 (delta 5702), pack-reused 0 (from 0)
Receiving objects: 100% (201374/201374), 91.49 MiB | 3.26 MiB/s, done.
Resolving deltas: 100% (14109/14109), done.
Checking connectivity: 201374, done.
Updating files: 100% (165453/165453), done.
以降、「ports」の更新は、以下のコマンドで行います。
git -C /usr/ports pull
4. perl5 アップグレード
いつもは、すぐに次の項に移るのですが・・・。
前の方の作業で、「perl5 36」がインストールされています。
以降の作業で、「perl5 40」が必要になりますので、アップグレードします。
まずは、「ports」の環境を整えます。
「make」のコンフィグレーションファイルを、コピーして編集します。
cp /usr/share/examples/etc/make.conf /etc/make.conf
chmod 644 /etc/make.conf
vi /etc/make.conf
「X11」を使用しない場合、以下の行を追加。
OPTIONS_UNSET+=X11
OPTIONS_UNSET+=GUI
NO_X=true
後で「PHP」をインストールし、かつ、日本語を使用するのであれば、あらかじめ以下の行を追加しておきます。
OPTIONS_SET+=MBSTRING
「python」は、複数の系列があります。
「python3.11」の系列をメインに使用する場合は、以下のように記述します。
DEFAULT_VERSIONS+=python=3.11 python3=3.11
「ruby」にも複数の系列があります。
以下の、一連の捜査を行った後、「ruby」のバージョンを調べると「3.2.4」でした。
「ruby3.2」の系列をメインに使用する場合は、以下のように記述します。
DEFAULT_VERSIONS+=ruby=3.2
「perl5」に関してデフォルトのバージョンと違うものをインストールするのであれば、記述することがあります。
今回、「FreeBSD 14.3 RELEASE」では、2025年6月11日の時点では、デフォルトで、「perl5 5.36」インストールされるのですが。
この後の作業で、「autoconf」をインストールする際、「perl5 5.40」が必要になるので、あらかじめ記述しておきます。
DEFAULT_VERSIONS+=perl5=5.40
「git」でインストールされた「perl5.36」をアンインストールしておきます。
pkg remove -y perl5
このとき、「git」も削除されるので、本項の後、「git」をインストールする必要があります。
cd /usr/ports/lang/perl5.40
make config
cd /usr/ports/lang/perl5.40
make NO_DIALOG=yes
make reinstall
5. ports 用ツール
「ports」をメンテナンスするための「ports」、「portupgrade」をインストールします。
cd /usr/ports/ports-mgmt/portupgrade
make config
オプションは、デフォルトのままにしておきます。
cd /usr/ports/ports-mgmt/portupgrade
make NO_DIALOG=yes
make reinstall
データベースの更新を行う際にルート証明書が必要になります(「Subversion」のときは、そうだったんだがな・・・)。
ルート証明書の仕組みも「ports」で提供されています。
これを更新しておかないと証明書のエラーとなることがあるのでインストールしておきます。
cd /usr/ports/security/ca_root_nss
make config
cd /usr/ports/security/ca_root_nss
make NO_DIALOG=yes
make reinstall
「ports」データベースの更新を
portsdb -Fu
で行います。
この「-F」オプションは、サーバからインデックスファイルを取得してきますが、そのときにルート証明書が必要になります。
先ほどの「ca_root_nss」のインストールは、このために必要だったのでした。
6. ports の状態を参照する
データベースの状態を参照するには
portversion -v
とします。
結果として以下のような表示になります。(あくまでも一例です)
[Reading data from pkg(8) ... - 49 packages found - done]
Fetching the ports index ... /usr/bin/env fetch -am -o /usr/ports/INDEX-14.xz https://download.FreeBSD.org/ports/index/INDEX-14.xz
/usr/ports/INDEX-14.xz 1863 kB 8118 kBps 00s
done
[Updating the portsdb in /usr/ports ... - 36544 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.........24000.........25000.........26000.........27000.........28000.........29000.........30000.........31000.........32000.........33000.........34000.........35000.........36000..... ..... done]
autoconf-2.72 = up-to-date with port
autoconf-switch-20220527 = up-to-date with port
automake-1.17 = up-to-date with port
brotli-1.1.0,1 = up-to-date with port
bsddialog-1.0.4 = up-to-date with port
ca_root_nss-3.108 = up-to-date with port
curl-8.14.0 = up-to-date with port
・・・ 以下略 ・・・
「=」マークがついていれば、最新版がインストールされている
「<」マークがついていれば、「ports」に新しい版が存在する(更新すべきかも)
ということになります。
次項で述べる「pkg」コマンドで
pkg version -vl "<"
というコマンドを使えば
expat-2.7.0 < needs updating (index has 2.7.1)
libffi-3.4.6 < needs updating (index has 3.4.8)
mpdecimal-4.0.0 < needs updating (index has 4.0.1)
pcre2-10.45 < needs updating (index has 10.45_1)
pkg-2.1.2 < needs updating (index has 2.1.4)
というように新しい版が存在するものを一覧表示できます。
ここまでの一連の動作を、「crontab」に記述して定期的に「ports」を更新する方法もあります。
が、バックグラウンドでやってしまうと見落とすことがありますので、例えば適当なディレクトリに下記のような「Makefile」を作成しておいて、明示的に「make」する方法もあります。
ports:
git -C /usr/ports pull
portsdb -Fu
portversion -v
pkg version -vl "<"
7. ports のアップグレード
「portversion」で確認した結果、新しいバージョンが出ている「ports」を更新するには、
portupgrade [-オプション] ports名
というコマンドを使用します。
わたしは以下のオプションを使用しています。
| オプション | 意 味 |
| v | 冗長な出力を行う(細かい動きまで見ることができるということです) |
| R | 対象の「ports」が依存している「ports」を同時に更新する |
| r | 対象の「ports」に依存している「ports」を同時に更新する |
|