আপনি কীভাবে দেবিয়ান / উবুন্টুতে অ-ইন্টারেক্টিভভাবে লোকাল সেট করবেন?


33

সাধারণত, আমি aptitude -y install localesতখন dpkg-reconfigure localesলোকেল সেট আপ করার জন্য চালিত করি ।

এখন আমি এটিকে শেল স্ক্রিপ্টে রাখতে চাই, আমি কীভাবে নির্ভরযোগ্যভাবে নিম্নলিখিতগুলি স্বয়ংক্রিয়ভাবে / অ-ইন্টারেক্টিভভাবে করতে পারি?

  • en_US.UTF-8এটি সিস্টেম ডিফল্ট হিসাবে চয়ন করুন এবং সেট করুন
  • অন্যান্য সমস্ত লোকেল অক্ষম করুন
  • (Ptionচ্ছিক) প্রত্যাশিতভাবে /etc/default/localeএক-একমাত্র প্রবেশ থাকলে তা যাচাই করুনLANG=en_US.UTF-8

উত্তর:


13

দেখুন জনক স্থানীয়ের :

 locale-gen --purge en_US.UTF-8

এবং

 echo -e 'LANG="en_US.UTF-8"\nLANGUAGE="en_US:en"\n' > /etc/default/locale

1
ধন্যবাদ, কিন্তু আমি পেয়ে করছি File "/usr/share/apt-listchanges/ALChacks.py", line 32, in <module> sys.stderr.write(_("Can't set locale; make sure $LC_* and $LANG are correct!\n"))...
Kenn

LANG = en_US.UTF-8 লোকেল-জেন - চেষ্টা করুন en_US.UTF-8
প্রস্তর

এই সকালে, ভিএম এর একটি পরিষ্কার রাষ্ট্র সহ, এটি কাজ করেছিল! ধন্যবাদ!
কেনে

হুম… আপনি যখন locale-gen --purge en_GB.UTF-8কোনও পরিষ্কার ইনস্টলেশন চালাবেন , আপনি এই অপ্রত্যাশিত আউটপুটটি পাবেন: Generating locales (this might take a while)... en_US.UTF-8... done Generation complete.ডিপি কেজি-পুনরায় কনফিগার করে লোকালগুলিকে অ-ইন্টারেক্টিভভাবে কীভাবে লোকালগুলির তালিকা সেট করবেন তা সম্পর্কে কোনও ধারণা?
বেনজামিন নোলান

এটি উভয়ই ত্রুটি অস্বীকার করার অনুমতি দেয় ....
সেরিন

47

কাজ করার জন্য উপরের উত্তরটি পাওয়া যায়নি। পরিবর্তে, আমি এই পদ্ধতিটি ব্যবহার করি (ডকফাইফিলের জন্য):

# Configure timezone and locale
echo "Europe/Oslo" > /etc/timezone && \
    dpkg-reconfigure -f noninteractive tzdata && \
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    sed -i -e 's/# nb_NO.UTF-8 UTF-8/nb_NO.UTF-8 UTF-8/' /etc/locale.gen && \
    echo 'LANG="nb_NO.UTF-8"'>/etc/default/locale && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=nb_NO.UTF-8

3
ডকফাইফাইল হ'ল আমার যা প্রয়োজন তা হ'ল। ধন্যবাদ।
পেডি

5
দয়া করে অন্যান্য উত্তরগুলিকে "উপরে", "নীচে" বা অনুরূপ হিসাবে উল্লেখ করবেন না। লোকেরা তাদের ভোট দেওয়ার সাথে সাথে তাদের উত্তর দেয়, সেগুলি গ্রহণ করে, মুছে ফেলবে বা ঠিক আলাদা অর্ডার বাছাই করার সাথে সাথে উত্তরগুলি সরানো হয়। উত্তর পোস্ট করা ব্যক্তির নাম সর্বদা ব্যবহার করুন, বা আরও ভাল, আপনি যে মন্তব্যে মন্তব্য করছেন সেই উত্তরটির নীচে ভাগ লিঙ্কটি স্পষ্টভাবে উত্তরটিতে লিঙ্ক করতে ব্যবহার করুন।
rjmunro

এই উত্তরটির সামান্যতম সংক্ষিপ্ত সংস্করণ - বিশেষত ডকফাইফিলস এর জন্য .. সম্পাদনা: যেহেতু এখানে নিউলাইনগুলি
/

আমার en_GB.UTF-8সার্কেলসিআইতে লোকেল স্থাপন করা দরকার ছিল - এটি কাজ করা সবচেয়ে ভাল উত্তর ছিল। এই মন্তব্যের কারণে আশা করছি, লোকেরা আমার যে সমস্যাটি পেয়েছিল তা অনুসন্ধান করার চেষ্টা করলে গুগল এটিকে প্রাসঙ্গিক হিসাবে দেখায়।
অ্যালেক্স সাজাবি

