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


506

मुझे हर बार यह संदेश मिल रहा है कि मैं सेवा शुरू करने या रोकने जैसा कुछ करूँ।

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
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   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
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   

मैं इस त्रुटि को कैसे ठीक करूं?




सभी उपयोगकर्ताओं के लिए आसान और स्थायी निर्धारण: askubuntu.com/questions/881742/…
गलवानी

जवाबों:


513

localeवर्तमान उपयोगकर्ता खाते के लिए वर्तमान में परिभाषित किए गए स्थानों को सूचीबद्ध करने के लिए पहले चलाएँ :

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

फिर लापता लोकेल जनरेट करें और सूचना लेने के लिए स्थानों को फिर से कॉन्फ़िगर करें:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

अब आपको कोई त्रुटि नहीं दिखाई देगी!


220
मेरे लिए काम नहीं किया
उमेर

4
इसने कई प्रणालियों पर मेरे लिए काम किया है। क्या नव स्थापित सिस्टम पर इस मुद्दे से बचने का कोई तरीका है?
ब्रायली क्रिस्टोफर ऑक्सले

13
@UairAyub हो सकता है कि आपके पास एक से अधिक अनजाने लोकेल हों, यह कोशिश करें: $ में y के लिए (लोकेल | कट -d '=' -f 2 | सॉर्ट | uniq); लोके-जीन $ y करें किया यह आप प्रत्येक परिभाषा के लिए एक स्थान उत्पन्न होगा
इवान Buttinoni

3
लॉगआउट और लॉगिन मदद कर सकते हैं
SMMousavi

4
@Umair इस समस्या में मानवीय त्रुटि का एक उच्च जोखिम है। आपका सिस्टम en_GBडिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है, लेकिन आपने इसे सेट अप कर दिया है en_US। आप मैन्युअल रूप से टिप्पणी करने के लिए है en_GBऔर टिप्पणी हटाएं en_USमें /etc/locale.gen। मेरा उत्तर देखें askubuntu.com/a/790373/25388 हार्डवेयर रास्पबेरी पाई 3 बी और सिस्टम Raspbian जेसी में।
लेओ लेपोल्ड हर्ट्ज़ o

366

ऊपर सुझाए गए कुछ भी मेरे मामले में काम नहीं किया (Ubuntu Server 12.04LTS)। आखिरकार फ़ाइल में डालने में क्या मदद मिली /etc/environment:

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

किसी कारण से यह गायब था। लोकेल और अन्य कमांड के लिए आउटपुट दिखाई देते हैं जैसे चर को ठीक से परिभाषित किया गया था। दूसरे शब्दों में, दी गई सभी बुनियादी चीजें घोषित नहीं की जाती हैं, जहां इसे घोषित किया जाना चाहिए।


115
हां, इसके अलावा किसी और ने काम नहीं किया, शायद अपडेटेड वर्जन के कारण। लेकिन मैं इसे अंदर रखना पसंद करता हूं /etc/default/locale
नवीद

27
अद्यतित /etc/default/localeऔर कोई चेतावनी नहीं। धन्यवाद
ohho

7
हां, दूसरों ने मेरे लिए काम नहीं किया। यह एक किया। यहाँ एक-लाइनर है जिसका उपयोग मैंने इसे अद्यतन करने के लिए किया है। sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"
dman

12
@ user163207 आपका समाधान गलत है क्योंकि यह (ओवरराइटिंग के बजाय) एपेंड करता है, यह अनुशंसित फ़ाइल नहीं है, और echoबैकस्लैश के सक्षम होने की व्याख्या के साथ चलाने की आवश्यकता है। यह आपके जैसा ही है, लेकिन पूर्वोक्त नियत के साथ:sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale"
glarrain

13
लॉग इन और फिर से लॉगिन करने के लिए मत भूलना!
SMMousavi

149

