Was RunAsDate tut, ist Folgendes:
RunAsDate fängt die Kernel-API-Aufrufe ab, die das aktuelle Datum und die aktuelle Uhrzeit zurückgeben (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime), und ersetzt das aktuelle Datum/die aktuelle Uhrzeit durch das von Ihnen angegebene Datum/die angegebene Uhrzeit.
Unter Linux haben Sie einige Optionen, um dasselbe zu erreichen:
-
Wenn Sie eine Windows-Version des Programms erhalten, können Sie RunAsDate möglicherweise unter Wine ausführen (aber achten Sie auf einen kürzlich aufgetretenen Fehler).
-
Finden Sie eine Wrapper-Bibliothek, um dies zu tun, oder schreiben Sie Ihre eigene. Nachfolgend sind einige Optionen aufgeführt.
-
Verwenden Sie eine virtuelle Maschine. Das ist übertrieben, aber da ein Betriebssystem in einer Gast-VM vollständig vom zugrunde liegenden Host getrennt ist, können Sie seine Systemzeit auf etwas völlig anderes einstellen. Es ist möglicherweise schneller einzurichten als die anderen Optionen.
Option 2 kann mit verschiedenen Methoden erreicht werden, je nachdem, was Sie ausführen möchten. DaveParillos Antwort unten verlinkt auf einen DIY-Ansatz, der die verschiedenen Methoden erklärt und Code für eine ausführbare Datei enthält. Einige andere Optionen sind:
-
datefudge
, verfügbar in Debian/Ubuntu-Repositories und an anderen Orten. -
Time-Fake-Perl-Modul, auch in Debian-Repositories als Paket
libtime-fake-perl
. -
FakeTime Preload Library (auch bekannt als
libfaketime
, Freshmeat-Link), eine Bibliothek, die Systemaufrufe in dynamisch verknüpften Binärdateien abfangen kann. Verfügbar in Debian-Repositories für Squeeze und Sid.
Ich hatte das gleiche Problem bei der Suche nach einer Alternative zu RunAsDate in Linux Ubuntu und kam zu dieser Lösung.
Ich habe einen Launcher des Programms erstellt, das ich mit RunAsDate verwenden möchte. Wenn die Software, die Sie verwenden möchten, Foo heißt, erstellen Sie auf Ihrem Desktop eine Datei namens Foo.desktop und ändern Sie sie mit gedit oder einem ähnlichen Texteditor. Fügen Sie dann die folgenden Codezeilen hinzu:
[Desktop Entry]
Name=Foo
Comment=Runs the Foo application
Exec=sh -c "sudo date --set '01 Jan 2008 12:00:00'; path/to/Foo; sudo timedatectl set-ntp no; sudo timedatectl set-ntp yes;"
Icon=path/to/icon.png
Terminal=true
Type=Application
StartupNotify=true
Sie müssen nur den Namen, den Kommentar und die Symbolinformationen mit Ihren tatsächlichen Ressourcen ändern.
Die Exec-Option ändert das Systemdatum für die Sitzung, während Sie die Anwendung verwenden, und wenn Sie fertig sind, wird das Systemdatum automatisch neu synchronisiert.