我如何删除我不需要的所有语言包

bla*_*cat 15 package-management language-support

我只是注意到/usr/share/help我有 70 种不同语言的 ubuntu 帮助文件。我只会说 2,而且我真的只计算一种。我还注意到它充满了指向 /usr/share/help-langpack 的损坏符号链接。

我只想摆脱所有我不需要的语言。我怎么能做到这一点而不让所有人都rm -r高兴?我最好在不安装任何新软件包的情况下寻找一种方法,因为我的主要目标是摆脱机器上多余的东西。我想找到一种方法来最好地使用 dpkg 或 apt。

αғs*_*нιη 16


您可以使用 locale 命令检查系统上生成和配置了哪些语言环境:

  • locale ... 列出当前的语言环境配置
  • locale -a ... 列出系统上生成的所有语言环境
  • locale -a -v ... 列出所有语言环境并显示有用的附加信息(例如包含语言环境信息数据文件的目录名称)

上面的最后一个命令让您看到所有生成的语言环境都位于 中/usr/lib/locale/,如果不需要,您可以删除其中的任何一个。每个语言环境信息包都是一个包含文本文件和其他目录的目录。

您希望系统支持的所有语言环境都列在/var/lib/locales/supported.d/. 这些文件有两列,语言标签和字符映射。

我希望我的系统只知道美国英语,所以我只有一个文件,叫做 en,它只包含一行:

en_US UTF-8
Run Code Online (Sandbox Code Playgroud)

错误消息
如果在发出 locale 命令时显示错误消息,例如:

locale: Cannot set LC_ALL to default locale: No such file or directory
Run Code Online (Sandbox Code Playgroud)

确保文件/etc/default/locale存在并具有正确的内容,例如:

LANG="en_US"
LANGUAGE="en_US:en"
Run Code Online (Sandbox Code Playgroud)

摆脱不需要的语言环境数据 - 一步一步

现在我们知道了开始清理系统区域设置信息所需的所有详细信息:

  1. 编辑 中的语言环境文件/var/lib/locales/supported.d/,并删除所有不需要的语言环境(每行一个语言环境)
  2. 创建和编辑/etc/default/locale(参见上面的示例)
  3. 删除所有生成的语言环境数据: rm -rfv /usr/lib/locale/*
  4. 重新生成新的语言环境: locale-gen

就这样!重新启动您的机器以使您的更改生效。然后运行上面的一个或多个 locale 命令示例以确保结果如预期。

~# locale
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
~# 
~# locale -a -v
locale: en_US.utf8      directory: /usr/lib/locale/en_US.utf8
-------------------------------------------------------------------------------
    title | English locale for the USA
   source | Free Software Foundation, Inc.
  address | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
    email | bug-glibc-locales@gnu.org
 language | English
territory | USA
 revision | 1.0
     date | 2000-06-24
  codeset | UTF-8
Run Code Online (Sandbox Code Playgroud)

有一个用于 Debian/Ubuntu 的软件包可以处理删除语言环境和语言环境相关文件(例如手册页):localepurge. 您可以安装/运行它发出:

sudo apt-get install localepurge
Run Code Online (Sandbox Code Playgroud)

一旦安装,你应该运行这个:

dpkg --configure localepurge
Run Code Online (Sandbox Code Playgroud)

以确保您的语言设置正确。

安装后手动运行它(虽然你真的不需要,因为它应该在每次dpkg运行后自动运行)你可以这样做:

sudo localepurge
Run Code Online (Sandbox Code Playgroud)

不过,请在使用前阅读手册页。如果你可以在没有它的情况下完成你的工作,那么放手可能更安全。

从这个论坛

参考:
1. LocaleConf 官方文档
2. Linux 手册页
3. wikipedia 上的语言环境
4. man localepurge

  • @knotech 为什么不安装它,运行它并卸载它。不知道为什么您对安装软件包感到紧张。 (2认同)

Gun*_*son 5

至于实际安装的语言,请转到系统设置 -> 语言支持,然后单击安装/删除语言...按钮。然后取消选中您不需要的语言。

关于 中的符号链接/usr/share/help,请参阅我对您的问题的评论。