उन्हें जारी करने के बाद गायब हो जाना चाहिए:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigureपहले से इंस्टॉल होने के बाद पुन: संयोजन पैकेज। इसे पुन: कॉन्फ़िगर करने के लिए पैकेज या संकुल के नाम पास करें। यह कॉन्फ़िगरेशन प्रश्न पूछेगा, बहुत पसंद है जब पैकेज पहले स्थापित किया गया था।


9
मुझे खुशी है कि एक साल पहले मेरी परेशानियों ने आपको यह ठीक करने में मदद की;)
रिनजविंड

1
क्या यह स्थान डिफ़ॉल्ट रूप से उत्पन्न नहीं होना चाहिए? मेरा मतलब है en, en_AU, en_CA, en_GBडिफ़ॉल्ट रूप से मौजूद हैं, लेकिन नहीं en_US?
डैनियल सेरोडियो

@Rinzwind आपके प्रयास के लिए बहुत बहुत धन्यवाद! मैं क्षमाप्रार्थी हूं; मुझे अपने सवाल को बेहतर तरीके से कहना चाहिए था। मेरे कहने का मतलब यह है: नए स्थानों को बनाने के बाद लोकेशन पैकेज को फिर से कॉन्फ़िगर करना क्यों आवश्यक है? लगता है मेरे लिए जैसे लोकेशन्स बिना भी काम करते हैं dpkg-reconfigure
विक्टर

एक डॉकटर कंटेनर में Ubuntu 14.04 का उपयोग करना, इसलिए कुछ भी सेट नहीं किया जा रहा था। Django की makemessageजरूरत है। यह पूरी तरह से काम किया! धन्यवाद।
जस्टिन

1
मुझे लगता है कि रास्पबियन गुंजाइश से बाहर है, लेकिन मुझे लगा कि मैं उल्लेख करूंगा कि मुझे LC_ALLठीक से सेट होने से पहले लॉगआउट और लॉगिन करना था।
MatrixManAtYrService

119

बस अपनी .bashrcफ़ाइल में निम्नलिखित जोड़ें (मान लें कि आप बैश का उपयोग कर रहे हैं)

export LC_ALL="en_US.UTF-8"

2
इस मीठे फिक्स ने मेरे अमेज़ॅन-ईसी 2 छवि पर मेरे लिए काम किया (अपनी डिफ़ॉल्ट आरएचईएल एएमआई चला रहा था) बहुत बहुत धन्यवाद! :)
गिदोन

यह एक मेरे लिए मेरे digitalocean Ubuntu 12.04 छवि के साथ काम किया।
इनन

2
इससे मेरी समस्या ठीक हो गई। मुझे एक प्रश्न पूछना है: स्थानीय-कमांड द्वारा LC_ALL को कैसे सेट नहीं किया गया क्योंकि अन्य उत्तर इस एक के ऊपर थे?
अलेक्सेवर

अजीब, ऊपर दिए गए सभी समाधान मेरे लिए काम नहीं करते थे, लेकिन यह एक था! निर्यात करने के बाद LC_ALLमैं आखिरकार उपयोग कर सकता था sudo dpkg-reconfigure locales
sobi3ch 11

अंत में बहुत सारे प्रयास करने के बाद, यह मेरे लिए 14.04.3 लीटर kubuntu पर काम कर रहा है। धन्यवाद!
योना

94

यह एक सामान्य समस्या है यदि आप दूर से कनेक्ट कर रहे हैं, तो समाधान आपके लोकेल को अग्रेषित नहीं करना है। संपादित करें /etc/ssh/ssh_configऔर टिप्पणी बाहर SendEnv LANG LC_*लाइन।


6
मैं अन्य उत्तरों की कोशिश कर रहा था, लेकिन भूल गया कि मैं दूर से कनेक्ट कर रहा था जब तक कि मैंने आपका जवाब नहीं देखा। Ssh सर्वर और क्लाइंट पर अलग-अलग स्थान समस्या पैदा कर रहे थे।
Hieu

