便利なupdate-*

最近のLinuxパソコンはコマンドラインの操作などまるでいらない。あまりの簡単さに「もうLinuxにはフロンティアはない」と悲しむマニアすらいるほどだが、一般にはもちろんその方がいいだろう。

が、Windowsでipconfigやhostsを知っていれば少し便利になるように、Linuxにも「これ知っていれば少し便利」というコマンドがいくつかある。Debian系の update-* もそうだ。そんなわけでいくつか紹介する。

update-rc.d

ランレベルという発想がある。つまり「ネットワークなしでユーザはひとり」とか「ネットワークありのマルチユーザ」とか、いわゆる動作モードという奴をレベルで現したものだ。Windowsにも「セーフモード」という奴があるが、これと発想は同じようなものだ。HDDに深刻な問題が起きたりすると、Windowsでセーフモードで起動するように、Linuxでもシングルユーザモード(ランレベル1)で起動したりする。

こういう時「このレベルならこのプログラムを起動する」というのを制御するのがこのupdate-rc.dだ。RedHatなどではchkconfigというコマンドを使うが、用法こそ違うが考え方は同じと思っていい。

apache2を例にとろう。

apache2はDebianでは、以下のように起動する。

$ sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K09apache2
   /etc/rc1.d/K09apache2
   /etc/rc2.d/S91apache2
   /etc/rc3.d/S91apache2
   /etc/rc4.d/S91apache2
   /etc/rc5.d/S91apache2
   /etc/rc6.d/K09apache2
$ sudo update-rc.d -f apache2 defaults
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/S20apache2 -> ../init.d/apache2
   /etc/rc3.d/S20apache2 -> ../init.d/apache2
   /etc/rc4.d/S20apache2 -> ../init.d/apache2
   /etc/rc5.d/S20apache2 -> ../init.d/apache2

一度removeして再設定している。なぜか 上書きはエラーになる ので要注意。

インストールしてあるけど起動したくない、という時は以下のようにする。

$ sudo update-rc.d -f apache2 remove
 Removing any system startup links for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2
   /etc/rc1.d/K20apache2
   /etc/rc2.d/S20apache2
   /etc/rc3.d/S20apache2
   /etc/rc4.d/S20apache2
   /etc/rc5.d/S20apache2
   /etc/rc6.d/K20apache2
$ sudo update-rc.d -f apache2 stop 20 0 1 2 3 4 5 6 .
 Adding system startup for /etc/init.d/apache2 ...
   /etc/rc0.d/K20apache2 -> ../init.d/apache2
   /etc/rc1.d/K20apache2 -> ../init.d/apache2
   /etc/rc2.d/K20apache2 -> ../init.d/apache2
   /etc/rc3.d/K20apache2 -> ../init.d/apache2
   /etc/rc4.d/K20apache2 -> ../init.d/apache2
   /etc/rc5.d/K20apache2 -> ../init.d/apache2
   /etc/rc6.d/K20apache2 -> ../init.d/apache2

ひとつ注意。

ブート時に起動させないためなら、removeだけでも起動しなくなる。
だがその方法は早計である。なぜなら、一回でもaptitudeやapt-getでupgradeすると「あれ、起動設定がないじゃん」と賢いインストーラが気を利かせて作ってくれるからだ。だから「これは起動しなくていいんだ」と明示的に教えなくてはならない。

なお、プログラムによっては/etc/defaultで起動設定を止める事もできる。たとえばSMTP認証ライブラリは、/etc/default/saslauthdに以下を指定すれば止められる。

START=yes

だがこの方法はすべてに通用するわけではない。upadte-rc.d で止めるべきだ。

update-alternatives

/etc/alternatives配下の設定をいじる。よく頼まれるのは以下だった。

$ update-alternatives --config editor

これで標準エディタを変更する。これにより、crontab -e時に起動するエディタを変更する事もできる。

同じように、www-browser でコンソールブラウザを変更したり、javaでSunのJavaを使うかgcjを使うかを選択できたりもする。いろいろ試してほしい。

なお以下は112版の例。適当なDebianではこれくらいupdate-*が入っている事もある。サーバではあまり使わないものも少なくないが、見てみると使えそうなものもある。

# update- (ここでTABを押す)
update-alternatives       update-fonts-dir          update-mime
update-anthy-dics         update-fonts-scale        update-mime-database
update-app-install        update-gconf-defaults     update-modules
update-binfmts            update-gdkpixbuf-loaders  update-notifier
update-boinc-applinks     update-grub               update-openoffice-dicts
update-ca-certificates    update-gtk-immodules      update-pangox-aliases
update-catalog            update-icon-caches        update-passwd
update-default-aspell     update-inetd              update-pciids
update-default-ispell     update-initramfs          update-perl-sax-parsers
update-default-wordlist   update-ispell-dictionary  update-python-modules
update-desktop-database   update-java-alternatives  update-rc.d
update-dictcommon-aspell  update-language           update-texmf
update-fmtutil            update-locale             update-updmap
update-fontlang           update-manager            update-usbids
update-fonts-alias        update-menus              update-xmlcatalog