如何减小语言环境存档的大小?

Red*_*ket 20 rhel disk-usage locale

我需要减小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
Run Code Online (Sandbox Code Playgroud)

所以我做了这个...

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
Run Code Online (Sandbox Code Playgroud)

......所以我想我可以摆脱zh_CN这样......

[root@-dev-007 locale]# localedef --delete-from-archive zh_CN
Run Code Online (Sandbox Code Playgroud)

......我可以看到zh_CN不再像这样被列出......

[root@-dev-007 locale]# localedef --list | grep zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
Run Code Online (Sandbox Code Playgroud)

...但尺寸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
Run Code Online (Sandbox Code Playgroud)

……还有什么我需要做的吗?

Joe*_*lor 27

您可以首先通过执行以下操作删除所有不需要的语言环境:

$localedef --list-archive | grep -v -i ^en | xargs localedef --delete-from-archive
Run Code Online (Sandbox Code Playgroud)

Where^en可以替换为您希望保留的语言环境

然后

$build-locale-archive
Run Code Online (Sandbox Code Playgroud)

如果这给您类似的错误

$build-locale-archive
/usr/sbin/build-locale-archive: cannot read archive header
Run Code Online (Sandbox Code Playgroud)

然后试试这个

$mv /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.tmpl
$build-locale-archive
Run Code Online (Sandbox Code Playgroud)

如果仍然失败,请检查您的版本。根据此页面,较新的版本没有必要的文件来重建存档以节省空间。你需要跑

yum reinstall glibc-common
Run Code Online (Sandbox Code Playgroud)

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

  • 我注意到当我执行 `build-locale-archive` 时,我失去了与主机的 ssh 连接……有什么办法可以防止这种情况发生? (3认同)
  • 我会小心尝试这个。破坏了我的 CentOS 服务器,我花了 30 分钟才找到解决方案。http://unix.stackexchange.com/questions/246705/i-broke-build-locale-archive-how-do-i-rebuild-it/246708#246708 (2认同)