প্রতিধ্বনি 'LANG = "nb_NO.UTF-8"'> / ইত্যাদি / ডিফল্ট / লোকেল আপডেট-লোকেলের সাথে অপ্রয়োজনীয় LANG = nb_NO.UTF-8
ওন্টংলেট

7

স্ক্রিপ্টের মধ্যে থেকে সময়-অঞ্চলটি এবং অ-ইন্টারেক্টিভভাবে স্থানীয় অবস্থানগুলি পুনরায় কনফিগার করার জন্য, এটি আমার জন্য কাজ করে (ডিবিয়ান এর অধীনে):

  • টাইমজোনটি কনফিগার করার জন্য, আমি প্রথমে '/ ইত্যাদি / লোকালটাইম'টিকে ' / usr / share / زونinfo 'ডিরেক্টরিতে যথাযথ জোনিনফো ফাইলের নরম লিঙ্ক হিসাবে তৈরি করি । তারপরে, আমি dpkg-reconfigure কমান্ডটি চালাচ্ছি এবং সবকিছু ঠিকঠাক করে দেওয়া হবে। সুতরাং, উদাহরণস্বরূপ, সময় অঞ্চল 'ইউরোপ / ব্রাসেলস' সেট আপ করতে:

    AREA='Europe'
    ZONE='Brussels'
    
    ZONEINFO_FILE='/usr/share/zoneinfo/'"${AREA}"'/'"${ZONE}"
    ln --force --symbolic "${ZONEINFO_FILE}" '/etc/localtime'
    dpkg-reconfigure --frontend=noninteractive tzdata
    

    (দ্রষ্টব্য যে এআরইএ '/ usr / শেয়ার / তথ্য' এর অধীনে একটি উপ-ডিরেক্টরি রয়েছে, এবং জোন আআআআআআরআর উপ-ডিরেক্টরিতে অন্তর্ভুক্ত একটি ফাইল)।

  • লোকেলগুলি কনফিগার করার জন্য, আমি প্রথমে একটি সেড স্ক্রিপ্ট চালাচ্ছি যা '/etc/locale.gen' ফাইলটির একটি নতুন অনুলিপি তৈরি করবে, '/ usr / share / i18n / সমর্থিত' ফাইলের সামগ্রীর উপর ভিত্তি করে। ইনপুট ফাইল থেকে প্রতিটি লাইন অনুলিপি করা হবে, তবে এটি কোনও মন্তব্যে রূপান্তরিত হবে যদি না এটি আমার সিস্টেমে উপলব্ধ করার জন্য ভাষা ব্যবহারের জন্য ইউটিএফ -8 লোকেলের প্রবেশ না হয় (যেমন, ইংরেজি, ডাচ, ফরাসী, এবং জার্মান):

    sed --regexp-extended --expression='
    
       1  {
             i\
    # This file lists locales that you wish to have built. You can find a list\
    # of valid supported locales at /usr/share/i18n/SUPPORTED, and you can add\
    # user defined locales to /usr/local/share/i18n/SUPPORTED. If you change\
    # this file, you need to rerun locale-gen.\
    \
    
    
          }
    
       /^(en|nl|fr|de)(_[[:upper:]]+)?(\.UTF-8)?(@[^[:space:]]+)?[[:space:]]+UTF-8$/!   s/^/# /
    
    ' /usr/share/i18n/SUPPORTED >  /etc/locale.gen
    

    এরপরে, আমি ডিপকনফ ডেটাবেজে ডিফল্ট পরিবেশের লোকেল সেট করি, যেমন, ব্রিটিশ ইংরেজিতে :

    debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'

    পরবর্তীকালে আমি বিদ্যমান '/ ইত্যাদি / ডিফল্ট / লোকেল' ফাইলটি সরিয়ে ফেলি (কেবলমাত্র এটি পুরাতন বিষয়বস্তুগুলি আমার নতুন সেটিংসে বাধাগ্রস্ত করবে না তা নিশ্চিত করার জন্য), এবং সিডি স্ক্রিপ্টটি নির্বাচিত সমস্ত লোকেল তৈরি করতে dpkg-পুনরায় কনফিগার কমান্ডটি চালান , এবং আমার নির্বাচিত ডিফল্ট পরিবেশের লোকালে 'ল্যাং' ভেরিয়েবল সেট করতে কেবল একটি এন্ট্রি সহ একটি নতুন '/ ইত্যাদি / ডিফল্ট / লোকেল' ফাইল তৈরি করতে:

    rm --force --verbose /etc/default/locale
    dpkg-reconfigure --frontend=noninteractive locales
    

    তারপরে, আমার প্রয়োজনীয়তার উপর নির্ভর করে, আমি ওভাররাইড করতে উদাহরণস্বরূপ কয়েকটি আপডেট-লোকেল কমান্ড চালাতে চাইছি , উদাহরণস্বরূপ, ভেরিয়েবলগুলি যা মানগুলির বিন্যাসকে প্রভাবিত করে এবং একটি পৃথক লোকালে সেট করে (যেমন আইরিশ ইংরাজী ):

    update-locale LC_NUMERIC='en_IE.UTF-8'
    update-locale LC_TIME='en_IE.UTF-8'
    update-locale LC_MONETARY='en_IE.UTF-8'
    update-locale LC_PAPER='en_IE.UTF-8'
    update-locale LC_NAME='en_IE.UTF-8'
    update-locale LC_ADDRESS='en_IE.UTF-8'
    update-locale LC_TELEPHONE='en_IE.UTF-8'
    update-locale LC_MEASUREMENT='en_IE.UTF-8'
    update-locale LC_IDENTIFICATION='en_IE.UTF-8'
    

    (আমি আপডেট-লোকেল কমান্ডের একক অনুরোধে এই সমস্ত পরামিতি নির্দিষ্ট করতে পারতাম , তবে দৃশ্যত, প্রবেশদ্বারগুলি '/ ইত্যাদি / ডিফল্ট / লোকেল' ফাইলটিতে যে ক্রমে লিখিত হয় তা যদি অনির্দেশ্য হয় তবে আমি তা করি না I তাদের সর্বদা একই ক্রমে থাকতে পছন্দ করুন, এজন্য আমি এগুলি একে একে তৈরি করি gene)

    এবং পরিশেষে, আমি ভাষাটি ভেরিয়েবল সেট আপ করার জন্য আপডেট-লোকেল কমান্ডটি শেষবারের মতো চালাতে চাই (অর্থাত্ যে ভাষাগুলির অনুবাদযোগ্য টেক্সট বার্তাগুলি প্রদর্শিত হতে পারে) তার তালিকা:

    update-locale LANGUAGE='en_GB:en_US:en'

