2019年4月1日月曜日

Linux を新元号に対応させる方法

すっかり放置ブログになっていますが、元号が変った記念更新。

Linux (glibc)は設定ファイルにより元号に対応しており、設定ファイルを書き変えるだけで新元号に対応することができます。 待っていれば OS のアップデートで対応されると思いますが、一早く変更したい人のために手順を簡単に説明します。

1. 現在の状況を確認

$ export LANG=ja_JP.utf8 
$ date +%Ec -d '2019/05/01' 
平成31年05月01日 00時00分00秒
  ⇒ 変更前はもちろん 5/1 日は平成のままです。

2. 設定ファイルを書き換え

$ su # cd /usr/share/i18n/locales/

(念のため現在の設定ファイルをバックアップ) 
# cp ja_JP ja_JP.orig

(LC_TIME セクションにある era の先頭あたりを書き換え)
# vi ja_JP 

(変更前:1行削除)
era    "<U002B><U003A><U0032><U003A><U0031><U0039><U0039><U0030><U002F><U0030><U0031><U002F><U0030><U0031><U003A><U002B><U002A><U003A><U5E73><U6210><U003A><U0025><U0045><U0043><U0025><U0045><U0079><U5E74>";/
(変更後:3行追加)
era    "<U002B><U003A><U0032><U003A><U0032><U0030><U0032><U0030><U002F><U0030><U0031><U002F><U0030><U0031><U003A><U002B><U002A><U003A><U4EE4><U548C><U003A><U0025><U0045><U0043><U0025><U0045><U0079><U5E74>";/
       "<U002B><U003A><U0031><U003A><U0032><U0030><U0031><U0039><U002F><U0030><U0035><U002F><U0030><U0031><U003A><U0032><U0030><U0031><U0039><U002F><U0031><U0032><U002F><U0033><U0031><U003A><U4EE4><U548C><U003A><U0025><U0045><U0043><U5143><U5E74>";/
       "<U002B><U003A><U0032><U003A><U0031><U0039><U0039><U0030><U002F><U0030><U0031><U002F><U0030><U0031><U003A><U0032><U0030><U0031><U0039><U002F><U0030><U0034><U002F><U0033><U0030><U003A><U5E73><U6210><U003A><U0025><U0045><U0043><U0025><U0045><U0079><U5E74>";/

(書き換えのかわりに以下のパッチをダウンロードして当てると簡単です)
# patch -p0 < gengou.patch

3. 情報の更新

# localedef -f UTF-8 -i ja_JP ja_JP.utf8

(必要ならば SJIS と EUC-JP も更新)
# localedef -f SHIFT_JIS -i ja_JP ja_JP.shiftjis 
# localedef -f EUC-JP i ja_JP ja_JP.eucjp

# exit

4. 確認

(4月中の元号は平成のまま)
$ date +%Ec -d '2019/04/30'
平成31年04月30日 00時00分00秒 

(5月になったら新元号の令和元年)
$ date +%Ec -d '2019/05/01'
令和元年05月01日 00時00分00秒

(来年になったら新元号の令和2年)
$ date +%Ec -d '2020/01/01'
令和2年01月01日 00時00分00秒

以上です。

OS がアップデートされた時には、そちらの設定で上書きされるので特に何もしなくても大丈夫です。