apt-get cài đặt tzdata noninteractive


100

Khi tôi cố gắng

apt-get install -y tzdata

tùy chọn dòng lệnh để chọn múi giờ hiển thị. Tôi đang cố gắng sử dụng điều này trong một tập lệnh để thực hiện một số thiết lập, làm cách nào để chạy apt-get mà không cần người dùng nhập?

Tôi biết cách cấu hình lại tzdata mà tôi có thể làm

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

Nhưng khi cài đặt, tôi cần nó chạy đầy đủ ngay cả khi nó không đặt đúng múi giờ, tôi luôn có thể cấu hình lại nó.

Tôi đã thử

echo 5 | apt-get install -y tzdata

nhưng nó không hoạt động như mong đợi.

Câu trả lời:


170

Đây là tập lệnh tôi đã sử dụng

(Phiên bản cập nhật với đầu vào từ @elquimista từ các nhận xét)

#!/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

Có vẻ hoạt động tốt.

Như một lớp lót:

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

44
Nếu bạn đang sử dụng tốt với UTC, đây là một lớp lót:DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
elquimista

4
Đây là một nỗi đau. Tôi không thể cài đặt tzdata mà không có nó nhắc tôi đặt múi giờ mặc định của mình (lời nhắc cấu hình trong khi cài đặt gói? Ý tưởng này là của ai?) Và tôi không thể đặt múi giờ mặc định mà không cài đặt tzdata trước. Nó đã được mặc định là UTC nếu bạn vượt qua EOF. Tại sao không chỉ làm điều đó và để người dùng cập nhật sau nếu họ muốn. Hoặc để tôi thiết lập biến môi trường TZ và tìm kiếm tzdata.
theferrit32

2
Thực hiện ln -fs /usr/share/zoneinfo/America/New_York /etc/localtimebước trước đây DEBIAN_FRONTEND=noninteractive apt-get install -y tzdatalà cách duy nhất tôi có thể làm điều này để cài đặt lời nhắc w / oa.
fncomp

Đối với tôi cũng vậy, cách duy nhất điều này hoạt động là đặt câu lệnh ln trước. @PYA.
jpruiz114

75

Nếu ai đó muốn đạt được nó Dockerfile, hãy sử dụng như bên dưới.

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

2
Điều này có thể được thực hiện như một dòng duy nhất: RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends ...Các DEBIAN_FRONTENDbiến phải được thiết lập cho installmột phần. Nó không có tác dụng nếu thiết lập trước &&cho updatemột phần.
Daniel Stevens

6

Tất cả tín dụng cho điều này sẽ được chuyển đến @PYA nhưng thứ tự phù hợp phải là:

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

Tôi đã chỉnh sửa câu trả lời ban đầu để phản ánh sự thay đổi đơn đặt hàng.
sebisnow

5

Gần đây tôi đã tìm thấy giải pháp sau trong Dockerfile xây dựng thư viện Cingulata FHE:

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

Về cơ bản, nó sử dụng API do ipapi.co cung cấp để truy xuất thông tin múi giờ. Điều này sẽ tự động định cấu hình múi giờ đúng cách thay vì bỏ qua hộp thoại và sử dụng mặc định (UTC).


1

Đây là cách tôi đã làm điều đó:

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

Hai câu lệnh echo đầu tiên tạo một tệp văn bản chứa các số lựa chọn cho menu khu vực địa lý và menu thành phố / khu vực. Sau đó, tệp này được sử dụng để cung cấp đầu vào cho lệnh apt-get install. Gói tzdata sẽ được cài đặt mà không yêu cầu bất kỳ đầu vào của người dùng. Múi giờ sẽ được đặt thành Châu Phi / Abidjan như thể bạn đã nhập 1 và 1 để phản hồi các lời nhắc mà bạn thường nhận được. Sau đó, tôi thay đổi múi giờ thành những gì tôi muốn bằng hai lệnh cuối cùng.

Thay vì 1 và 1, bạn có thể sử dụng các con số thực tế cho khu vực địa lý và thành phố / khu vực mà bạn muốn, nhưng tôi thấy rằng những con số đó có thể thay đổi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.