এগুলি একসাথে ব্যাশ স্ক্রিপ্টে ফেলে দিন এবং আপনি সহজেই স্ক্রিপ্টটির একটি সহজ রান দিয়ে আপনার স্থানীয় সেটিংস পুনরায় কনফিগার করতে পারেন, যার জন্য আর কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন হবে না।

আমার অভিজ্ঞতায়, তবে, আপনার সিস্টেমে দুবার পুনরায় বুট করার পরে (কমপক্ষে ডেবিয়ান জেসি এক্সফেসে) নতুন সেটিংস সম্পূর্ণ সক্রিয় হবে না। প্রথম পুনরায় বুট করার পরে, লগইন পরিচালকটি নতুন সেটিংস ঠিকঠাকভাবে নেবেন, তবে আপনি লগইন করার পরে আপনার ব্যবহারকারীর সেশনটি পুরানো সেটিংস ব্যবহার করা চালিয়ে যাবে; তারপরে, দ্বিতীয় রিবুটের পরে, আপনার ব্যবহারকারীর সেশনটি নতুন সেটিংসও নেবে।


7

@ EirikW এর উত্তরে সূক্ষ্ম কাজের ভিত্তিতে। একটি নির্দিষ্ট Dockerfile:

ENV LANG=en_GB.UTF-8
RUN apt-get install -y locales && \
    sed -i -e "s/# $LANG.*/$LANG.UTF-8 UTF-8/" /etc/locale.gen && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=$LANG

1
আমি ENV সেট করতে পছন্দ করি অন্যথায় আপনি এই ত্রুটিটি পেয়ে যাবেন: "পার্ল: সতর্কতা: লোকেল সেট করা ব্যর্থ। আপনার সিস্টেমে ইনস্টল করা আছে \ l perl: সতর্কতা: স্ট্যান্ডার্ড
লোকালে

6

আমার জন্য অতিরিক্ত 3 ENV-Vars সেট করা প্রয়োজন ছিল:

# - Set the locale + timezone --------------------------------------------------
RUN echo "Europe/Vienna" > /etc/timezone && \
    dpkg-reconfigure -f noninteractive tzdata && \
    sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \
    sed -i -e 's/# de_AT.UTF-8 UTF-8/de_AT.UTF-8 UTF-8/' /etc/locale.gen && \
    echo 'LANG="de_AT.UTF-8"'>/etc/default/locale && \
    dpkg-reconfigure --frontend=noninteractive locales && \
    update-locale LANG=de_AT.UTF-8

ENV LANG de_AT.UTF-8
ENV LANGUAGE de_AT.UTF-8
ENV LC_ALL de_AT.UTF-8

তবে তার উত্তরের জন্য এরিকডব্লিউজকে ধন্যবাদ: ( https://serverfault.com/a/689947 )


1
এটিই আমার জন্য কাজ করা একমাত্র সমাধান, আমি ডকার সংস্করণে 17.06.1-ce, 874a737 তৈরি করছি
লিনাক্স্যাটিকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.