如何减小区域设置存档的大小?

如何减小区域设置存档的大小?

我需要减小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

在 Red Hat Enterprise Linux 的更高版本中,您可以使用dnf类似的应用程序。

答案2

在亚马逊 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
    

笔记:如果您运行 build-locale-archive ,它会在每次运行后将 .tmpl 文件清零,当您再次运行它时,您将看到错误:

build-locale-archive: cannot read archive header

您可以通过将当前 locale-archive 复制到 locale-archive.tmpl 或下载并解压 glibc-common 来获取 locale-archive.tmpl 文件的副本。如果您使用 glibc-common RPM 中的默认 locale-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 中的文件执行此操作,但到目前为止所有尝试都失败了。不过,可能需要另一个线程来解决这个问题。

相关内容