Lo que hace RunAsDate es lo siguiente:
RunAsDate intercepta las llamadas a la API del kernel que devuelven la fecha y hora actuales (GetSystemTime, GetLocalTime, GetSystemTimeAsFileTime) y reemplaza la fecha/hora actual con la fecha/hora que especifique.
En Linux, tiene algunas opciones para lograr lo mismo:
-
Si puede obtener una versión de Windows del programa, es posible que pueda ejecutar RunAsDate en Wine (pero tenga cuidado con un error reciente).
-
Encuentre una biblioteca de contenedores para hacer esto, o escriba la suya propia. Algunas opciones se dan a continuación.
-
Utilice una máquina virtual. Esto es excesivo, pero dado que un sistema operativo en la máquina virtual invitada está completamente separado del host subyacente, puede configurar la hora del sistema en algo completamente diferente. Puede ser más rápido de configurar que las otras opciones.
La opción 2 se puede lograr mediante diferentes métodos, según lo que intente ejecutar. La respuesta de DaveParillo a continuación se vincula a un enfoque de bricolaje que explica los diferentes métodos e incluye código para un ejecutable. Algunas otras opciones incluyen:
-
datefudge
, disponible en los repositorios de Debian/Ubuntu y otros lugares. -
Módulo perl Time-Fake, también en los repositorios de Debian como paquete
libtime-fake-perl
. -
Biblioteca de precarga de FakeTime (también conocida como
libfaketime
, enlace de carne fresca), una biblioteca que puede interceptar llamadas al sistema en archivos binarios vinculados dinámicamente. Disponible en los repositorios de Debian para Squeeze y Sid.
Tuve el mismo problema al encontrar una alternativa a RunAsDate en Linux Ubuntu y llegué a esta solución.
Creé un lanzador del programa que quiero usar con RunAsDate. Si el software que desea usar se llama Foo, cree un archivo en su escritorio llamado Foo.desktop y modifíquelo usando gedit o un editor de texto similar. Luego agréguele las siguientes líneas de código:
[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
Solo necesita cambiar la información de Nombre, Comentario e Icono con sus recursos reales.
La opción Exec cambia la fecha del sistema para la sesión mientras usa la aplicación, luego, cuando termina, automáticamente vuelve a sincronizar la fecha del sistema.