При запуске apt-get я получаю ошибку locale: Cannot set LC_CTYPE to default locale: No such file or directory
. Что я могу сделать, чтобы исправить эту ошибку?
Я подключаюсь с компьютера под управлением Mac OS X.
Определенно что-то не так с OS X (Может быть Лев только)
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 имеют разные имена для UTF-8 в комбинированном синтаксисе language.charset. Если вы используете, например, en_US.utf8
это вызовет локальную ошибку, в то время как удаленно работает нормально, при использовании en_US.utf-8
будет работать локально, но вызовет ошибку на вашем сервере. Просто используйте определение простым языком. В любом случае набор символов должен быть UTF-8.
Вы можете проверить, работает ли он, просто запустив locale
опять же на сервере, если вы видите ужасное сообщение вверху, оно не работает. Если вы ошиблись локально, вы увидите ошибку сразу при открытии нового окна терминала.
Если он по-прежнему не работает, возможно, на сервере отсутствует выбранный вами языковой стандарт. Вы вряд ли ошибетесь с "en_US", но можете захотеть другого. Как установить локаль, зависит от распределения ваших серверов.
dpkg-reconfigure locales
затем выберите свой регион. Бегать dpkg-reconfigure locales
на вашем Ubuntu убедитесь, что выбран хотя бы один из вариантов. Если вы не уверены, что выбрать, я предлагаю en_US.UTF-8
.
Если вы подключаетесь через SSH из системы, вам необходимо убедиться, что вы сгенерировали локали, используемые клиентскими системами, которые будут подключаться. Вы можете выбрать столько локалей, сколько хотите.
Как вы упомянули в своем ответе, вы, безусловно, можете запретить SSH либо отправлять, либо принимать переменные LC *.
От клиента ssh отключите это.
ssh_config: SendEnv LANG LC_*
На сервере SSH вы можете заблокировать прием переменных, удалив это значение.
sshd_config:AcceptEnv LANG LC_*
Решение простое, если вы используете Mac OS X и видите эту ошибку через ssh:
sudo nano / etc / ssh_config Закомментируйте следующую строку: "SendEnv LANG LC_ *"