Я наткнулся на эту вики-страницу: Процедура устранения неполадок диспетчера пакетов .
В нем были такие команды, как:
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;
?
package-management
locale
Д. К. Бозе
источник
источник
LANG=C command
и нетLANG=C;command
. Первая форма задает значениеLANG
переменной среды на время,command
пока вторая форма фактически является двумя командами, где первая часть просто устанавливает локальную (не экспортируемую) переменную, а вторая часть запускает команду без установки требуемой переменной среды.LANG
находится в среде, поэтому он, вероятно, работает с избыточными точками с запятой; но это (1) избыточно, потому чтоLANG
между командами ничего не изменится . Также (2) неверно указывать кому-либо на выполнение команд таким образом: из-за неоправданно и незваного изменения среды, и (3) это обеспечивает неправильный шаблон для любого неинформированного пользователя, который позже повторно использует использование - возможно, с переменной оболочки, которая не находится в окружающая среда и, следовательно, даже не оказывает никакого влияния на выполнение команд, которые требуют ее для правильной, возможно, безопасной, функции.Ответы:
Если вы устраняете неполадки, вы, скорее всего, опубликуете свои результаты на каком-то форуме или здесь, рано или поздно.
Когда это происходит, другим пользователям гораздо проще понять ваши журналы и вывод, если они не интернационализированы.
То есть, если вы используете французский, китайский, хинди или любой другой в качестве языка вашей системы, в выходных данных, скорее всего, будут использоваться термины на этом языке, и это усложнит понимание того, что происходит.
Локаль C форсирует вывод по умолчанию (обычно английский только для ASCII).
Лучше начинать сеанс устранения неполадок с:
Вместо того, чтобы устанавливать определенные переменные локали или устанавливать это только для конкретной команды.
источник
LANG=C
сделает вывод вашего терминала резервным по умолчанию. Поскольку это руководство предлагает вам отправить выходные данные на Launchpad для поддержки, они просят вас сделать это так, чтобы при вставке они могли читать другие, независимо от того, какой язык вы обычно используете.источник
Небольшое дополнение, хотя оно, вероятно, неприменимо в случае apt, поскольку я считаю его довольно стабильным программным обеспечением:
Известно, что некоторые программы плохо себя ведут при использовании других настроек для LANG (или, по крайней мере, отличаются от C или en_US).
Unity имел (все еще имеет?) Эти проблемы (и игры на основе Unity), Unreal Engine тоже имел некоторые проблемы. Также некоторые из сценариев сборки для Android работали только с LANG = C должным образом или компилировались только с этой переменной среды, установленной таким образом.
Так что это также может помочь в устранении неполадок, так как ошибка может даже не возникать с этим параметром.
источник