डिफ़ॉल्ट लोकेल में LC_CTYPE सेट नहीं कर सकते: ऐसी कोई फ़ाइल या निर्देशिका नहीं


54

मेरे पास सटीक प्रश्न है, लेकिन इसका कोई हल नहीं है। मैंने कोशिश की, लेकिन यह काम नहीं करता है

मैं अपने स्थानीय मुद्दे को कैसे ठीक करूं?

$ locale
locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LANGUAGE=
LC_CTYPE=UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

$ locale -a
locale: Cannot set LC_CTYPE to default locale: No such file or directory
C
C.UTF-8
en_US.utf8
POSIX

क्या यह en_US.UTF-8 और en_US.utf8 बेमेल के कारण है?

कैसे ठीक करना है?


क्या आपने यह askubuntu.com/a/229512/387382 पढ़ा है ?
हेलियो

जवाबों:


53

टर्मिनल खोलें और नीचे कमांड फायर करें:

export LC_ALL="en_US.UTF-8"

यह काम करता है, लेकिन क्यों?
यू जियाओ

16
सत्र के अंत में चर नष्ट होने के बाद से यह कुछ भी हल नहीं करता है ..
एटिने गौटियर


इतने कम शब्दों में शानदार हल। जबरदस्त हंसी!
रेडबॉब

1
इस -bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8)
संस्करण को

36

यह एक ही समस्या (LC_CTYPE = UTF-8, जो गलत है) तब हो सकती है जब आप एक मैक से एक लिनक्स बॉक्स में ssh पर लॉगिन करते हैं, और आपका टर्मिनल स्वचालित रूप से पर्यावरण चर सेट करता है। उसके लिए एक चेकबॉक्स है। इसे अनचेक करें, और आप जाने के लिए अच्छे हैं। ITerm में यह प्रोफाइल में है-> टर्मिनल टैब।


2
in iTerm चेकबॉक्स को अक्षम करें "वरीयताएँ> प्रोफ़ाइल> डिफ़ॉल्ट> टर्मिनल> पर्यावरण> स्वचालित रूप से स्थानीय चर सेट करें"
इस्लेरुलम

1
-1: जबकि यह काम कर सकता है, यह बेहद आक्रामक है। आप संभावित रूप से अपने स्थानीय टर्मिनल के व्यवहार के साथ-साथ आपके द्वारा जुड़े प्रत्येक होस्ट के व्यवहार को भी प्रभावित करते हैं। हालांकि आपके निष्कर्ष सही हैं, यह एक बेहतर विचार है कि ssh_config का उपयोग करने के लिए इसे LC_ * न भेजें ताकि मेजबान को समस्या हो।
मैक्स राइड

3
क्या आप कृपया अपना स्वयं का उत्तर जोड़ सकते हैं, इसे और अधिक स्पष्टीकरण के साथ विस्तारित कर सकते हैं कि क्यों यह संभावित रूप से आपके स्थानीय टर्मिनल के व्यवहार को प्रभावित करता है, और कैसे ssh_config को LC_ * नहीं भेजना है। क्योंकि तुम सिर्फ -1 असली स्पष्टीकरण के बिना मेरा जवाब है।
बजे

यदि आप टर्मिनल का उपयोग करते हुए मैकओएस से कनेक्ट कर रहे हैं, तो टर्मिनल सेटिंग्स> उन्नत और "स्टार्टअप पर स्थानीय वातावरण चर सेट करें" को अनचेक करें।
जावेदियन

क्या प्रतीत होता है: आपके स्थानीय सिस्टम पर, आपके पास कुछ लोकेल स्थापित है, फिर आप किसी अन्य सिस्टम को भेजते हैं, जिसमें यह लोकल इंस्टाल नहीं है। टर्मिनल क्लाइंट रिमोट सिस्टम को बताएगा कि आपका लोकेल क्या है, और रिमोट सिस्टम अनुरोधित भाषा में उत्तर देने में विफल हो जाएगा। इसके उपाय के लिए आपके पास दो तरीके हैं: या तो आप बदलते हैं, क्या अनुरोध किया जाता है या आप अनुरोधित लोकेल को रिमोट सिस्टम में जोड़ते हैं (जिसे रूट एक्सेस की आवश्यकता होती है)।
जनवरी

27

मेरे पास समान समस्या थी और मैंने अपनी /etc/default/localeफ़ाइल में निम्न पंक्तियाँ जोड़ीं:

LC_CTYPE="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
LANG="en_US.UTF-8"

मुझे इस पोस्ट से यह मिला: मैं अपने स्थानीय मुद्दे को कैसे ठीक करूं?


3
ठीक है, ऐसा करने से आप बहुत गंदे लोकेल कॉन्फ़िगरेशन के साथ समाप्त होते हैं। /etc/environmentउबंटू में स्थानों की स्थापना के लिए इरादा नहीं है; /etc/default/localeहै। इसके अलावा, एक डेस्कटॉप के मामले में, आपको कभी भी, कभी भी LC_ALLस्थिर नहीं होना चाहिए । आपका तरीका डेस्कटॉप पर भाषा / स्थानीय सेटिंग को नियंत्रित करने के लिए UI को बना देगा, जैसे कि भाषा समर्थन, बेकार।
गुन्नार हजलमर्सन

