Cách sửa sai múi giờ sai thông qua trình biên dịch múi giờ zic


7

Tôi có iPod touch (thế hệ thứ 2) chạy iOS 3.1.3 (vì nó không hoạt động tốt với iOS 4) và liên tục gặp rắc rối với đồng hồ tự đặt trước một giờ so với thời gian thực tế khi tôi kết nối nó với máy tính.

Khi tôi SSH vào thiết bị:

  • date "+%Z"Trả về ARSTđó là chính xác (Tôi đang ở Buenos Aires, Argentina)
  • date "+%z"kết quả là -0200, đó là sai và nên-0300

Câu hỏi của tôi là: Làm cách nào để sửa phần bù của múi giờ của tôi thành giá trị thực?

Tôi đã tìm thấy đề cập đến zic, zdumpvà tham chiếu đến một "Cơ sở dữ liệu IANA Time Zone".
Tôi đã cố gắng tìm các tệp đã được biên dịch để thay thế toàn bộ thư mục "zoneinfo", nhưng các bản tải xuống mà tôi có thể tìm thấy dường như sử dụng cấu trúc thư mục khác với cấu trúc trên iPod.

Chỉnh sửa: Tôi đang tìm cách chỉnh sửa hoặc cập nhật thông tin múi giờ, để múi giờ "ARST" của tôi được cấu hình đúng. Tôi đã tìm thấy một số tài liệu tham khảo cho một trình biên dịch có tên zic.
Cả hai ziczdumpcó mặt trên thiết bị, điều này khiến tôi tin rằng nó có thể được thực hiện thông qua các lệnh SSH và UNIX.

Câu trả lời:


7

Tôi tìm thấy giải pháp ở đây .

Tuy nhiên, nguồn tzdata đã thay đổi URI của nó. Hiện tại nó được tìm thấy tại: ftp://ftp.iana.org/tz/ hoặc http://www.iana.org/time-zones để biết thêm thông tin.

  1. Tải xuống tệp tzdata đã cập nhật, trong trường hợp này tzdata2012j.tar.gzvà trích xuất nó vào một thư mục tạm thời.

  2. SSH vào iPod và sao chép các tệp được giải nén vào iPod. Tôi đã chọn User/Downloadsvà tạo một thư mục mới (tạm thời) tzfixđể sao chép mọi thứ.

  3. Sau đó, biên dịch nó bằng lệnh : zic southamerica, mất vài giây.

  4. Sau đó, sử dụng lệnh sau để sao chép tệp này:

    cp /usr/share/zoneinfo/America/Argentina/Buenos_Aires /usr/share/zoneinfo/America/Buenos_Aires

  5. Kiểm tra date "+%z"date "+%Z"cả hai trả về giá trị chính xác, ngay bây giờ: -0300ART

Cuối cùng! Tôi có thể đặt đồng hồ đúng giờ mà không cần Twitter từ chối đăng nhập và Google Authenticator ném mã xác thực sai.

Chỉnh sửa: Có một cơ sở dữ liệu riêng biệt khác cho thời gian cần cập nhật: cơ sở dữ liệu ICU. Nó sử dụng cùng một tzdata và cần được biên dịch thành /usr/share/icu/icudt40l.dat.Điều này là cần thiết để các ứng dụng đồng hồ và lịch hiển thị thời gian chính xác.


2
Bước 4 sao chép America/Argentina/Buenos_Airestập tin vào America/thư mục. (Lưu ý rằng không phải vậy America/Argentina/.)
CVn

Ah! Cảm ơn @ MichaelKjorling Điều đó làm cho nó rõ ràng độc đáo. Nó hoàn toàn thoát khỏi sự chú ý của tôi.
leugim

Không có gói cập nhật có sẵn cho iOS? Đó là thích hợp để hack trong một tập tin từ các nguồn.
vonbrand

@vonbrand: Đó là cách tiếp cận đầu tiên của tôi, tìm kiếm một giải pháp. Tôi không thể tìm thấy bất kỳ gói cập nhật. Các tùy chọn duy nhất dường như là "cập nhật lên iOS mới nhất". IPod của tôi sẽ không hoạt động tốt với iOS4, vì vậy tôi bị kẹt với 3.1.3. Tôi không tìm thấy cách cập nhật chỉ một số gói nhất định. Một cái gì đó tôi đang học để đánh giá cao từ việc đánh lừa xung quanh với Ubuntu.
leugim

1
Ngoài ra, và tôi đã không đưa nó vào câu trả lời vì tôi nghi ngờ nó không chính đáng, có một cơ sở dữ liệu riêng biệt khác cho thời điểm cần cập nhật: cơ sở dữ liệu ICU. Nó sử dụng cùng một tzdata và cần được biên dịch thành /usr/share/icu/icudt40l.dat. Điều này là cần thiết để các ứng dụng đồng hồ và lịch hiển thị thời gian chính xác.
leugim
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.