2015-02-09 13 views
36

मैं उबंटू डॉकर कंटेनर चला रहा हूं। मेरे पास एक नार्वेजियन कीबोर्ड है और नार्वेजियन पात्रों (øæå) का उपयोग करने की आवश्यकता है।उबंटू डॉकर कंटेनर के अंदर लोकेल कैसे सेट करें?

मेरा टर्मिनल वर्ण एन्कोडिंग यूटीएफ -8 पर सेट है और मैं एसएसएच का उपयोग कर अपने कंटेनर से जुड़ा हूं। हालांकि, मैं नार्वेजियन पात्रों को टाइप करने में असमर्थ हूं, न ही नार्वेजियन पात्रों की प्रतिलिपि बना रहा हूं और न ही CTL + SHIFT + U + 00f8 का उपयोग कर रहा हूं।

मैंने कोशिश की:

locale-gen nb_NO.UTF-8 

लेकिन कुछ भी नहीं बदला। मैं डॉकर कंटेनर के अंदर लोकेल और कीबोर्ड कैसे सेट करूं? अपने Dockerfile कुछ में

उत्तर

51

रखें,

# Set the locale 
RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    locale-gen 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8  

यह है कि इस विषय पर बहुत अच्छा पद से निकाला जाता है से अनुकूलित से

http://jaredmarkell.com/docker-and-locales/

+0

इसका काम नहीं कर रहा है जब आप डेबियन का उपयोग करें:: आप UTF-8 स्थानों उत्पन्न की जरूरत नहीं है, तो आप आदेशों के निम्नलिखित सेट कर सकते हैं कि इस मामले में आधार कंटेनर – iDexter

+0

के रूप में जेसी mixel के जवाब – user2915097

+0

देख कोई है फेडोरा –

41

जो लोग डेबियन का उपयोग भी locales पैकेज स्थापित करने के लिए है ।

RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y locales 

RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    dpkg-reconfigure --frontend=noninteractive locales && \ 
    update-locale LANG=en_US.UTF-8 

ENV LANG en_US.UTF-8 

यह answer ने मुझे बहुत मदद की।

+0

मुझे नहीं लगता कि आपको 'echo ...>/etc/डिफ़ॉल्ट/लोकेल 'कमांड; 'अपडेट-लोकेल' वही काम करता है। – dimo414

15

बस अपने Dockerfile में

ENV LANG C.UTF-8 
ENV LC_ALL C.UTF-8 

जोड़ें। बुनियादी संचालन के लिए और कुछ भी जरूरी नहीं है। इस बीच, locale-gen किसी भी तर्क को स्वीकार नहीं करता है, यही कारण है कि इसका उपयोग करने वाले 'फिक्सेस' में से कोई भी काम नहीं करता है।

+0

उबंटू छवि पर मेरे लिए काम नहीं किया। यह [उत्तर] (https://stackoverflow.com/a/38553499/675577) हालांकि काम किया। – dialex

+1

क्या आप कोई विवरण दे सकते हैं? 'सीयूटीएफ -8' कुछ भी स्थापित करने की आवश्यकता के बिना सभी प्रणालियों पर उपलब्ध है, और यह * अधिक * पर्याप्त होना चाहिए। – andrewsh

6

मुझे वास्तव में एक ही समस्या से पीड़ित होना पड़ा, लेकिन प्रदान किए गए उत्तरों में से कोई भी डेबियन के साथ 100% काम नहीं कर रहा है: नवीनतम, भले ही वे अच्छे संकेत प्रदान करते हों।

सबसे बड़ा अंतर यह है कि आप स्थानीय के साथ उत्पन्न करने के लिए की जरूरत नहीं है यकीन है कि दोनों स्थानोंऔरस्थानों-सब स्थापित कर रहे हैं, बाद पहले से ही en_US.UTF-8 युक्त बनाना चाहिए, है -gen या dpkg-reconfigure

यहाँ मैं अपने Dockerfile में क्या किया है यह काम करने के लिए: @ द्वारा

FROM debian:latest 
RUN apt-get update 
RUN apt-get install -y locales locales-all 
ENV LC_ALL en_US.UTF-8 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US.UTF-8 
0

मुझे वास्तव में उपयोगी के लिए सुझाव था user2915097

RUN apt-get -qq update && apt-get -qqy install locales 
RUN sed -i -e 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ 
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ 
    locale-gen && \ 
    update-locale LANG=ru_RU.UTF-8 && \ 
    echo "LANGUAGE=ru_RU.UTF-8" >> /etc/default/locale && \ 
    echo "LC_ALL=ru_RU.UTF-8" >> /etc/default/locale 
1

मैं डोकर वातावरण चर होने नापसंद जब मैं करता हूँ डॉकर छवि के उपयोगकर्ता को बदलने के लिए उम्मीद नहीं है। मुझे लगता है कि निम्नलिखित अधिक स्वच्छ है:

echo "LC_ALL=en_US.UTF-8" >> /etc/environment 

(संपादित करें:। यह काम नहीं करता ऐसा लगता है कि मैं इसे बुरी तरह से शुरू में परीक्षण किया गया।)

बस इसे कहीं डाल एक RUN में।

export DEBIAN_FRONTEND=noninteractive 
apt-get update -q -q 
apt-get install --yes locales 
locale-gen --no-purge en_US.UTF-8 
update-locale LANG=en_US.UTF-8 
echo locales locales/locales_to_be_generated multiselect en_US.UTF-8 UTF-8 | debconf-set-selections 
echo locales locales/default_environment_locale select en_US.UTF-8 | debconf-set-selections 
dpkg-reconfigure locales 
संबंधित मुद्दे