glibc更新時のカスタムロケールについて
脆弱性が見つかったなどglibcを更新する機会があり、カスタムロケールが元に戻ってしまったためメモしておきます。
似たような事象情報
https://access.redhat.com/ja/node/1335543
glibcはご存知の通りlinux系OSの根幹をなすプログラム群で、さまざまなパッケージに対して被依存関係があります。予想外の場所も影響がありました。。
内容
ロケールに文字コード(sjisなど)を追加して運用しているシステムにおいて、glibcを更新した場合、ロケール情報が追加前(デフォルト)に戻った
glibcの依存関係
以下のようにglibcを更新する場合、common/devel/headersも更新となります。
Dependencies Resolved
Updating:
glib
Updating for dependencies:
glibc-common
glibc-devel
glibc-headers
更新前と後のロケール情報比較
ロケールにsjisを追加していた場合
$ localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS
$ locale -a | grep ja
ja_JP
ja_JP.eucjp
ja_JP.sjis <==入ってる
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
$ sudo yum update glibc
(1/4): glibc-2.17-196.el7.x86_64.rpm
(2/4): glibc-common-2.17-196.el7.x86_64.rpm
(3/4): glibc-devel-2.17-196.el7.x86_64.rpm
(4/4): glibc-headers-2.17-196.el7.x86_64.rpm
・・・中略・・・
Complete!
$ locale -a | grep ja
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
更新後、追加済みのsjisが消えました。これはロケール情報の実体である「/usr/lib/locale/locale-archive」がglibc-commonに含まれていて、rpmの更新時に現行OSのファイルを上書きしたためと思われます。
(ロケール追加時に利用したlocaledefコマンドによってlocale-archiveが作り直されたことも合わせて確認しました)
参考)glibc-commonに含まれているファイル
$ rpm -ql glibc-common | grep locale-archive
/usr/lib/locale/locale-archive
glibc-common更新時にロケール情報戻りを許容するのか
sjisの定義をlocale-archiveではなく外に出力した場合glibc-commonを更新した場合であっても追加したロケール情報は保持されたままでした。きちんと検証できていませんが、追加時には以下のようにしておくのがより良いのかもしれません。後日glibcの更新ポリシーや、ドキュメントをもう少し確認してみようと思います。
localedefコマンドの引数と結果
$ date
2017年 9月 21日 木曜日 00:00:55 JST
$ localedef -f SHIFT_JIS -i ja_JP /usr/lib/locale/ja_JP.SJIS
$ ls -lh /usr/lib/locale/locale-archive
-rw-r--r-- 1 root root 102M 9月 20 23:55 /usr/lib/locale/locale-archive
$ ls -lh /usr/lib/locale/ja_JP.SJIS
-rw-r--r-- 1 root root 107 9月 21 00:01 LC_ADDRESS
-rw-r--r-- 1 root root 294K 9月 21 00:01 LC_COLLATE
-rw-r--r-- 1 root root 511K 9月 21 00:01 LC_CTYPE
-rw-r--r-- 1 root root 345 9月 21 00:01 LC_IDENTIFICATION
-rw-r--r-- 1 root root 27 9月 21 00:01 LC_MEASUREMENT
drwxr-xr-x 2 root root 4.0K 9月 21 00:01 LC_MESSAGES
-rw-r--r-- 1 root root 294 9月 21 00:01 LC_MONETARY
-rw-r--r-- 1 root root 79 9月 21 00:01 LC_NAME
-rw-r--r-- 1 root root 58 9月 21 00:01 LC_NUMERIC
-rw-r--r-- 1 root root 38 9月 21 00:01 LC_PAPER
-rw-r--r-- 1 root root 55 9月 21 00:01 LC_TELEPHONE
-rw-r--r-- 1 root root 4.9K 9月 21 00:01 LC_TIME
Author And Source
この問題について(glibc更新時のカスタムロケールについて), 我々は、より多くの情報をここで見つけました https://qiita.com/kaikusakari/items/9fa7fcab0bb07b5122be著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .