プラットフォームへ、大きく変わる/etc/たち
FreeBSDではシステムの設定ファイルは/etc/へ、
この状況は少しずつですが変わり始めています。早ければ11系のリリース時から、
この動きの動機は、
こうした多種多様なハードウェアに対応し、
統一されたフォーマットへ
事の発端は2014年にブルガリアの首都、
Jordan Hubbard氏はその候補としてMac OS Xのlaunchd(8)で使われているバイナリ形式のXML plistを引き合いに出します。この講演を受けてAllan Jude氏は、
- 読みやすいこと
- 構造化されていること
- アップグレードが簡単に実施できること
- 複数のファイルをオーバーレイできること
- デフォルト設定と個別設定を分離できること
Allan Jude氏はこうした点を踏まえてUniversal Config Language
UCLの操作は手動で編集することもできますし、

UCLは上記のようなフォーマットになっています。ほかのファイルをインクルードしたりオーバーレイしたり、
UCLのアイディアとライブラリ、
レガシーファイルからUCLへの移行
具体的にどのように/etc/の変更を考えているというと、
- すべての設定ファイルを/etc/
defaults/にまとめる - 設定変更は/etc/
defaults/のファイルを書き換えるのではなく、 UCLで設定を書いて上書きするようにする (/etc/ defaults/ rc. confと/etc/ rc. confの関係のように)
移行をスムーズに実施するためシェルのシバンのようなセンチネルを設定ファイルの先頭に置くようにして、
そして実はすでにいくつかのソフトウェアの設定ファイルはUCLで記述されています。たとえばJailの設定ファイル/etc/
j1 {
jid = 1;
name = j1;
path =/Users/daichi/j1;
ip4.addr = 192.168.1.251;
host.hostname = jail1.ongs.co.jp;
allow.raw_sockets;
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
interface = bge0;
mount.devfs;
}
j9 {
jid = 9;
name = j9;
path =/Users/daichi/j9;
ip4.addr = 192.168.1.252;
host.hostname = jail9.ongs.co.jp;
allow.raw_sockets;
exec.start = "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
interface = bge0;
mount.devfs;
}
UCLを操作するコマンドとしてはuclcmdというコマンドの開発が進められています。コマンドで操作できるようになればシェルスクリプトから操作の全自動化が簡単にできるようになります。
システムの主要な設定ファイルがすべてUCLになると、
ツールたち
uclcmdのソースコードはallanjude/