2
OSX पर (ubuntu से कनेक्ट करते हुए) यह है/etc/ssh_config
Michiel de Mare

ऐसा करने के लिए वन-लाइनर: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config(सर्वर प्रोविजनिंग के लिए उपयोगी)
एल्बिन

मैं LC_ALL को लोकेल मशीन पर सेट नहीं कर सका, लेकिन इसने रिमोट सर्वर के साथ मेरी समस्या को ठीक कर दिया, धन्यवाद।
अलेक्जेंडर श्लेंकॉक

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

72

उसके लिए एक कमांड है:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

यह /etc/default/localeप्रदान किए गए मूल्यों के साथ अद्यतन करता है।


4
यह कानूनी है! अपने शेल को साइन आउट / रीलोड करना न भूलें, वरना आपको बदलाव नहीं दिखेंगे। स्थानों को बनाने और पुन: व्यवस्थित करने के लिए स्वीकृत उत्तर को देखना न भूलें।
एरिक ज़िवकोविक

1
चल रहा है फिर localeभी कोई utf मान नहीं दिखाता है।
23

@ कैरिन: Myybe, एक कॉल locale-genगायब है। इससे पहले, एक करना होगा apt-get install locales
koppor

1
यह Ubuntu पर 16.04 पर रूट शेल के लिए LANG नहीं बदलेगा, क्योंकि यह /root/.profile में ओवरराइड किया गया है।
विलेम

32

12.10 पर मेरे लिए क्या काम किया गया था:

apt-get install language-pack-en-base  

इसके बाद dpkg-reconfigure localesकोई परिणाम नहीं आया।


2
यह सबसे अच्छा जवाब है। ऐसा नहीं है कि मेरे स्थान गलत तरीके से सेटअप किए गए थे, लेकिन वे वास्तव में मौजूद नहीं थे। मुझे लगता है कि यह ओपी की समस्या के समान है (यदि आपका स्थान सही है तो "ऐसी कोई फ़ाइल या निर्देशिका" बहुत स्पष्ट नहीं है !)।
ब्रेकथ्रू

1
मुझे ओपीएस का मुद्दा मिल रहा था जब मैं उबंटू 12.04 पर एप्ट-गेट का उपयोग कर रहा था। इसने बिना किसी फाइल को संपादित किए इसे पूरी तरह से हल कर दिया।
दीपदान

"भाषा-पैक-एन-बेस पहले से ही सबसे नया संस्करण है।"
कर्लिंग

लॉगआउट और लॉगिन मदद कर सकते हैं
SMMousavi

chrootडेबियन के तहत एक ubuntu में मेरे लिए काम किया । धन्यवाद :)
व्याट8740

18

बाहर निकलने और फिर से वापस लॉग इन करके अपने SSH सत्र (या अपने X11) से बाहर निकलना न भूलें। इन सभी सुझावों ने मेरे लिए काम नहीं किया जब तक कि मैं वापस लॉग इन नहीं किया ...।


2
इस टिप्पणी को अधिक उत्थान मिलना चाहिए या कम से कम इस तथ्य को हर उत्तर में उजागर करना चाहिए।
ni8mr

11

उबंटू 12.10 के लिए उपरोक्त में से कोई भी काम नहीं किया सिवाय ratzs के समाधान के। मैं इसे आपकी /etc/bash.bashrc फ़ाइल में जोड़ने की सलाह देता हूं:

export LC_ALL="en_ZA.UTF-8"
export LC_CTYPE="en_ZA.UTF-8"

उपरोक्त सभी समाधानों में से। मेरे लिए यही एकमात्र काम है।
जॉनीक्यू

11

