Windowsだけで起こるこのバグのせいでinstall.packages()
が失敗するという話があって気になって調べていた。
17261 – file.info returns
なんか色々調べてたら、とりあえずそのディレクトリでなにかのプログラムが走っていると(?)、mtime
がNA
になることがわかった。
dir.create("test") abs_path <- normalizePath("test") # これはうまくいく file.info(abs_path) #> size isdir mode mtime ctime #> C:\\Users\\user1\\documents\\test 0 TRUE 777 2017-04-30 08:45:59 2017-04-30 08:44:04 #> atime exe #> C:\\Users\\user1\\documents\\test 2017-04-30 08:45:59 no # working directoryをそこに移すとうまくいかない # (R以外の別のプログラムをそこで立ち上げても同じっぽい) setwd(abs_path) file.info(abs_path) #> size isdir mode mtime ctime atime exe #> C:\\Users\\user1\\documents\\test 0 TRUE 777 <NA> <NA> <NA> no
実際、この件を修正したコミットに、
Now file timestamps can be obtained even when file is in use.
(Use more robust options in CreateFileW in do_fileinfo (Windows only). · wch/r-source@2ecaaef · GitHub)
と書かれているので、ファイルが使用中だとだめっぽい。とはいえ、なぜこれが起こるのかは謎だし、回避方法なんかあるのかな…。詳しい人教えてください。
ちなみに、このバグを踏んでしまうけどどうしてもR 3.4.0の機能を使いたい、という人は↓から開発版のRをインストールするといいらしいけど、まあ安定版ではないわけであんまりオススメはしません。
https://cran.r-project.org/bin/windows/base/R-3.4.0patched-win.exe