Saya ingin mengatur skrip yang secara otomatis mengubah zona waktu pada mesin (menjalankan ubuntu 11.10) dan juga menetapkan nilai yang tepat ke debconf
database. Saya sudah mencoba yang berikut ini, tetapi tidak berfungsi (pada akhirnya, zona waktu saat ini tetap tidak berubah, dan jika saya menjalankan dpkg-reconfigure tzdata
perintah secara manual , nilai yang dipilih memang yang lama):
#!/bin/sh -e
echo "tzdata tzdata/Areas select Europe" | debconf-set-selections
echo "tzdata tzdata/Zones/Europe select Madrid" | debconf-set-selections
echo "tzdata tzdata/Zones/America select " | debconf-set-selections
dpkg-reconfigure -f noninteractive tzdata
Jadi, sekarang, saya melakukannya mengacaukan file /etc/localtime
dan /etc/timezone
secara langsung, tetapi saya lebih suka dpkg-reconfigure
dan debconf
cara.
Saya baru tahu bahwa dengan Debian Stretch (9) Anda juga perlu mengubah / etc / localtime, jadi sesuatu seperti:
dibutuhkan. Untuk mengubah jawaban andrekeller, Anda perlu:
sumber
ln -fs ....
baris yang tidak sesuai dengan yang sederhanarm -f /etc/localtime
, dan itu akan tetap berfungsi (dan debconf akan dibuat ulang/etc/localtime
dengan nilai yang benar); lihat jawaban saya untuk detail.Untuk menggunakan debconf, sebelum memanggil dpkg-reconfigure, Anda juga harus menghapus
/etc/localtime
dan/etc/timezone
. Waspadalah terhadap kemungkinan ruang tambahan (seperti dalam pertanyaan Anda!) Yang tidak jinak.Jadi "cara debconf" yang berfungsi (dalam Debian Stretch) adalah:
Alasannya adalah bahwa skrip tzdata config mencoba menjadi pintar, dan jika skrip tersebut dikonfigurasi sebelumnya atau pengguna secara manual ikut campur dengan zona waktu, akan berperilaku berbeda.
TAMBAHAN
Untuk men-debug sendiri masalah yang serupa, pertama-tama Anda harus:
yang akan memberikan info berikut:
yang akan menunjukkan kepada Anda bahwa ia secara paksa SET nilai-nilai sebelum meminta pengguna untuk mereka (sehingga menimpa nilai-nilai yang Anda tetapkan dengan
debconf-set-selections
).Kemudian Anda akan mengubah shebang
/var/lib/dpkg/info/tzdata.config
dari dari#!/bin/sh
ke#!/bin/sh -x
, dan mengikuti alur program, di mana Anda akan melihat bahwa itu berubah :melihat
/var/lib/dpkg/info/tzdata.config
Anda akan menemukan ini:yang menjelaskan mengapa jawaban fiksi bekerja. Juga mencari di skrip lebih lanjut, Anda akan menemukan bahwa jawaban @andrekeller juga berfungsi di versi Debian yang lebih baru jika Anda menghapus '/ etc / localtime'.
Semoga bantuan debugging ini akan membantu Anda ketika versi Debian berikutnya membuat skrip menjadi lebih pintar dan jawaban yang ada menjadi tidak valid juga. Info lebih lanjut tentang debugging debconf dapat ditemukan di debconf-devel (7)
sumber