运行 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_*