LoginSignup
7
7

More than 5 years have passed since last update.

CentOS 7 の不要な言語(locale)を削除する

Posted at

locale

locale-archive/usr/share/locale はそれぞれ102MBと89MBを消費しており、一般的に日本語と英語以外は使用する可能性は低いので他の言語は除去しても良いかもしれない。

glibc-common

言語ファイルは glibc-common パッケージでインストールされている。
glibc-common パッケージには GNU libc ライブラリ用の共通バイナリと各国語(ロケール)サポートが含まれる。 1

locale-archive のサイズ

du -h /usr/lib/locale/locale-archive
102M    /usr/lib/locale/locale-archive

locale-archive のサイズを確認すると102MBある。

言語の確認

使用可能な言語の確認

localedef --list-archive | less
locale --all-locales | less

使用可能な言語は localedef --list-archive または locale --all-locales コマンドで確認ができる。
locale -alocaledef --list の結果に加えて CPOSIX が出力される。

残す言語の確認

localedef --list-archive | egrep --ignore-case "^(ja|en_US)"
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc

英語と日本語以外を削除する場合の正規表現の確認。この結果を除外した一覧を作成して削除する。

不要な言語の削除

localedef --list-archive | egrep --invert-match --ignore-case "^(ja|en_US)" | xargs localedef --delete-from-archive && \
mv --force /usr/lib/locale/locale-archive{,.tmpl} && \
build-locale-archive --verbose
input archive file: /usr/lib/locale/locale-archive.tmpl
input alias file: /usr/share/locale/locale.alias
input locale directory prefix: /usr/lib/locale/
output archive file: /usr/lib/locale/locale-archive

先ほど作成した残す言語の一覧を除外した一覧を作成して xargslocaledef --delete-from-archive コマンドに渡した後に build-locale-archive コマンドを実行すると削除される。
その際に locale-archive.tmpl ファイルがないと build-locale-archive: cannot read archive header とエラーが出るので、事前に locale-archivelocale-archive.tmpl にリネームする。

削除後の言語の確認

locale -a
C
POSIX
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
ja_JP
ja_JP.eucjp
ja_JP.ujis
ja_JP.utf8
japanese
japanese.euc
japanese.eucjp

locale-archive のサイズの再確認

du -h /usr/lib/locale/locale-archive
3.8M    /usr/lib/locale/locale-archive

102MB から 3.8MB まで削減された。

/usr/share/locale

/usr/share/locale の容量

du -h --max-depth=1 /usr/share/locale | sort -hr | head
89M     /usr/share/locale/
4.9M    /usr/share/locale/uk
4.2M    /usr/share/locale/fr
3.6M    /usr/share/locale/de
3.5M    /usr/share/locale/pl
3.5M    /usr/share/locale/es
3.3M    /usr/share/locale/sv
3.2M    /usr/share/locale/vi
3.2M    /usr/share/locale/ru
3.1M    /usr/share/locale/ja

/usr/share/locale 配下のファイルは build-locale-archive コマンドでは削除されない。

削除するメッセージカタログの確認

ls -1 /usr/share/locale | egrep -v "^(default|en|ja|locale)" | less

メッセージカタログの削除

cd /usr/share/locale && \
ls -1 /usr/share/locale | egrep -v "^(default|en|ja|locale)" | xargs rm -fr
du -h --max-depth=1 /usr/share/locale | sort -hr | head -n1
5.6M    /usr/share/locale

89MB から 5.6MB まで削減された。

/usr/share/i18n/locales の容量

du -h --max-depth=1 /usr/share/i18n/locales
6.3M    /usr/share/i18n/locales

/usr/share/man

du -h --max-depth=1 /usr/share/man | sort -hr | head
19M /usr/share/man
8.3M    /usr/share/man/man1
3.5M    /usr/share/man/man8
2.0M    /usr/share/man/man3
1.5M    /usr/share/man/man5
360K    /usr/share/man/ru
324K    /usr/share/man/man7
296K    /usr/share/man/fr
272K    /usr/share/man/ja
252K    /usr/share/man/it
ls -1 /usr/share/man/ | egrep -v "^(en|ja|man)" | less
cd /usr/share/man/ && \
ls -1 /usr/share/man/ | egrep -v "^(en|ja|man)" | xargs rm -fr
 du -h --max-depth=1 /usr/share/man | sort -hr | head -n1
16M /usr/share/man

/var/cache/man

du -h --max-depth=1 /var/cache/man | sort -hr | head
940K    /var/cache/man
28K /var/cache/man/ru
24K /var/cache/man/fr
20K /var/cache/man/zh_TW
20K /var/cache/man/zh_CN
20K /var/cache/man/zh
20K /var/cache/man/tr
20K /var/cache/man/sv
20K /var/cache/man/sk
20K /var/cache/man/ro
du -h --max-depth=1 /usr/share/vim/vim74/lang/ | sort -hr | head
6.3M    /usr/share/vim/vim74/lang/
216K    /usr/share/vim/vim74/lang/ru
196K    /usr/share/vim/vim74/lang/uk
188K    /usr/share/vim/vim74/lang/ja
168K    /usr/share/vim/vim74/lang/ru.cp1251
168K    /usr/share/vim/vim74/lang/pl.UTF-8
168K    /usr/share/vim/vim74/lang/it
168K    /usr/share/vim/vim74/lang/fr
164K    /usr/share/vim/vim74/lang/pl.cp1250
164K    /usr/share/vim/vim74/lang/pl

別の方法

echo '%_install_langs en_US:ja' > /etc/rpm/macros.lang && \
yum --assumeyes reinstall glibc-common

Remi's RPM repositoryRemi ColletHow remove unused locale? - Ask Fedora: Community Knowledge Base and Support Forum で「最近のディスク容量じゃ0.5GBくらいたいした問題じゃないけど」と言いつつ build-locale-archive コマンドを使わない別の方法を提示している。

この方法でも locale-archive ファイルのサイズ以外は特に影響がない模様。

空ディレクトリーの削除

find . -type d -empty | xargs rm -r && \
find . -type d -empty | xargs rm -r

  1. "The glibc-common package includes common binaries for the GNU libc libraries, as well as national language (locale) support." - Description - glibc-common-2.17-260.el7_6.3.x86_64.rpm 

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7