apt-get install tzdata etkileşimsiz


100

Denediğimde

apt-get install -y tzdata

saat dilimini seçmek için komut satırı seçeneği görünür. Bunu bazı kurulumlar yapmak için bir komut dosyasında kullanmaya çalışıyorum, apt-get'i kullanıcı girişi olmadan nasıl çalıştırabilirim?

Yapabileceğim tzdata'yı yeniden yapılandırmayı biliyorum

echo "America/New_York" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata

Ancak kurarken, doğru saat dilimini ayarlamasa bile tam olarak çalışmasına ihtiyacım var, her zaman yeniden yapılandırabilirim.

denedim

echo 5 | apt-get install -y tzdata

ancak beklendiği gibi çalışmıyor.

Yanıtlar:


170

Bu kullandığım komut dosyası

(Yorumlardan @elquimista'dan gelen girdiyle güncellenmiş Sürüm)

#!/bin/bash
export DEBIAN_FRONTEND=noninteractive

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

İyi çalışıyor gibi görünüyor.

Tek astar olarak:

DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends tzdata

44
UTC'de sorun yoksa, işte tek DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
satırlık

4
Bu çok büyük bir acı. Tzdata'yı varsayılan saat dilimimi ayarlamamı istemeden yükleyemiyorum (paket kurulumu sırasında yapılandırma istemi? Bu kimin fikriydi?) Ve tzdata'yı ilk önce yüklemeden varsayılan saat dilimini ayarlayamıyorum. EOF'yi geçerseniz zaten varsayılan olarak UTC'dir. Neden bunu yapıp kullanıcının isterse daha sonra güncellemesine izin vermiyorsunuz? Ya da TZ ortam değişkenini ayarlayıp tzdata'ya bakmama izin verin.
theferrit32

2
Daha ln -fs /usr/share/zoneinfo/America/New_York /etc/localtimeönce adım DEBIAN_FRONTEND=noninteractive apt-get install -y tzdataatmak, bunu istemsiz yüklemeyi alabilmemin tek yoluydu.
fncomp

Benim için de aynı şey geçerli, bunun işe yaramasının tek yolu ln ifadesini ilk sıraya koymaktı. @PYA.
jpruiz114

75

Birisi bunu başarmak istiyorsa Dockerfile, aşağıdaki gibi kullanın.

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get -y install tzdata

2
Bu tek bir satır olarak yapılabilir: değişken için ayarlanmış olmalıdır parçası. Parça için daha önce ayarlanırsa çalışmaz . RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...DEBIAN_FRONTENDinstall&&update
Daniel Stevens

6

Bunun için tüm kredi @PYA'ya gitmeli, ancak doğru sipariş şu şekilde olmalıdır:

ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime
export DEBIAN_FRONTEND=noninteractive
apt-get install -y tzdata
dpkg-reconfigure --frontend noninteractive tzdata

Orijinal yanıtı, sıra değişikliğini yansıtacak şekilde düzenledim.
sebisnow

5

Yakın zamanda Cingulata FHE kitaplığını oluşturan bir Dockerfile'da aşağıdaki çözümü buldum :

ln -snf /usr/share/zoneinfo/$(curl https://ipapi.co/timezone) /etc/localtime

Temel olarak saat dilimi bilgilerini almak için ipapi.co tarafından sağlanan API'yi kullanır. Bu, iletişim kutusunu atlamak ve varsayılanı (UTC) kullanmak yerine saat dilimini otomatik olarak yapılandırır.


1

İşte böyle yaptım:

echo 1 > input.txt
echo 1 >> input.txt
apt-get install -y tzdata < input.txt
ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime
echo America/Los_Angeles > /etc/timezone

İlk iki yankı ifadesi, coğrafi alan menüsü ve şehir / bölge menüsü için seçim numaralarını içeren bir metin dosyası oluşturur. Bu dosya daha sonra apt-get install komutuna girdi sağlamak için kullanılır. Tzdata paketi, herhangi bir kullanıcı girişi istenmeden kurulacaktır. Saat dilimi, normalde alacağınız istemlere yanıt olarak 1 ve 1 girdiniz gibi Afrika / Abican olarak ayarlanacaktır. Sonra son iki komutla saat dilimini istediğim gibi değiştiriyorum.

1 ve 1 yerine, istediğiniz coğrafi bölge ve şehir / bölge için gerçek sayıları kullanabilirsiniz, ancak bana göre bu sayılar değişebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.