Neden “LANG = C; sudo apt-get clean” vb. Öneriliyor?


16

Bu wiki sayfasına rastladım: Paket Yöneticisi Sorun Giderme Prosedürü .

İçinde, aşağıdaki gibi komutlar vardı:

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

Peki amacı LANG=C;nedir?



8
O belge hatalı komutunu kullanarak olduğunu unutmayınız - olması gerektiği LANG=C commanddeğil LANG=C;command. İlk form, LANGortam değişkeninin değerini süre boyunca zorlar, commandikinci form aslında iki komuttur; burada birinci bölüm sadece bir yerel (dışa aktarılmamış) değişken ayarlar ve ikinci kısım gerekli ortam değişkenini ayarlamadan komutu çalıştırır.
Guss

2
@Guss: Aslında noktalı virgülle de çalışır. Neden? Terminal penceresini açtığınızda LANG varolan bir ortam değişkeni olduğundan ve değerini ayrı bir komut olarak değiştirirseniz, siz yeniden değiştirene veya işlem bitene kadar bu değer etkili ortam değişkeni olacaktır.
Gunnar Hjalmarsson

3
@Gunnar - yanlış: Muhtemelen LANGçevrede, bu yüzden muhtemelen fazla noktalı virgüllerle çalışır; ancak (1) gereksizdir, çünkü LANGkomutlar arasında hiçbir şey değişmeyecektir . Ayrıca birisinin komutları bu şekilde çalıştırmasını ima etmek, gereksiz ve davetsiz değişen ortam nedeniyle (2) yanlıştır ve (3) bu, daha sonra kullanımı yeniden uygulayan herhangi bir bilgisiz kullanıcı için yanlış bir desen sağlar - muhtemelen içinde olmayan bir kabuk değişkeni ile çevre ve dolayısıyla doğru, belki de güvenli bir işlev için onu gerektiren komutlar üzerinde herhangi bir etkisi bile yoktur.
FooF

2
@Braiam Sözdizimine aşinayım, ancak değişken dışa aktarılmadığı sürece komutun görmeyeceğini unutmayın. LANG, standart bir ortam değişkenidir ve varsayılan olarak dışa aktarılır - ancak diğer değişkenler olmayabilir ve OP bunun farkında olmalıdır.
Guss

Yanıtlar:


26

Sorun gideriyorsanız, sonuçlarınızı muhtemelen bir forumda veya burada, er ya da geç olarak gönderirsiniz.

Bu olduğunda, diğer kullanıcılar uluslararası değilse, günlüklerinizi ve çıktılarınızı anlamaları çok daha basittir.

Yani, Fransızca ya da Çince ya da Hintçe ya da sistem diliniz olan herhangi bir şey kullanıyorsanız, çıktının bu dilde terimler kullanması muhtemeldir ve bu da neler olup bittiğini anlamayı zorlaştırır.

C yerel ayarı varsayılan çıkışı zorlar (genellikle yalnızca ASCII İngilizcedir).

Aşağıdakilerle bir sorun giderme oturumu başlatmak en iyisidir:

export LC_ALL=C

Belirli yerel ayar değişkenlerini ayarlamak veya yalnızca belirli bir komut için ayarlamak yerine.


10

LANG=Cterminal çıkışınızı varsayılan yerel ayara geri döndürür. Bu kılavuz, çıktınızı destek için Launchpad'e göndermenizi önerdiğinden, bunu yapıştırmanız gerekir, böylece yapıştırdığınızda, başkaları genellikle hangi dili kullanırsanız kullanın onu okuyabilir.


3

Küçük bir ekleme, muhtemelen oldukça kararlı bir yazılım parçası olarak gördüğüm için uygun değilse de geçerli değildir:

Bazı programlar LANG için farklı bir ayar kullanırken (veya C veya en_US'tan en az farklı olarak) yanlış davranır.

Unity'de bu sorunlar vardı (ve hala?) Unity Engine'de de bazı sorunlar vardı. Ayrıca, Android için bazı build-script'leri sadece LANG = C ile düzgün çalışmış veya sadece bu şekilde ayarlanmış bu ortam değişkeni ile derlenmiştir.

Bu nedenle, hata bu ayarda bile meydana gelmeyebileceğinden sorun gidermeye de yardımcı olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.