In Microsoft’s Windows Subsystem for Linux (WSL or WSL2), there is not system
framework, so utilities that depend on it fail. This includes timedatectl which
R uses in Sys.timezone(). The timedatectl utility is present on Linux systems
installed under WSL/WSL2, but is non-functional. So, when Sys.timezone() checks
for Sys.which("timedatectl"), it receives a false positive. The subsequent
methods after this if () do work, however.
This can be fixed if line 42 of Sys.timezone() were changed from:
if (nzchar(Sys.which("timedatectl"))) {
to:
if (nzchar(Sys.which("timedatectl")) && !grepl("microsoft", system("uname -r",
intern = TRUE), ignore.case = TRUE)) {
"uname -r" returns for example:
"5.4.72-microsoft-standard-WSL2"
So checking for "microsoft" or "WSL" would probably work.
Brenton Wiernik
[[alternative HTML version deleted]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel