Để định cấu hình múi giờ, trước tiên tôi tạo '/ etc / localtime' dưới dạng liên kết mềm đến tệp zoneinfo thích hợp trong thư mục '/ usr / share / zoneinfo'. Sau đó, tôi chạy lệnh dpkg-recfigure và mọi thứ sẽ được đặt đúng chỗ. Vì vậy, ví dụ, để thiết lập múi giờ 'Châu Âu / Brussels':
AREA='Europe'
ZONE='Brussels'
ZONEINFO_FILE='/usr/share/zoneinfo/'"${AREA}"'/'"${ZONE}"
ln --force --symbolic "${ZONEINFO_FILE}" '/etc/localtime'
dpkg-reconfigure --frontend=noninteractive tzdata
(Lưu ý rằng DIỆN là thư mục con trong '/ usr / share / thông tin' và ZONE là một tệp trong thư mục con DIỆN TÍCH).
Để định cấu hình các ngôn ngữ, trước tiên tôi chạy một tập lệnh sed sẽ tạo một bản sao mới của tệp '/etc/locale.gen', dựa trên nội dung của tệp '/ usr / share / i18n / HPORT TRỢ'. Mọi dòng từ tệp đầu vào sẽ được sao chép, nhưng nó sẽ được chuyển thành nhận xét trừ khi đó là mục nhập của ngôn ngữ UTF-8 cho ngôn ngữ mà tôi muốn cung cấp trên hệ thống của mình (ví dụ: tiếng Anh, tiếng Hà Lan, tiếng Pháp, và tiếng Đức):
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
Tiếp theo, tôi đặt ngôn ngữ môi trường mặc định trong cơ sở dữ liệu debconf, ví dụ : tiếng Anh Anh :
debconf-set-selections <<< 'locales locales/default_environment_locale select en_GB.UTF-8'
Sau đó, tôi xóa tệp '/ etc / default / locale' hiện tại (chỉ để đảm bảo rằng nội dung cũ của nó sẽ không can thiệp vào cài đặt mới của tôi) và chạy lệnh dpkg-recfigure để tạo tất cả các vị trí mà tập lệnh sed đã chọn và để tạo tệp '/ etc / default / locale' mới chỉ bằng một mục nhập để đặt biến 'LANG' thành ngôn ngữ môi trường mặc định đã chọn của tôi:
rm --force --verbose /etc/default/locale
dpkg-reconfigure --frontend=noninteractive locales
Sau đó, tùy thuộc vào yêu cầu của tôi, tôi có thể muốn chạy một vài lệnh cục bộ cập nhật , để ghi đè, ví dụ: các biến ảnh hưởng đến định dạng của các giá trị và đặt chúng thành một ngôn ngữ khác (chẳng hạn như tiếng Anh Ailen ):
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'
(Tôi có thể đã chỉ định tất cả các tham số này trên một lệnh gọi duy nhất của lệnh cập nhật cục bộ , nhưng rõ ràng, thứ tự các mục nhập được ghi vào tệp '/ etc / default / locale' là không thể đoán trước nếu tôi làm như vậy. thích chúng luôn luôn theo cùng một thứ tự, đó là lý do tại sao tôi tạo chúng từng cái một.)
Và cuối cùng, tôi có thể muốn chạy lệnh cập nhật ngôn ngữ lần cuối, để thiết lập biến LANGUAGE (nghĩa là danh sách các ngôn ngữ mà tôi muốn tin nhắn văn bản có thể dịch được hiển thị):
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"))
...