FreeBSD 12.4-RELEASE から 14-CURRENT への etcupdate2023年06月29日 04時23分35秒

FreeBSD 14.0-RELEASE はまだまだ先。しかし、FreeBSD 14.0-RELEASE にて、mergemaster は廃止される。

現時点では、etcupdate に関しての情報がかなり少ない。man を見ると、元々 FreeBSD 10.0-RELEASE から存在したらしく、その無名さに驚いた。

基本的に、3-way マージなので、現在利用中のリリースと 14-CURRENT の etc を専用コマンドで、取得すれば良いみたいだ。

FreeBSD 12.4-RELEASE のコードを /mnt/12.4 に、14-CURRENT のコードを /usr/src に取得している。etcupdate のみなら、buildworld 等は必要無さそうだ。なお、14-CURRENT をインストールしたファイルシステムは、 /mnt/stable にマウントされている。

# etcupdate extract -s /mnt/12.4/src -D /mnt/stable
# etcupdate -s /usr/src -D /mnt/stable
Conflicts remain from previous update, aborting.
# etcupdate status  -D /mnt/stable
# etcupdate status  -D /mnt/stable
  C /etc/defaults/rc.conf
  C /etc/devd.conf
  C /etc/group
  C /etc/hosts
  C /etc/inetd.conf
  C /etc/libmap.conf
  C /etc/master.passwd
  C /etc/mtree/BSD.debug.dist
  C /etc/mtree/BSD.include.dist
  C /etc/mtree/BSD.lib32.dis
# etcupdate resolve -D /mnt/stable
extract で元になる、12.4-RELEASE の etc 情報を取得する。後は、etcupdate をそのまま実行すれば、現状が分かるようだ。status コマンドで、どのファイルが問題かを見られる。resolve コマンドでコンフリクトを解消。Subversion のコンフリクト処理と似ていて、their-full(tf) や mine-full(mf) 等のコマンドも使える。