Ryan Asked: 2012-06-01 22:43:09 +0800 CST2012-06-01 22:43:09 +0800 CST 2012-06-01 22:43:09 +0800 CST 在 Ubuntu 中删除语言环境 772 我不小心添加了一个语言环境,例如 sudo locale-gen zh_TW 例如语言环境-a zh_TW 但是如何去除呢? ubuntu localization 5 个回答 Voted Oliver 2012-06-01T23:05:26+08:002012-06-01T23:05:26+08:00 您还可以使用重新配置 locales 包dpkg-reconfigure locales。 Best Answer mgorven 2012-06-01T23:01:05+08:002012-06-01T23:01:05+08:00 我认为您可以通过编辑/var/lib/locales/supported.d/local和删除该语言环境来做到这一点。然后运行locale-gen以重新生成已编译的语言环境。 Paulo Coghi 2019-01-26T07:12:21+08:002019-01-26T07:12:21+08:00 我的机器上安装了哪些语言环境? 您可以使用 locale 命令检查在您的系统上生成和配置了哪些语言环境: locale... 列出当前的语言环境配置 locale -a... 列出在您的系统上生成的所有语言环境 locale -a -v...列出所有语言环境并显示有用的附加信息(例如包含语言环境信息数据文件的目录名称) 上面的最后一个命令让您看到所有生成的语言环境都位于 中/usr/lib/locale/,如果不需要,您可以删除其中的任何一个。每个语言环境信息包都是一个包含文本文件和其他目录的目录。 - 支持的语言环境 您希望系统支持的所有语言环境都列在/var/lib/locales/supported.d/. 这些文件有两列,语言标签和字符映射。 我希望我的系统只识别美国英语,所以我只有一个文件,名为en,其中只包含一行: en_US UTF-8 - 错误信息 如果在发出 locale 命令时显示错误消息,例如 locale: Cannot set LC_ALL to default locale: No such file or directory 确保文件/etc/default/locale存在并具有正确的内容,例如: LANG="en_US" LANGUAGE="en_US:en" - 摆脱不需要的语言环境数据 - 一步一步 现在我们知道开始清理系统区域设置信息的所有必要细节: 编辑 中的语言环境文件/var/lib/locales/supported.d/,并删除所有不需要的语言环境(每行一个语言环境) 创建和编辑/etc/default/locale(示例见上) 删除所有生成的语言环境数据:rm -rfv /usr/lib/locale/* 重新生成新的语言环境:locale-gen 就这样!重新启动机器以使更改生效。然后运行上面的一个或多个区域设置命令示例,以确保结果符合预期。 - 参考: https://www.linuxquestions.org/questions/blog/bittner-195120/remove-unwanted-locales-on-ubuntu-debian-3281/ vitaminace33 2020-10-11T03:48:18+08:002020-10-11T03:48:18+08:00 注意:下面的一些命令需要 root 权限,请考虑使用sudo. 基本信息 根据man locale-gen,语言环境设置在几个文件中。 /etc/locale.gen 主配置文件,其格式很简单:每一行非空且不以 # 开头的行都被视为要构建的语言环境定义。 /var/lib/locales/supported.d/ 包含语言包包提供的 locale.gen 片段的目录。不要手动编辑这些,它们将在软件包升级时被覆盖。 语言环境被编译(生成)到一个文件中。 /usr/lib/locale/locale-archive 通常的默认语言环境存档位置。 Arch Wiki上有关语言环境的全面详细信息。 检查语言环境和语言环境 要列出可用的(已知的)区域设置,请运行以下任何命令(输出差异很小)。 locale -a localectl list-locales 要检查(已经)生成的语言环境,请运行以下命令。 localedef --list-archive 要检查当前使用的语言环境,请运行以下任何命令(输出差异很小)。 locale localectl 设置和生成(新)语言环境 区域设置通常通过取消注释行来设置/etc/locale.gen,之后locale-gen需要运行。 nano /etc/locale.gen # uncomment desired lines (locales) locale-gen 这将为中和下/usr/lib/locale/locale-archive的每个未注释行编译(生成)语言环境,无论它们以前是否编译过。/etc/locale.gen/var/lib/locales/supported.d/ 或者,命令 locale-gen <locale> locale-gen将在生成所需语言环境且仅此语言环境时取消注释相应的行。 注意: 的实现locale-gen依赖于发行版。例如,上面的命令在 Ubuntu/Debian 中有效,但在 ArchLinux 中无效。 删除语言环境 发布时locale-gen,已编译的存档将被删除,并且重新生成内部/etc/locale.gen和以下的所有语言环境。/usr/lib/locale/locale-archive该命令locale-gen --purge <locale>不执行修饰符建议的操作,而是相反:它删除所有已编译的语言环境,除了那些指定的语言环境。确保在locale-gen发布时只生成特定的语言环境,或者执行更新时都/etc/locale.gen必须/usr/lib/locale/locale-archive考虑。 要删除 中的语言环境/etc/locale.gen,只需注释所需的行并使用 重新生成语言环境locale-gen。 删除下面的语言环境/var/lib/locales/supported.d/比较棘手。由于任何文件都/var/lib/locales/supported.d/<code>依赖于 package language-pack-<code>-base,因此当更新后者时,对前者的任何更改都将被恢复。要解决这个问题,只需将更新文件的包放在/var/lib/locales/supported.d/. 在 Ubuntu/Debian 中实现此目的的命令如下。 apt-mark language-pack-<code>-base 要更新保留的包,您必须取消标记或简单地--ignore-hold. 解决方法。一种更具侵入性但通用的防止更改的解决方案是使用“不可变(i)”属性/var/lib/locales/supported.d/在其中设置文件。因此,与其删除文件,不如清空它们。例如: cd /var/lib/locales/supported.d/ rm <code> && touch <code> # <code> has been emptied lsattr <code> # regular attributes chattr +i <code> # adding (+) immutable lsattr <code> # checking attributes 设置语言环境 设置和生成区域设置不会设置系统区域设置。以下任何命令都可以实现这一点。 echo LANG=<code> | sudo tee /etc/locale.conf # reboot (might be ignored in Ubuntu) localectl set-locale LANG=<code> djdomi 2022-07-17T05:03:39+08:002022-07-17T05:03:39+08:00 我不确定为什么大多数发行版和用户都不知道localepurge 对于基于 Debian 的系统,它应该由 apt-get install localepurge 从联机帮助页: localepurge 是一个小脚本,用于恢复因不需要的区域设置文件和本地化手册页而浪费的磁盘空间。它会在任何 apt 安装运行完成后由 dpkg 自动调用。 在 /etc/locale.nopurge 配置文件中运行每次 apt 安装后,您必须定义要防止删除的语言环境目录名称。除非已充分配置 localepurge,否则根本不会触及系统的本地化文件。 以下目录的内容将受到删除的影响: - /usr/share/doc/kde/HTML - /usr/share/gnome/help - /usr/share/locale - /usr/share/man - /usr/share/omf - /usr/share/tcltk - /usr/share/cups/{templates,locale,doc-root} - /usr/share/calendar - /usr/share/aptitude - /usr/share/help/<domain>/HELP_CONTENT(files&dirs) - /usr/share/vim/vim*/lang 您实际需要的本地化文件以及您希望保留在系统上的本地化文件可以通过运行以下命令轻松配置: dpkg-reconfigure localepurge 结论:该脚本将处理当前和将来任何不需要的语言环境。
您还可以使用重新配置 locales 包
dpkg-reconfigure locales
。我认为您可以通过编辑
/var/lib/locales/supported.d/local
和删除该语言环境来做到这一点。然后运行locale-gen
以重新生成已编译的语言环境。我的机器上安装了哪些语言环境?
您可以使用 locale 命令检查在您的系统上生成和配置了哪些语言环境:
locale
... 列出当前的语言环境配置locale -a
... 列出在您的系统上生成的所有语言环境locale -a -v
...列出所有语言环境并显示有用的附加信息(例如包含语言环境信息数据文件的目录名称)上面的最后一个命令让您看到所有生成的语言环境都位于 中
/usr/lib/locale/
,如果不需要,您可以删除其中的任何一个。每个语言环境信息包都是一个包含文本文件和其他目录的目录。-
支持的语言环境
您希望系统支持的所有语言环境都列在
/var/lib/locales/supported.d/
. 这些文件有两列,语言标签和字符映射。我希望我的系统只识别美国英语,所以我只有一个文件,名为
en
,其中只包含一行:-
错误信息
如果在发出 locale 命令时显示错误消息,例如
确保文件
/etc/default/locale
存在并具有正确的内容,例如:-
摆脱不需要的语言环境数据 - 一步一步
现在我们知道开始清理系统区域设置信息的所有必要细节:
/var/lib/locales/supported.d/
,并删除所有不需要的语言环境(每行一个语言环境)/etc/default/locale
(示例见上)rm -rfv /usr/lib/locale/*
locale-gen
就这样!重新启动机器以使更改生效。然后运行上面的一个或多个区域设置命令示例,以确保结果符合预期。
-
参考:
https://www.linuxquestions.org/questions/blog/bittner-195120/remove-unwanted-locales-on-ubuntu-debian-3281/
注意:下面的一些命令需要 root 权限,请考虑使用
sudo
.基本信息
根据
man locale-gen
,语言环境设置在几个文件中。语言环境被编译(生成)到一个文件中。
Arch Wiki上有关语言环境的全面详细信息。
检查语言环境和语言环境
要列出可用的(已知的)区域设置,请运行以下任何命令(输出差异很小)。
要检查(已经)生成的语言环境,请运行以下命令。
要检查当前使用的语言环境,请运行以下任何命令(输出差异很小)。
设置和生成(新)语言环境
区域设置通常通过取消注释行来设置
/etc/locale.gen
,之后locale-gen
需要运行。这将为中和下
/usr/lib/locale/locale-archive
的每个未注释行编译(生成)语言环境,无论它们以前是否编译过。/etc/locale.gen
/var/lib/locales/supported.d/
或者,命令
locale-gen
将在生成所需语言环境且仅此语言环境时取消注释相应的行。注意: 的实现
locale-gen
依赖于发行版。例如,上面的命令在 Ubuntu/Debian 中有效,但在 ArchLinux 中无效。删除语言环境
发布时
locale-gen
,已编译的存档将被删除,并且重新生成内部/etc/locale.gen
和以下的所有语言环境。/usr/lib/locale/locale-archive
该命令locale-gen --purge <locale>
不执行修饰符建议的操作,而是相反:它删除所有已编译的语言环境,除了那些指定的语言环境。确保在locale-gen
发布时只生成特定的语言环境,或者执行更新时都/etc/locale.gen
必须/usr/lib/locale/locale-archive
考虑。要删除 中的语言环境
/etc/locale.gen
,只需注释所需的行并使用 重新生成语言环境locale-gen
。删除下面的语言环境
/var/lib/locales/supported.d/
比较棘手。由于任何文件都/var/lib/locales/supported.d/<code>
依赖于 packagelanguage-pack-<code>-base
,因此当更新后者时,对前者的任何更改都将被恢复。要解决这个问题,只需将更新文件的包放在/var/lib/locales/supported.d/
. 在 Ubuntu/Debian 中实现此目的的命令如下。要更新保留的包,您必须取消标记或简单地
--ignore-hold
.解决方法。一种更具侵入性但通用的防止更改的解决方案是使用“不可变(i)”属性
/var/lib/locales/supported.d/
在其中设置文件。因此,与其删除文件,不如清空它们。例如:设置语言环境
设置和生成区域设置不会设置系统区域设置。以下任何命令都可以实现这一点。
我不确定为什么大多数发行版和用户都不知道localepurge
对于基于 Debian 的系统,它应该由
从联机帮助页:
结论:该脚本将处理当前和将来任何不需要的语言环境。