たとえばApacheをインストールして、マシン起動時にApacheも起動してくれるよう、rc.confに「apache22_enable=“YES”」とタイプしているとき、たまに情けなくなったりしませんかね。
シンプルなのはいいけど、なんかこう、もうちょっとスマートにできないかとか。
(こわごわ言うけど、Linuxだったらchkconfig httpd onとかで済むよね。)
9.2-RELEASEから入ったsysrcというユーティリティがある。
rc.confの変更を少しだけ助けてくれるものだ。
serviceコマンドと併せて使えば、rc.conf周りの設定は少しだけ楽になる。
以下に使用例を示す。
rc.conf設定の表示
まずはrc.confで設定している変数を、sysrcに続けてタイプしてみる。
$ sysrc hostname
hostname: ascomoid
$ sysrc ifconfig_em0
ifconfig_em0: DHCP
というように、現状の値を教えてくれる。
sysrc -aでrc.confの設定を一覧できる。
$ sysrc -a
dumpdev: NO
hostname: ascomoid
ifconfig_em0: DHCP
keymap: jp.106.kbd
sshd_enable: YES
お気づきの通り、sysrc -aで表示されるのは、デフォルト設定から変更したものだけである。
デフォルト設定も含めて全部表示するには-Aを与える。
$ sysrc -A
accept_sourceroute: NO
accounting_enable: NO
allscreens_flags:
allscreens_kbdflags:
(中略)
wpa_supplicant_program: /usr/sbin/wpa_supplicant
zfs_enable: NO
$
設定書き換え
sysrcに変数設定を与えると、rc.confを書き換えてくれる。
例えばsysrc sshd_enable=“NO"というようにすると、/etc/rc.confの該当行が書き換わる。
$ sysrc sshd_enable
sshd_enable: YES
$ grep sshd_enable /etc/rc.conf
sshd_enable="YES"
$ sysrc sshd_enable
sshd_enable: YES
$ sudo sysrc sshd_enable="NO"
sshd_enable: YES -> NO
$ grep sshd_enable /etc/rc.conf
sshd_enable="NO"
$ sysrc sshd_enable
sshd_enable: NO
$
/etc/rc.confになく、/etc/defaults/rc.confにあるものでもOK。
zfs_enableを指定すると新しく/etc/rc.confに行が追加される。
$ sysrc zfs_enable
zfs_enable: NO
$ grep zfs_enable /etc/rc.conf
$
$ sudo sysrc zfs_enable="YES"
zfs_enable: NO -> YES
$ sysrc zfs_enable
zfs_enable: YES
$ grep zfs_enable /etc/rc.conf
zfs_enable="YES"
設定書き換え(rc.confからの削除)
zfs_enableをNOに戻すが、/etc/rc.confに記載が残ってしまった。
$ sudo sysrc zfs_enable="NO"
zfs_enable: YES -> NO
$ grep zfs_enable /etc/rc.conf
zfs_enable="NO"
$
このままでも、とうぜん害はないが、-xで指定すれば削除できる。
$ sudo sysrc -x zfs_enable
$ grep zfs_enable /etc/rc.conf
$
$ sysrc zfs_enable
zfs_enable: NO
設定書き換え(新規ソフトウェア)
では/etc/rc.conf, /etc/defaults/rc.confの双方にない変数は?
これも追加できる。
以下はlighttpdの場合。
$ sysrc lighttpd_enable
sysrc: unknown variable 'lighttpd_enable'
$
$ sudo sysrc lighttpd_enable="YES"
lighttpd_enable: -> YES
$ sysrc lighttpd_enable
lighttpd_enable: YES
$ grep lighttpd /etc/rc.conf
lighttpd_enable="YES"
$
もちろん削除も可能。
$ sudo sysrc -x lighttpd_enable
$
$ grep lighttpd /etc/rc.conf
$
$ sysrc lighttpd_enable
sysrc: unknown variable 'lighttpd_enable'
$
以上