Solaris 11とロケール設定

数年前のトラウマ思い出がフラッシュバックしてきたのでメモ。 Solaris関係の仕事の予定はないけどせっかくなので。

Solaris 11とSolaris 10以前で設定手順が違ったという話。

就職して初めて本物のUNIXSolarisに遭遇。 最初はSolaris 9か10だったと思う。

確か自社ミドルウェアの動作検証の関係で、システムロケールを変更する必要があった。
Solaris 10以前の環境であれば、

# vi /etc/default/init

環境変数LANGを設定して再起動すればOK

ちょうどSolarisに慣れてきた頃、ハマったのがSolaris 11。 同じ要領で設定ファイルを編集して再起動すると、編集したファイルが元に戻ってしまう。 当然、設定変更は反映されない。

結論からいうとSolaris 11以降ではsvccfgを使う必要がある。 たまたまOracleVM Server for SPARC、しかもコンテナという環境。何か特殊な設定があるのかと思ってGoogle先生と禅問答。
結局、OracleVMもコンテナも無関係で、設定手順が違うだけ。

公式ドキュメント:国際化とローカリゼーションの変更 - Oracle Solaris 10 から Oracle Solaris 11 への移行

# svccfg -s svc:/system/environment:init \
   setprop environment/LANG = astring: ja_JP.UTF-8 
# svcadm refresh svc:/system/environment

ただし、ロケール変更前から動作しているプロセスには影響しないので、再起動するのが無難。

要はSolaris 10(の後期)からSMFというLinuxのsystemdみたいなモノ*1のが導入されていて、 Solaris 11で全体的に採用されたという理解。

とは言っても、もう流石にSolaris関連の仕事はないだろう…。

*1:失礼