Почему рекомендуется «LANG = C; sudo apt-get clean» и т. д.?

15

Я столкнулся с этой страницей wiki: Процедура устранения проблем менеджера пакетов .

В нем были такие команды, как:

LANG=C;sudo apt-get clean
LANG=C;sudo apt-get autoclean
LANG=C;sudo apt-get -f install
LANG=C;sudo apt-get --fix-missing install
LANG=C;sudo apt-get --purge autoremove
LANG=C;sudo apt-get --fix-missing update -o APT::Cache-Limit=100000000
LANG=C;sudo apt-get update -o APT::Cache-Limit=100000000 && sudo apt-get dist-upgrade

Итак, какова цель LANG=C; ?

    
задан DK Bose 26.01.2016 в 14:30
источник

3 ответа

26

Если вы устраните неполадки, скорее всего, вы опубликуете свои результаты на каком-то форуме или здесь, рано или поздно.

Когда это происходит, для других пользователей гораздо проще понимать ваши журналы и выходные данные, если они не интернационализированы.

То есть, если вы используете французский или китайский или хинди или что-то другое в качестве системного языка, выход, скорее всего, будет использовать термины на этом языке, и это еще более усложняет понимание того, что происходит.

языковой стандарт C принудительно выводит вывод по умолчанию (который обычно является ASCII - только английский).

Лучше всего начать сеанс устранения неполадок с помощью:

export LC_ALL=C

Вместо того, чтобы устанавливать определенные языковые переменные или устанавливать его только для определенной команды.

    
ответ дан muru 26.01.2016 в 14:39
источник
10

LANG=C приведет к возврату вывода вашего терминала в локаль по умолчанию. Поскольку это руководство предлагает вам отправить свой результат в Launchpad для поддержки, они вынуждены делать это, чтобы при вставке его другие могли прочитать его независимо от того, какой язык вы обычно используете.

    
ответ дан user323419 26.01.2016 в 14:39
3

Небольшое дополнение, хотя оно, вероятно, не применяется в случае apt, поскольку я рассматриваю его как довольно стабильную часть программного обеспечения:

Некоторые программы носорически ошибочно действуют при использовании другой настройки для LANG (или по крайней мере отличаются от C или en_US).

У Unity были (все еще есть) эти проблемы (и игры на основе Unity), у Unreal Engine были проблемы. Кроме того, некоторые сценарии сборки для Android выполнялись с помощью LANG = C правильно или скомпилированы только с этой переменной окружения, установленной таким образом.

Таким образом, это может также помочь устранить неполадки, поскольку ошибка может даже не произойти с этим параметром.

    
ответ дан larkey 26.01.2016 в 16:30