टाइमजोन को कॉन्फ़िगर करने के लिए, मैं पहली बार '/ etc / localtime' को '/ usr / share / zoneinfo' डायरेक्टरी के तहत उपयुक्त जोनइनफो फाइल की सॉफ्ट लिंक के रूप में बनाता हूं। फिर, मैं 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 / शेयर / जानकारी' के तहत एक उपनिर्देशिका है, और क्षेत्र क्षेत्र उपनिर्देशिका के तहत एक फ़ाइल है)।
स्थानों को विन्यस्त के लिए, मैं पहली बार एक चलाने sed स्क्रिप्ट है कि '/etc/locale.gen' फ़ाइल की एक नई प्रतिलिपि बनाएगा, '/ usr / share / i18n / समर्थित' फ़ाइल की सामग्री पर आधारित है। इनपुट फ़ाइल की प्रत्येक पंक्ति की प्रतिलिपि बनाई जाएगी, लेकिन इसे तब तक एक टिप्पणी में बदल दिया जाएगा जब तक कि यह किसी भाषा के लिए UTF-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'
मैं बाद में मौजूदा '/ etc / default / locale' फ़ाइल को हटा देता हूं (बस यह सुनिश्चित करने के लिए कि इसकी पुरानी सामग्री मेरी नई सेटिंग्स में हस्तक्षेप नहीं करेगी), और उन सभी स्थानों को उत्पन्न करने के लिए dpkg-reconfigure कमांड चलाएं जो sed स्क्रिप्ट चुनी गई है , और एक नई '/ etc / default / locale' फ़ाइल बनाने के लिए सिर्फ एक प्रविष्टि के साथ 'LANG' वैरिएबल को मेरे चयनित डिफ़ॉल्ट वातावरण लोकेल में सेट करने के लिए:
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'
(मैं इन सभी मापदंडों को अपडेट-लोकेल कमांड के एक ही आह्वान पर निर्दिष्ट कर सकता था, लेकिन जाहिर है, ऐसी प्रविष्टियां जिनमें '/ etc / default / locale' फ़ाइल लिखी जाती है, यदि मैं ऐसा करता हूं तो अप्रत्याशित है। ' उन्हें हमेशा उसी क्रम में रहना पसंद करें, यही कारण है कि मैं उन्हें एक-एक करके उत्पन्न करता हूं।)
और अंत में, मैं अपडेट-लोकेल कमांड को पिछली बार एक बार चलाने के लिए , LANGUAGE चर (यानी, उन भाषाओं की सूची, जिनमें मैं अनुवाद योग्य पाठ संदेश प्रदर्शित करना चाहता हूं) सेट करना चाहता हूं:
update-locale LANGUAGE='en_GB:en_US:en'
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"))
...