“LANG = C; sudo apt-get clean”등이 권장되는 이유는 무엇입니까?


16

이 위키 페이지를 보았습니다 : 패키지 관리자 문제 해결 절차 .

여기에는 다음과 같은 명령이있었습니다.

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;무엇입니까?



8
해당 문서가 잘못 명령을 사용하고 있습니다 - 그것은해야 LANG=C command하지 LANG=C;command. 첫 번째 형식은 LANG지속 시간 동안 환경 변수 의 값을 강제 command하지만 두 번째 형식은 실제로 두 번째 명령이며 첫 번째 부분은 로컬 (내보내기되지 않은) 변수를 설정하고 두 번째 부분은 필요한 환경 변수를 설정하지 않고 명령을 실행합니다.
Guss

2
@Guss : 실제로 세미콜론과도 작동합니다. 왜? LANG은 터미널 창을 열 때 기존 환경 변수이므로 값을 별도의 명령으로 변경하면 해당 값은 다시 변경하거나 프로세스가 종료 될 때까지 유효 환경 변수가됩니다.
Gunnar Hjalmarsson

3
@ 군나르-그것은 잘못되었습니다 : 아마도 LANG환경에 있으므로 중복 세미콜론과 함께 작동 할 것입니다. 그러나 LANG명령 사이에 아무것도 변경되지 않기 때문에 (1) 중복 됩니다. 또한 누군가가 그런 식으로 명령을 실행하도록 암시하는 것은 (2) 불필요하고 초대받지 않은 환경 변화로 인해 잘못되었으며 (3) 나중에 사용법을 다시 적용하는 정보가없는 사용자에게 잘못된 패턴을 제공합니다. 환경이 정확하고 안전한 기능을 요구하는 명령 실행에 영향을 미치지 않습니다.
FooF

2
@Braiam 구문에 익숙하지만 변수를 내 보내지 않으면 명령에 표시되지 않습니다. LANG는 표준 환경 변수이므로 기본적으로 내보내 지지만 다른 변수는 그렇지 않을 수 있으며 OP는이를 알고 있어야합니다.
거스

답변:


26

문제를 해결하는 경우 일부 포럼 또는 여기에 조만간 결과를 게시 할 수 있습니다.

이런 경우 국제화되지 않은 다른 사용자가 로그 및 출력을 이해하는 것이 훨씬 간단합니다.

즉, 프랑스어, 중국어 또는 힌디어 또는 시스템 언어로 무엇이든 사용하는 경우 출력은 해당 언어로 용어를 사용할 가능성이 있으므로 진행 상황을 이해하기가 더 어려워집니다.

C 로케일 은 기본 출력 (일반적으로 ASCII 전용 영어)을 강제 실행합니다.

다음을 사용하여 문제 해결 세션을 시작하는 것이 가장 좋습니다.

export LC_ALL=C

특정 로케일 변수를 설정하거나 특정 명령에 대해서만 설정하는 대신.


10

LANG=C터미널 출력이 기본 로케일로 대체됩니다. 이 안내서에서는 지원을 위해 출력을 런치 패드로 전송하도록 제안하므로, 붙여 넣을 때 일반적으로 사용하는 언어에 관계없이 다른 사람들이 읽을 수 있도록해야합니다.


3

아주 안정적인 소프트웨어로 간주하기 때문에 apt의 경우에는 적용되지 않지만 작은 추가 사항은 다음과 같습니다.

LANG에 다른 설정을 사용하거나 C 또는 en_US와 다른 설정을 사용할 때 일부 프로그램이 악의적으로 잘못 작동합니다.

유니티는 이런 이슈들 (그리고 유니티 기반 게임들)을 가지고 있었지만 언리얼 엔진에도 문제가있었습니다. 또한 Android 용 빌드 스크립트 중 일부는 LANG = C로만 실행되거나이 방법으로 설정된이 환경 변수만으로 컴파일되었습니다.

따라서이 설정으로 버그가 발생하지 않을 수도 있으므로 문제 해결에 도움이 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.