मैं एक अजीब स्थिति में फंस गया था, जहां मेरी स्थानीय मशीन सेट है esऔर इसलिए रिमोट मशीन (के माध्यम से vagrant) को एक अप्रचलित राज्य में प्रावधानित किया गया था। इसलिए, मुझे export=एक सफल की सुविधा के लिए केवल मैनुअल का उपयोग करना पड़ा dpkg-reconfigure। तब व्यवस्था ठीक है।

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

श्रेष्ठ! dpkg-recofigureप्रदर्शित करता है mojibake के कारण ।
ओरिएंट

9

मैंने उपरोक्त मुद्दे को ठीक करने के लिए एक बैश स्क्रिप्ट लिखी थी। उपरोक्त उत्तर उपयोगी हैं, लेकिन शेल वेरिएबल में मानों को निर्यात करके लोकल वेरिएबल को सेट करना केवल एक सत्र के लिए काम करेगा। मैंने .bash_profile फ़ाइल में स्थानीय चर का निर्यात करके इस समस्या को स्थायी रूप से हल कर लिया है। आप /etc/profileइसके बजाय फ़ाइल का उपयोग कर सकते हैं .bash_profile

echo "export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8">>~/.bash_profile

के लिए मत भूलना और पालन स्क्रिप्ट आसान सेटअप में।source.bash_profile


8

तुम कोशिश कर सकते हो:

export LANGUAGE=ru_RU.UTF-8
export LC_CTYPE=ru_RU.UTF-8
export LC_NUMERIC=ru_RU.UTF-8
export LC_TIME=ru_RU.UTF-8
export LC_COLLATE=ru_RU.UTF-8
export LC_MONETARY=ru_RU.UTF-8
export LC_MESSAGES=ru_RU.UTF-8
export LC_PAPER=ru_RU.UTF-8
export LC_NAME=ru_RU.UTF-8
export LC_ADDRESS=ru_RU.UTF-8
export LC_TELEPHONE=ru_RU.UTF-8
export LC_MEASUREMENT=ru_RU.UTF-8
export LC_IDENTIFICATION=ru_RU.UTF-8
export LC_ALL=ru_RU.UTF-8

ru_RUआपका देश कोड कहां है


7

वर्तमान स्वीकृत उत्तर समस्या निवारण रणनीति में पर्याप्त नहीं है क्योंकि आपके पास एक मानवीय त्रुटि हो सकती है। आप अपने सिस्टम को सेटअप करते हैं en_USलेकिन आपने en_GBसक्षम किया है /etc/locale.genजैसे मैंने रास्पबेरी पाई 3 बी के लिए यहां थ्रेड में था । आपके पास आपके सभी उपयोग किए गए स्थान होने चाहिए /etc/locale.gen

मैं en_GB.UTF-8 UTF-8केवल में सक्षम था /etc/locale.gen। मुझे वहाँ केवल सक्षम होना चाहिए en_US.UTF-8 UTF-8क्योंकि इसके लिए अन्य कमांड चलते हैं। इसलिए मैंने जीबी और असम्बद्ध यूएस पर टिप्पणी की, और अब सब कुछ काम करता है

masi@raspberrypi:~ $ sudo vim /etc/locale.gen

masi@raspberrypi:~ $ sudo locale-gen 
Generating locales (this might take a while)...
  en_US.UTF-8... done
Generation complete.

masi@raspberrypi:~ $ sudo a2enmod rewrite && a2enmod headers && a2enmod ssl
Module rewrite already enabled
Module headers already enabled
Considering dependency setenvif for ssl:
Module setenvif already enabled
Considering dependency mime for ssl:
Module mime already enabled
Considering dependency socache_shmcb for ssl:
Module socache_shmcb already enabled
Module ssl already enabled

अब, मुझे किसी भी आदेश के साथ उन स्थानीय गलतियों को नहीं मिलता है।

सिस्टम: रास्पबियन जेसी
हार्डवेयर: रास्पबेरी पाई 3 बी


6

