ロケールアーカイブのサイズをどのように縮小できますか?

ロケールアーカイブのサイズをどのように縮小できますか?

locale-archive一部のRHEL6システムではファイルサイズを小さくする必要があります。

私のシステム上のファイルは次のとおりです。

[root@-dev-007 locale]# ls -l
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 15:22 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

だからこれを作りました...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

zh_CN…こうすれば大丈夫だと思いますが…

[root@-dev-007 locale]# localedef --delete-from-archive zh_CN

zh_CN...このリストはもう表示されません...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8

...しかし、サイズは縮小locale-archiveされませんでした...

[root@-dev-007 locale]# ls -l  
total 96800
-rw-r--r--. 1 root root 99158704 Sep  9 17:16 locale-archive
-rw-r--r--. 1 root root        0 Jun 20  2012 locale-archive.tmpl

…他にやるべきことはありますか?

答え1

まず、次の手順を実行して不要なロケールを削除できます。

$localedef --list-archive | grep -v -i ^en | xargs localedef --delete-from-archive

^en維持したいロケールに置き換える場所

それから

$build-locale-archive

これがあなたに次のエラーを与える場合

$build-locale-archive
/usr/sbin/build-locale-archive: cannot read archive header

それではこれを試してください。

$mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
$build-locale-archive

それでも失敗した場合は、バージョンを確認してください。 ~によるとこのページ最新バージョンには、スペースを節約するためにアーカイブを再構築するために必要なファイルはありません。あなたは実行する必要があります

yum reinstall glibc-common

dnfRed Hat Enterprise Linuxの最新バージョンでは、同様のアプリケーションを使用できます。

答え2

Amazon Linuxで

  1. ロケールアーカイブで使用されていないアーカイブを削除します。このコマンドは、en で始まる項目を除くすべての項目を削除します。

    localedef --delete-from-archive $(localedef --list-archive | grep -v -i ^en | xargs)
    
  2. locale-archive (削除されたロケール) ファイルを新しい locale-archive.tmpl ファイルにコピーします。

    cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
    
  3. ビルド - ロケール - アーカイブの実行

    build-locale-archive
    

メモ:build-locale-archiveを実行すると、各実行後に.tmplファイルが0になり、再実行するとエラーが表示されます。

build-locale-archive: cannot read archive header

現在の locale-archive を locale-archive.tmpl にコピーするか、glibc-common をダウンロードして解凍して locale-archive.tmpl ファイルのコピーを取得します。 glibc-common RPMからデフォルトのlocal-archive.tmplファイルをインポートしてbuild-locale-archive実行すると、完全な(〜102MB)ロケールアーカイブが作成されます。小さいサイズのアーカイブを取得するには、上記の手順を繰り返す必要があります。

上記の場合、en_*を除くすべてのロケールを削除すると、私のロケールアーカイブは102MBから3.4MBに減少しました。

答え3

もう少し簡単な方法は、

cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
build-locale-archive --install="en"

ここで、「en」は「de:en:ja」などのコロンで区切られたリストです。

/usr/lib/localeにないファイルに対してこれを行う方法を見つけようとしましたが、これまですべての試みは失敗しました。ただし、この問題を解決するには別のスレッドが必要な場合があります。

関連情報