FreeBSD 14.3 RELEASE - ports・pkg - ports


クラウディア 


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」を同時に更新する


AbemaTV 無料体験
葬送のフリーレン Prime Video