当运行apt-get我收到错误的locale: Cannot set LC_CTYPE to default locale: No such file or directory 。 我能做些什么来解决这个错误?
我从一个运行Mac OS X的盒子连接。
OS X肯定有问题(可能只是Lion )
OS X不能正确设置区域设置环境。 此外,OS X以区别于Linux的语言环境语法调用UTF-8字符集。
您可以在Google上find许多“修补程序”,其中大多数实际上并不工作,或者只是问题的一部分,因为它们是针对造成相同或类似错误的不同问题。
我认为最合理的方法是在OS X客户端上修复本地环境。 如果在OS X客户机上运行locale命令,则会显示不完整的环境。 语言没有设置。
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
你当然可以用你想要的语言来replaceen_US ,只要确保在服务器上安装它的语言环境(例如在Debian中使用dpkg-reconfigure locales )。 不要忘记closures并重新打开您的terminal。
但是不要使用.UTF变体。 他们只能在服务器上工作或在本地工作。 在组合的language.charset语法中,OS X和您的Linux服务器对于UTF-8具有不同的名称。 如果使用例如en_US.utf8 ,则会在本地导致错误,而远程工作“正常”,而使用en_US.utf-8将在本地工作,但在您的服务器上导致错误。 只需使用简单的语言定义。 无论如何,字符集最终应该是UTF-8。
你可以通过在服务器上再次运行locale来testing它是否工作,如果你在顶部看到可怕的消息,那么它不起作用。 如果你在本地搞砸了,你会看到一个错误,当打开一个新的terminal窗口。
如果它仍然无法正常工作,则可能会在服务器上缺less所选的语言环境。 你可能很难与“en_US”错误,但可能需要一个不同的。 如何安装语言环境取决于您的服务器分布。
dpkg-reconfigure locales然后select你的语言环境。
如果您在运行Mac OS X时通过ssh看到这个错误,分辨率很简单:
sudo nano / etc / ssh_config注释掉以下行:“SendEnv LANG LC_ *”
在Ubuntu上运行dpkg-reconfigure locales ,确保至lessselect了一个选项。 如果你不确定要选什么,我build议en_US.UTF-8 。
如果您通过SSH从系统进行连接,那么您需要确保已经生成了将要连接的客户端系统使用的语言环境。 您可以根据需要select尽可能多的语言环境来生成。
正如你在回答中所提到的,你当然可以select阻止SSH发送或接受LC *variables。
从SSH客户端禁用这个。
ssh_config: SendEnv LANG LC_*
在SSH服务器上,您可以通过删除这个来阻止接受variables。
sshd_config:AcceptEnv LANG LC_*