Windows下R CMD check --as-cran找不到diff工具的解决方案咨询
解决Windows下R CMD check缺少diff工具的问题(无需安装Rtools)
针对你遇到的'diff' not found错误,这里有几个不用装Rtools的可行方案:
利用Git自带的diff工具
如果你已经安装了Git(多数企业IT环境不会限制这个),找到Git安装目录下的bin文件夹(通常是C:\Program Files\Git\bin),把这个路径添加到系统环境变量PATH的最前端。之后重启命令行窗口,再运行R CMD check --as-cran mypkg_0.1.tar.gz,R就能找到Git自带的diff工具——它和Unix原生diff输出格式完全一致,能完美兼容R的检查逻辑,这是最省心的方案。写个替代diff的cmd脚本
要是没装Git,你可以自己写个简单的cmd脚本模拟diff功能,让R能正常调用:- 新建文本文件,命名为
diff.cmd,内容如下:@echo off powershell -Command "Compare-Object (Get-Content %1) (Get-Content %2) -IgnoreWhiteSpace | Out-String -Width 4096" - 把这个
diff.cmd放到一个已在系统PATH中的文件夹(比如C:\Windows\System32,或者你自己用户目录下的文件夹,先把该文件夹加到PATH)。
这个脚本调用PowerShell的Compare-Object命令,忽略空白字符对比文件,输出格式接近diff,能满足R检查的需求。
- 新建文本文件,命名为
临时跳过示例检查(仅用于完成步骤)
如果你只是为了完成《Writing R Extensions》1.3.1节的第18步,不需要完整的CRAN级检查,可以加--no-examples参数跳过示例对比:R CMD check --as-cran --no-examples mypkg_0.1.tar.gz注意:这个方法只是绕开问题,不是真正解决,正式提交R包时不能这么用。
另外解释下为啥你之前用fc设置别名不行:Windows的fc命令输出格式和Unix的diff完全不同,R的检查逻辑依赖diff的输出格式判断示例是否一致,直接别名fc会导致R无法解析对比结果,自然无效。
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

