Biasanya, saya jalankan aptitude -y install locales
kemudian dpkg-reconfigure locales
untuk mengatur lokal.
Sekarang saya ingin memasukkannya ke dalam skrip shell, bagaimana saya dapat melakukan hal berikut secara otomatis / non-interaktif?
- Pilih
en_US.UTF-8
dan atur sebagai standar sistem - Nonaktifkan semua lokal lain
- (Opsional) Verifikasi jika
/etc/default/locale
berisi entri satu-dan-satunyaLANG=en_US.UTF-8
seperti yang diharapkan
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"))
...locale-gen --purge en_GB.UTF-8
instalasi yang bersih, Anda mendapatkan output yang tidak terduga ini:Generating locales (this might take a while)... en_US.UTF-8... done Generation complete.
Ada ide bagaimana mengatur daftar lokal seperti yang Anda lakukan di dpkg-mengkonfigurasi ulang lokal non-interaktif?Tidak bisa mendapatkan jawaban di atas berfungsi. Sebagai gantinya, saya menggunakan metode ini (untuk Dockerfiles):
sumber
en_GB.UTF-8
mengatur lokal di CircleCI - ini adalah jawaban terbaik yang berfungsi. Berharap itu karena komentar ini, Google mungkin menunjukkan ini sebagai relevan ketika orang mencoba mencari masalah yang saya alami.Untuk mengkonfigurasi ulang zona waktu dan lokal secara non-interaktif, dari dalam skrip, inilah yang berfungsi untuk saya (di bawah Debian):
Untuk mengkonfigurasi zona waktu, saya pertama-tama membuat '/ etc / localtime' sebagai tautan lunak ke file zoneinfo yang sesuai di bawah direktori '/ usr / share / zoneinfo'. Kemudian, saya menjalankan perintah dpkg-reconfigure , dan semuanya akan diberlakukan. Jadi, misalnya, untuk mengatur zona waktu 'Eropa / Brussels':
(Perhatikan bahwa AREA adalah subdirektori di bawah '/ usr / share / info', dan ZONE adalah file di bawah subdirektori AREA).
Untuk mengkonfigurasi locales, saya pertama kali menjalankan skrip sed yang akan membuat salinan baru dari file '/etc/locale.gen', berdasarkan pada isi file '/ usr / share / i18n / SUPPORTED'. Setiap baris dari file input akan disalin, tetapi akan diubah menjadi komentar kecuali itu adalah entri dari UTF-8 lokal untuk bahasa yang ingin saya sediakan di sistem saya (misalnya, Inggris, Belanda, Perancis, dan Jerman):
Selanjutnya, saya mengatur lokal lingkungan default di database debconf, misalnya, ke British English :
Saya kemudian menghapus file '/ etc / default / locale' yang ada (hanya untuk memastikan bahwa konten yang lama tidak akan mengganggu pengaturan baru saya), dan menjalankan perintah dpkg-mengkonfigurasi ulang untuk menghasilkan semua lokal yang dipilih oleh skrip sed , dan untuk membuat file '/ etc / default / locale' baru dengan hanya sebuah entri untuk mengatur variabel 'LANG' menjadi lokal lingkungan default yang saya pilih:
Kemudian, tergantung pada persyaratan saya, saya mungkin ingin menjalankan beberapa perintah pembaruan-lokal , untuk mengesampingkan, misalnya, variabel yang memengaruhi pemformatan nilai, dan mengaturnya ke lokal yang berbeda (seperti Bahasa Inggris Irlandia ):
(Saya bisa menentukan semua parameter ini pada satu permintaan tunggal perintah pembaruan-lokal , tetapi tampaknya, urutan entri dapat ditulis ke file '/ etc / default / locale' tidak dapat diprediksi jika saya melakukannya. Saya lebih suka mereka selalu dalam urutan yang sama, itulah sebabnya saya membuat mereka satu per satu.)
Dan akhirnya, saya mungkin ingin menjalankan perintah pembaruan-lokal untuk yang terakhir kalinya, untuk mengatur variabel LANGUAGE (yaitu, daftar bahasa tempat saya ingin pesan teks yang dapat diterjemahkan ditampilkan):
Letakkan semua ini bersama-sama menjadi skrip bash, dan Anda dapat dengan mudah mengkonfigurasi ulang pengaturan lokal Anda dengan menjalankan skrip yang sederhana, yang tidak akan memerlukan interaksi pengguna lebih lanjut.
Dalam pengalaman saya, bagaimanapun, pengaturan baru tidak akan sepenuhnya diaktifkan sampai setelah Anda reboot sistem Anda dua kali (setidaknya pada Debian Jessie Xfce). Setelah reboot pertama, manajer login akan mengambil pengaturan baru dengan baik, tetapi setelah Anda login, sesi pengguna Anda akan terus menggunakan pengaturan lama; kemudian, setelah reboot kedua, sesi pengguna Anda akan mengambil pengaturan baru juga.
sumber
Berdasarkan hasil kerja yang baik dalam jawaban @ EirikW. Khusus untuk
Dockerfile
:sumber
Bagi saya itu perlu untuk mengatur tambahan 3 ENV-Vars:
Namun Terima kasih kepada ErikWs atas jawabannya: ( https://serverfault.com/a/689947 )
sumber