यह वास्तव में काम करता है। रिबूट के बाद।
ट्रांसलूसेंटक्लाउड

लॉगआउट और लॉगिन, यह काम करना चाहिए
सैंड 1512


9
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
sudo dpkg-reconfigure locales

मैं मुद्दों के साथ एक साफ़-सुथरा वल्चर उदाहरण के रूप में चला रहा था, पर्यावरण के संस्करणों में देखा और सब कुछ ठीक लग रहा था। हालांकि, sudo dpkg-reconfigure localesकुछ ऐसा किया जो गायब हो गया हो। मेरे ssh सत्र अब ठीक हैं। धन्यवाद!
जोनास

6

localeकमांड से आउटपुट बताता है कि आपके वातावरण में यह गलत रेखा है:

LC_CTYPE="UTF-8"

("UTF-8" एक वैध स्थानीय नाम नहीं है।)

यह आमतौर से आता है /etc/default/locale। कृपया उस लाइन को हटा दें, यदि यह वहां है, और फिर से शुरू करें।

यदि यह वहां से नहीं आता है, तो यह आपके शेल कॉन्फ़िगरेशन से आ सकता है, या यदि आप दूरस्थ रूप से SSH के माध्यम से क्लाइंट मशीन के कॉन्फ़िगरेशन से लॉग इन हैं।


क्या मैं LC_CTYPE को utf8 में बदल दूं?
मव

@ लुकास: नहीं, यह उतना ही बुरा होगा। चूंकि LANG सेट है, आप LC_CTYPE से शुरू होने वाली पूरी लाइन को हटा सकते हैं।
गुन्नार हेजलारसन २५'१५

यदि आप LC_TYPE सेट करना चाहते हैं, तो आपको इसे "en_US.UTF-8" पर भी सेट करना चाहिए।

यदि यह क्लाइंट मशीन के कॉन्फ़िगरेशन से आता है, तो आप सर्वर पर लोकेल को इसके साथ जोड़ सकते हैं dpkg-reconfigure locales
पॉल रौजीक्स

5

इस आज्ञा ने मेरी जान बचाई

sudo echo "LC_ALL=en_US.UTF-8" >> /etc/environment
sudo echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen
sudo echo "LANG=en_US.UTF-8" > /etc/locale.conf
sudo locale-gen en_US.UTF-8

5
इससे पहले फाइलें खोली जाती हैं sudo। जब तक आप पहले से ही रूट नहीं थे तब तक रीडायरेक्ट काम नहीं करेगा।
मार्टिन थॉर्नटन ने

3

/ Etc / डिफ़ॉल्ट / लोकेल फ़ाइल में अतिरिक्त (लेकिन अनावश्यक) लाइनें हो सकती हैं: उदाहरण फ़ाइल इस तरह दिख सकती है:

#  File generated by update-locale
LANG=en_US.UTF-8
LANGUAGE="en_IN:en

इसके अलावा, इस स्थान से सभी पंक्तियों को निकालने और पुन: कॉन्फ़िगर करने और सफलतापूर्वक कॉन्फ़िगर करने के लिए, इस फ़ाइल की सभी पंक्तियों को हटा दें या टिप्पणी करें:

LANG=en_US.UTF-8

फ़ाइल को अंत में इस तरह दिखना चाहिए:

#  File generated by update-locale
LANG=en_US.UTF-8
# LANGUAGE="en_IN:en

इसके बाद, रन करें dpkg-reconfigure locales, स्थानीय चयन के लिए संकेत देने पर en_US.UTF-8 का चयन करें, और आपको जाने के लिए अच्छा होना चाहिए। Generation complete.प्रक्रिया पूर्ण होने पर आपको एक संदेश प्राप्त होगा ।


0

जब मैं घर निर्देशिका डॉट फ़ाइलों को एक नई मशीन पर माइग्रेट कर रहा हूं, तो मैं इसे स्वयं प्रबंधित करने में कामयाब रहा, और मैं कुछ समय के लिए फ़ाइलों की खोज करने के कारण के कारण की पहचान करने में विफल रहा LC_लेकिन नहीं LOC

~/.bashrcफ़ाइल मैं कॉपी किया निम्नलिखित था:

export LOCPATH=/var/guix/profiles/per-user/root/guix-profile/lib/locale

(यहां विशेष मूल्य पुरानी मशीन पर जीएनयू गुइक्स के साथ पूर्व प्रयोगों के कारण था; लेकिन प्रासंगिक तथ्य यह है कि पर्यावरण चर अब अमान्य पथ पर सेट हो गया था।)

विभिन्न कार्यक्रमों को चलाने के दौरान यह निम्न त्रुटि हुई:

Warning: locale not supported by C library, locale unchanged

और ये त्रुटियां जब चल रही हों locale:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

LOCPATHलाइन को हटाने (या टिप्पणी करने) ने मेरे मुद्दों को हल किया।


0

बस निम्नलिखित चलाएं:

sudo apt-get upgrade

यह सभी स्थानों को उत्पन्न करेगा, फिर यूएस में डिफ़ॉल्ट सेट करें:

export LC_ALL="en_US.UTF-8"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.