Назад | Перейти на главную страницу

Ошибка apt-get: «locale: не удается установить LC_CTYPE на локаль по умолчанию: нет такого файла или каталога»

При запуске 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", но можете захотеть другого. Как установить локаль, зависит от распределения ваших серверов.

  • В Debian вызовите 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_ *"