जैसा कि डेबियन विकी में यहां कहा गया है , आप /etc/locale.genसभी स्थानों को संपादित कर सकते हैं (या उन्हें अनफ़िल्ट कर सकते हैं, मेरे पास सभी स्थानों की सूची थी, लेकिन उन सभी को छोड़कर, जिन्हें मैं टिप्पणियों के रूप में उपयोग करता था) आप अपने सिस्टम के लिए समर्थन चाहते हैं। फिर, निष्पादित करें

sudo dpkg-reconfigure locales

अपने सिस्टम पर स्थानों को अपडेट करने के लिए। अब, आपके द्वारा जोड़े गए / अप्रकाशित सभी स्थान /etc/locale.genआपके सिस्टम पर बिना किसी चेतावनी के उपलब्ध हैं।


3

यदि आप केडीई वातावरण का उपयोग करते हैं, तो setlocale.shफ़ाइल की जाँच करें ~/.kde/env/:

$ cat ~/.kde/env/setlocale.sh 
export LANG=en_US.UTF-8
export LANGUAGE=en_US:ru:en

इससे मेरी गांड बच गई .... धन्यवाद! अविश्वसनीय है कि यह लोकेल बकवास में कितने स्थान निर्धारित किए जा रहे हैं ... और कैसे दुनिया में केडीई मेरे दो अलग-अलग स्थानों (स्थान के लिए is_IS, धन, आदि) और भाषा के लिए एक गैर-अस्तित्व में is_EN को मिलाकर चीजों को पेंच करने का प्रबंधन करता है स्थान)! Grmpfh।
StFS

2
  1. आपको sudo dpkg-reconfigureउस एप्लिकेशन के लिए भी चलाने की आवश्यकता हो सकती है जिसे आपने स्थापित किया है जबकि "लोकेल" सेटिंग्स अमान्य / मेल नहीं खा रही हैं।

    जबकि सिस्टम लोकेल गलत तरीके से मैंने इंस्टाल किया था vim। बाद में जब सिस्टम स्थान तय किया गया था मैं एक स्थिति है कि देखा vimUTF-8 वर्णों गलत तरीके से अजीब के रूप में प्रतीकों दिखा था, जबकि nanoऔर lessउन्हें सही ढंग से दिखा रहे थे। चल रहा है

    sudo dpkg-reconfigure vim
    

    सिस्टम सेटिंग्स को ठीक करने के बाद समस्या को ठीक करने के लिए दिखाई दिया।

  2. मैंने पहले ही बताई गई बातों पर भी गौर किया: बदलाव को दिखने के लिए आपको SSH को डिस्कनेक्ट / रीकनेक्ट करना पड़ सकता है।


2

~/.profileमेरे लिए काम करने के लिए निम्न पाठ जोड़ना :

export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8

मैं लाइनोड पर Ubuntu 16.04 LTS 64-बिट सर्वर का उपयोग कर रहा हूं।


2

मेरे लिए यह तब काम किया जब मुझे भी यही समस्या थी ( डॅमन द्वारा उपलब्ध कराए गए समाधान के आधार पर ):

sudo sh -c "echo -e 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment"

मुझे यकीन नहीं था कि टिप्पणी में url कैसे जोड़ा जाए। @ एलियाकगन
अजगर

1
कोई समस्या नहीं - एक टिप्पणी के बगल में तारीख / टाइमस्टैम्प सीधे इसके लिए लिंक है। ... तो, मैंने गौर से टिप्पणी की है (के >बजाय कॉल करने के लिए >>) एक उत्तर की तरह लगता है। मैं वास्तव में नहीं जानता कि कौन सा तरीका सही है या सबसे अच्छा है, लेकिन यदि आपके पास इस बारे में कोई जानकारी है तो आप इस उत्तर को अधिक जानकारी के साथ विस्तारित कर सकते हैं। (आपको हालांकि ऐसा नहीं करना है।)
Eliah Kagan
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.