无法从源码重装R包MODifieRDev:gcc编译报错求助
问题描述
- 使用
renv环境,此前可多次卸载重装GitHub上的MODifieRDev包,但现在通过devtools::install_git()重新安装时遇到gcc编译错误 - 可通过
renv::install("MODifieRDev")从缓存重装,但不符合需求 - 操作环境为公司共享服务器,可能存在环境变化但无法排查
错误日志
> devtools::install_git(url = "https://github.com/ddeweerd/MODifieRDev.git") Downloading git repo https://github.com/ddeweerd/MODifieRDev.git '/usr/bin/git' clone --depth 1 --no-hardlinks https://github.com/ddeweerd/MODifieRDev.git /tmp/RtmpqwDAXr/file3ca29d3d72d664 Cloning into '/tmp/RtmpqwDAXr/file3ca29d3d72d664'... remote: Enumerating objects: 93, done. remote: Counting objects: 100% (93/93), done. remote: Compressing objects: 100% (89/89), done. remote: Total 93 (delta 8), reused 37 (delta 2), pack-reused 0 Unpacking objects: 100% (93/93), 2.79 MiB | 981.00 KiB/s, done. ── R CMD build ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── ✔ checking for file ‘/tmp/RtmpqwDAXr/file3ca29d3d72d664/DESCRIPTION’ ... ─ preparing ‘MODifieRDev’: ✔ checking DESCRIPTION meta-information ... ─ cleaning src ─ checking for LF line-endings in source and make files and shell scripts ─ checking for empty or unneeded directories ─ building ‘MODifieRDev_0.1.3.tar.gz’ Installing package into ‘/home/myuser/HHH/renv/library/R-4.2/x86_64-pc-linux-gnu’ (as ‘lib’ is unspecified) * installing *source* package ‘MODifieRDev’ ... ** using staged installation ** libs gcc -I"/opt/somefolder/software/installed/R-4.2.2-focal/lib/R/include" -DNDEBUG -I'/home/myuser/HHH/renv/library/R-4.2/x86_64-pc-linux-gnu/Rcpp/include' -I/usr/local/include -fpic -g -O2 -c MODifieRDev_init.c -o MODifieRDev_init.o gcc -I"/opt/somefolder/software/installed/R-4.2.2-focal/lib/R/include" -DNDEBUG -I'/home/myuser/HHH/renv/library/R-4.2/x86_64-pc-linux-gnu/Rcpp/include' -I/usr/local/include -fpic -g -O2 -c complex.c -o complex.o gcc -shared -L/opt/somefolder/software/installed/R-4.2.2-focal/lib/R/lib -L/usr/local/lib -o MODifieRDev.so MODifieRDev_init.o complex.o [1] "/tmp/Rtmpr2Y1zB/R.INSTALL3ca87510a75a87/MODifieRDev/src" -L/opt/somefolder/software/installed/R-4.2.2-focal/lib/R/lib -lR gcc: error: [1]: No such file or directory gcc: error: "/tmp/Rtmpr2Y1zB/R.INSTALL3ca87510a75a87/MODifieRDev/src": No such file or directory make: *** [/opt/somefolder/software/installed/R-4.2.2-focal/lib/R/share/make/shlib.mk:10: MODifieRDev.so] Error 1 ERROR: compilation failed for package ‘MODifieRDev’ * removing ‘/home/myuser/HHH/renv/library/R-4.2/x86_64-pc-linux-gnu/MODifieRDev’ Warning message: In i.p(...) : installation of package ‘/tmp/RtmpqwDAXr/file3ca29d289d588e/MODifieRDev_0.1.3.tar.gz’ had non-zero exit status
解决思路
从错误日志看,gcc编译命令里混入了[1]和无效路径字符串,属于命令解析异常,可按以下步骤排查:
清理临时文件重试
运行unlink(tempdir(), recursive = TRUE)清理R临时目录,重启R后再次执行devtools::install_git();也可手动删除日志中提到的临时目录(如/tmp/RtmpqwDAXr/、/tmp/Rtmpr2Y1zB/)检查并重置环境变量
运行Sys.getenv(c("MAKEFLAGS", "LDFLAGS", "CPPFLAGS"))查看是否有异常字符混入环境变量,若发现问题,用Sys.unsetenv()清除对应变量(比如Sys.unsetenv("MAKEFLAGS"))后再尝试安装手动克隆编译安装
避开devtools的命令解析环节:- 手动克隆仓库:
git clone https://github.com/ddeweerd/MODifieRDev.git - 进入克隆目录,运行
R CMD build .生成tar.gz包 - 执行
R CMD INSTALL MODifieRDev_0.1.3.tar.gz手动安装
- 手动克隆仓库:
验证gcc与R版本兼容性
运行gcc --version和R --version确认版本适配(R 4.2.2建议搭配gcc 9及以上版本),若gcc版本过低,联系管理员升级,或临时指定高版本gcc路径:Sys.setenv(CC="/usr/bin/gcc-10")重置renv环境(谨慎操作)
备份renv.lock后,运行renv::deactivate()再renv::init()重新初始化环境,之后尝试安装
内容的提问来源于stack exchange,提问作者gaspanic
相关产品推荐
相关产品推荐

