R包检查时调用R CMD build失败:提示R不可无路径使用
解决R CMD build在检查环境中的路径错误
问题根源
在devtools::check模拟的CRAN检查环境中,直接调用无绝对路径的R命令会被限制,必须指定当前运行的R进程完整路径,否则会触发'R' should not be used without a path的错误。
解决方案
修改代码,用R基础函数获取当前R的绝对路径,替换命令中的R,同时处理路径空格问题:
# 获取当前R可执行文件的绝对路径 r_executable <- file.path( R.home("bin"), ifelse(.Platform$OS.type == "windows", "R.exe", "R") ) # 构建带绝对路径的build命令 build_cmd <- sprintf("%s CMD build %s", shQuote(r_executable), tarball) # 执行命令 a <- system(build_cmd, intern = TRUE)
关键说明
- 全程使用R基础函数实现,无需引入
devtools或pkgbuild依赖,保持元包轻量化。 shQuote()用于给路径添加引号,避免Windows系统中路径含空格(如Program Files)导致命令执行失败。R.home("bin")会跨平台返回当前R的二进制文件目录,兼容Windows、macOS和Linux系统。
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

