Natknąłem się na tę stronę wiki: Procedura rozwiązywania problemów z Menedżerem pakietów .
W nim były polecenia takie jak:
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
Więc jaki jest cel LANG=C;
?
package-management
locale
DK Bose
źródło
źródło
LANG=C command
i nieLANG=C;command
. Pierwsza forma wymusza wartośćLANG
zmiennej środowiskowej na czas,command
podczas gdy druga forma to tak naprawdę dwa polecenia, w których pierwsza część po prostu ustawia zmienną lokalną (nieeksportowaną), a druga część uruchamia polecenie bez ustawiania wymaganej zmiennej środowiskowej.LANG
znajduje się w środowisku, więc prawdopodobnie działa z redundantnymi średnikami; ale jest (1) zbędny, ponieważLANG
między poleceniami nic się nie zmieni . Również sugerowanie komuś, aby uruchamiał polecenia w taki sposób, jest (2) błędne z powodu niepotrzebnie i nieproszonego zmieniającego się środowiska, oraz (3) zapewnia to niepoprawny wzorzec dla każdego niedoinformowanego użytkownika, który później ponownie zastosuje użycie - być może ze zmienną powłoki, która nie jest w środowisko, a tym samym nie ma żadnego wpływu na uruchamiane polecenia, które wymagają poprawnego, być może bezpiecznego działania.Odpowiedzi:
Jeśli rozwiązujesz problemy, prawdopodobnie opublikujesz swoje wyniki na jakimś forum lub tutaj, wcześniej czy później.
Kiedy tak się dzieje, inni użytkownicy mogą łatwiej zrozumieć dzienniki i dane wyjściowe, jeśli nie są internacjonalizowane.
To znaczy, jeśli używasz francuskiego, chińskiego, hindi lub czegokolwiek jako języka systemowego, w wynikach prawdopodobnie będą używane terminy w tym języku, a to jeszcze bardziej utrudnia zrozumienie, co się dzieje.
Ustawienia regionalne C wymuszają domyślne wyjście (zazwyczaj angielski tylko ASCII).
Sesję rozwiązywania problemów najlepiej rozpocząć od:
Zamiast ustawiać określone zmienne regionalne lub ustawiać je tylko dla określonego polecenia.
źródło
LANG=C
spowoduje, że dane wyjściowe terminala powrócą do domyślnych ustawień regionalnych. Ponieważ ten przewodnik sugeruje wysłanie danych wyjściowych do Launchpada w celu uzyskania pomocy, każą ci to zrobić, aby po wklejeniu inni mogli je przeczytać bez względu na to, jakiego języka zwykle używasz.źródło
Mały dodatek, chociaż prawdopodobnie nie ma zastosowania w przypadku apt, ponieważ uważam go za dość stabilny program:
Niektóre programy notorycznie źle zachowują się, gdy używają innego ustawienia dla LANG (lub przynajmniej innego niż C lub en_US).
Unity miał (nadal ma?) Te problemy (i gry oparte na Unity), Unreal Engine również miał pewne problemy. Również niektóre skrypty kompilacji dla Androida działały poprawnie tylko z LANG = C lub były kompilowane tylko z tą zmienną środowiskową ustawioną w ten sposób.
Może to również pomóc w rozwiązywaniu problemów, ponieważ błąd może nawet nie wystąpić przy tym ustawieniu.
źródło