CentOS7 で ipcs-m
を実行すると下記のような出力になる
$ ipcs -m ------ 共有メモリセグメント -------- キー shmid 所有者 権限 バイト nattch 状態 0x00000000 113934337 root 600 40 9 対象 🍣
🍣 部分の 対象 って訳されているのが何なのだろうと気になってしょうがない
$ LANG=C ipcs -m ------ Shared Memory Segments -------- key shmid owner perms bytes nattch status 0x00000000 113934337 root 600 40 9 dest
デフォルトロケールでみてみると dest となっている
dest は何ですと?
dest が付いた SysV 共有メモリセグメントは、 shmct(2) + IPC_RMID で 破棄済み のマークをつけたものである。つまり destroyed の短縮系として dest と考えるのが妥当そうなのだが、翻訳では destination として扱われている感じがする
翻訳のソースを追う
どのファイルを見ればよいのか分からないので、strace を使って絞り込んでいった
$ strace -eopen ipcs -m >/dev/null open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 open("/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/usr/lib/locale/locale-archive", O_RDONLY|O_CLOEXEC) = 3 open("/usr/share/locale/locale.alias", O_RDONLY|O_CLOEXEC) = 3 open("/usr/share/locale/ja_JP.utf-8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja_JP.utf8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja_JP/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja.utf-8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja.utf8/LC_MESSAGES/util-linux.mo", O_RDONLY) = -1 ENOENT (No such file or directory) open("/usr/share/locale/ja/LC_MESSAGES/util-linux.mo", O_RDONLY) = 3 🍣 open("/usr/lib64/gconv/gconv-modules.cache", O_RDONLY) = 3 open("/proc/sysvipc/shm", O_RDONLY) = 3 +++ exited with 0 +++
ロケール名を変えて util-linux.mo
を探し 🍣で open(2) に成功している。util-linux.mo
が翻訳ファイルと推測する
RPM を探す
次に どの RPM で提供されているのかを特定する
$ rpm -qf /usr/share/locale/ja/LC_MESSAGES/util-linux.mo util-linux-2.23.2-16.el7.x86_64
次に SRPM をダウンロードして ~/rpmbuild/BUILD
以下に展開する
# yumdownloader --source を使ってもいいよ $ wget http://vault.centos.org/7.2.1511/updates/Source/SPackages/util-linux-2.23.2-26.el7_2.3.src.rpm $ rpm -ivh util-linux-2.23.2-26.el7_2.3.src.rpm $ rpmbuild -bp ~/rpmbuild/SPECS/util-linux.spec
grep と find であれこれして、po/ja.po にソースを見つけた
$ grep -C2 対象 ~/rpmbuild/BUILD/util-linux-2.23.2/po/ja.po #, fuzzy, c-format msgid "%s: adding partition #%d failed" msgstr "ディレクトリの追加が失敗しました: %s (対象: %s) (%d)" #: disk-utils/partx.c:409 -- #: sys-utils/ipcs.c:327 msgid "dest" 🍣 msgstr "対象" 🍣 #: sys-utils/ipcs.c:328
ディストリビューションの SRPM で確認できたので、次に upstream のソースを探して更に確認をとってみる
upstream を探す
util-linux でググっていって util-linux - Wikipedia を読んだ所、下記が upstream ということだ
git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git
util-linux-ng の関連のサイトも出てくるので混乱していたのだが、現在の util-linux と util-linux-ng の関係は下記の通りらしい
util-linux is a standard package of the Linux operating system. A fork, util-linux-ng—with ng meaning "next generation"—was created when development stalled,[3] but as of January 2011 has been renamed back to util-linux, and is the official version of the package.[4]
master では更新済み
リポジトリの master を確認すると、 対象 から 削除 に更新済みだった!
# diff が大きいので、該当部分のみを抜き出す @@ -12584,18 +12717,18 @@ msgstr "状態" msgid "Not set" msgstr "未セット" -#: sys-utils/ipcs.c:336 sys-utils/lsipc.c:976 sys-utils/lsipc.c:982 +#: sys-utils/ipcs.c:336 sys-utils/lsipc.c:992 sys-utils/lsipc.c:998 msgid "dest" -msgstr "対象" +msgstr "削除"
コミット
$ git log 91420f055a68bb8237ddf5d79bd2f393c65a94e1 commit 91420f055a68bb8237ddf5d79bd2f393c65a94e1 Author: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp> Date: Fri Sep 30 10:34:15 2016 +0200 po: update ja.po (from translationproject.org)
翻訳は translationproject.org から提供されているのかな?
当所の疑問点は解決してだいたい満足した。upstream での変更が どのようにしてディストリビューションに降りてくるのかが気になる。