apt-get 错误:“语言环境:无法将 LC_CTYPE 设置为默认语言环境:没有此文件或目录”

apt-get 错误:“语言环境:无法将 LC_CTYPE 设置为默认语言环境:没有此文件或目录”

运行 apt-get 时出现错误locale: Cannot set LC_CTYPE to default locale: No such file or directory。我该如何修复此错误?

我正在通过运行 Mac OS X 的盒子进行连接。

答案1

肯定有问题操作系统(或许狮子仅有的)

问题是什么?

OS X 无法正确设置区域设置环境。此外,OS X 在区域设置组合语法中调用 UTF-8 字符集的方式与 Linux 不同。

如何修复?

您可以在 Google 上找到大量“修复”,但其中大多数实际上并不起作用或只是问题的一部分,因为它们是针对产生相同或类似错误的不同问题而设计的。

我认为最合理的方法是修复 OS X 客户端上的本地环境。如果您locale在 OS X 客户端上运行该命令,它会显示不完整的环境。语言未设置。

osx-client:~$ locale
LANG=           << EMPTY!
LC_COLLATE="C"
LC_CTYPE="UTF-8"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=         << EMPTY!

因此在~/.bash_profile你的文件中当地的机器,只需添加

export LANG="en_US"
export LANGUAGE=$LANG
export LC_ALL=$LANG

当然,你可以用en_US你想要的语言替换,只需确保在服务器上也安装其语言环境(例如在 Debian 上使用dpkg-reconfigure locales)。不要忘记关闭并重新打开你的终端。

然而不要使用.UTF变体。它们只能在服务器上或本地工作。OS X 和 Linux 服务器在组合的 language.charset 语法中对 UTF-8 有不同的名称。例如,如果您使用,en_US.utf8它会在本地导致错误,而在远程“正常”工作,而使用en_US.utf-8会在本地工作,但在您的服务器上导致错误。只需使用纯语言定义。无论如何,字符集最终应该是 UTF-8。

您可以通过locale在服务器上再次运行来测试它是否有效,如果您看到顶部可怕的消息,则它不起作用。如果您在本地搞砸了,您将在打开新的终端窗口时看到错误。

服务器上缺少区域设置

如果仍然无法正常工作,则可能是服务器上缺少所选语言环境。“en_US”可能不太合适,但可能需要其他语言环境。如何安装语言环境取决于服务器的发行版。

  • 在 Debian 上,呼叫dpkg-reconfigure locales然后选择您的语言环境。
    • 如果系统要求您选择默认语言,您可以选择一种或保留为无。这里无所谓。

答案2

如果你在运行 Mac OS X 时通过 ssh 看到此错误,解决方法很简单:

sudo nano /etc/ssh_config 注释掉以下行:“SendEnv LANG LC_*”

答案3

在 Ubuntu 上运行dpkg-reconfigure locales,确保至少选中一个选项。如果你不确定该选什么,我建议en_US.UTF-8

如果您通过 SSH 从系统进行连接,则需要确保已生成将要连接的客户端系统所使用的区域设置。您可以根据需要选择要生成的任意多个区域设置。

正如您在回答中提到的,您当然可以选择阻止 SSH 发送或接受 LC* 变量。

从 ssh 客户端禁用此功能。

ssh_config:    SendEnv LANG LC_*

在 SSH 服务器上,您可以通过删除此项来阻止接受变量。

sshd_config:AcceptEnv LANG LC_*

相关内容