So korrigieren Sie den falschen Zeitzonenversatz über den zic-Zeitzonen-Compiler

7

Ich habe einen iPod touch (2. Generation) mit iOS 3.1.3 (da er mit iOS 4 nicht gut funktioniert) und ständige Probleme mit der Einstellung der Uhr selbst eine Stunde vor der tatsächlichen Zeit, zu der ich ihn an den Computer anschließe.

Wenn ich SSH in das Gerät:

  • date "+%Z"Rückgabe, ARSTdie korrekt ist (ich bin in Buenos Aires, Argentinien)
  • date "+%z"Das Ergebnis ist -0200, was falsch ist und sein sollte-0300

Meine Frage ist: Wie korrigiere ich den Versatz meiner Zeitzone auf den tatsächlichen Wert?

Ich habe erwähnt gefundener zic, zdumpund Verweise auf eine „IANA - Zeitzone - Datenbank“.
Ich habe versucht, bereits kompilierte Dateien zu finden, um den gesamten Ordner "zoneinfo" zu ersetzen, aber die Downloads, die ich finden konnte, scheinen eine andere Ordnerstruktur zu verwenden als die auf dem iPod.

Bearbeiten: Ich suche nach einer Möglichkeit, die Zeitzoneninformationen zu bearbeiten oder zu aktualisieren, damit meine Zeitzone "ARST" korrekt konfiguriert ist. Ich habe mehrere Verweise auf einen Compiler namens gefunden zic.
Beide zicund zdumpsind auf dem Gerät vorhanden, was mich zu der Annahme führt, dass dies über SSH- und UNIX-Befehle möglich ist.

Leugim
quelle

Antworten:

7

Ich habe hier die Lösung gefunden .

Die tzdata-Quelle hat jedoch ihren URI geändert. Weitere Informationen finden Sie jetzt unter: ftp://ftp.iana.org/tz/ oder http://www.iana.org/time-zones .

  1. Laden Sie in diesem Fall die aktualisierte tzdata-Datei herunter tzdata2012j.tar.gzund extrahieren Sie sie in einen temporären Ordner.

  2. SSH in den iPod und kopieren Sie die extrahierten Dateien auf den iPod. Ich habe User/Downloadseinen neuen (temporären) Ordner ausgewählt und erstellt, tzfixin den ich alles kopiert habe.

  3. Kompilieren Sie es anschließend mit dem Befehl : zic southamerica, der einige Sekunden dauert.

  4. Verwenden Sie dann den folgenden Befehl, um diese Datei zu kopieren:

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

  5. Testen date "+%z"und date "+%Z"beide geben jetzt korrekte Werte zurück: -0300undART

Schließlich! Ich kann die Uhr auf die richtige Zeit einstellen, ohne dass Twitter sich weigert, sich anzumelden, und Google Authenticator falsche Authentifizierungscodes ausgibt.

Bearbeiten: Es gibt eine andere separate Datenbank für die Zeit, die aktualisiert werden muss: die ICU-Datenbank. Es verwendet dieselben tzdata und muss kompiliert werden. /usr/share/icu/icudt40l.dat.Dies ist erforderlich, damit die Uhr- und Kalender-Apps die richtige Zeit anzeigen.

Leugim
quelle
2
Schritt 4 kopiert die America/Argentina/Buenos_AiresDatei in das America/Verzeichnis. (Beachten Sie, dass es nicht ist America/Argentina/.)
ein CVn
Ah! Danke @ MichaelKjörling Das klärt es schön auf. Es ist meiner Aufmerksamkeit völlig entgangen.
Leugim
Gibt es keine aktualisierten Pakete für iOS? Das ist dem Hacken einer Datei aus Quellen vorzuziehen.
vonbrand
@vonbrand: Das war mein erster Ansatz, nach einer Lösung zu suchen. Ich konnte keine aktualisierten Pakete finden. Die einzige Option scheint "Update auf das neueste iOS" zu sein. Mein iPod funktioniert mit iOS4 nicht gut, daher bleibe ich bei 3.1.3. Ich habe keine Möglichkeit gefunden, nur bestimmte Pakete zu aktualisieren. Etwas, das ich zu schätzen lerne, wenn ich mit Ubuntu herumspiele.
Leugim
1
Außerdem, und ich habe es nicht in die Antwort aufgenommen, weil ich vermute, dass es offtopisch ist, gibt es für die Zeit, die aktualisiert werden muss, eine andere separate Datenbank: die ICU-Datenbank. Es verwendet dieselben tzdata und muss kompiliert werden /usr/share/icu/icudt40l.dat. Dies ist erforderlich, damit die Uhr- und Kalender-Apps die richtige Zeit anzeigen.
Leugim