使用devtools从GitHub安装R包ASCI失败的问题排查
SCCWRP/ASCI R包安装故障解决
问题相关基础信息
故障场景:Windows 10系统、R 4.1.3环境下,受工作网络代理限制,无法正常安装用于基于藻类群落组成开展溪流健康评估的SCCWRP/ASCI包,本地zip安装也无响应。
运行环境详情:
- Session info ------------------------------------------------------------------------------ setting value version R version 4.1.3 (2022-03-10) os Windows 10 x64 (build 19044) system x86_64, mingw32 ui RStudio language (EN) collate English_United States.1252 ctype English_United States.1252 tz America/Los_Angeles date 2022-06-28 rstudio 2022.02.3+492 Prairie Trillium (desktop) pandoc NA
已尝试操作与对应报错
GitHub远程安装尝试
执行的安装代码:
library(devtools) curl::ie_proxy_info() install_github('SCCWRP/ASCI')
因系统限制访问GitHub必须配置curl,运行后返回报错:
Downloading GitHub repo SCCWRP/ASCI@HEAD SCCWRP-ASCI-82bd614/mmilkup.RData: truncated gzip input tar.exe: Error exit delayed from previous errors. Error: Failed to install 'ASCI' from GitHub: Does not appear to be an R package (no DESCRIPTION) In addition: Warning messages: 1: In utils::untar(tarfile, ...) : ‘tar.exe -xf "C:\Users\nmack\AppData\Local\Temp\RtmpOcZ5L9\file53d87e726d5b.tar.gz" -C "C:/Users/nmack/AppData/Local/Temp/RtmpOcZ5L9/remotes53d8228135e9"’ returned error code 1 2: In system(cmd, intern = TRUE) : running command 'tar.exe -tf "C:\Users\nmack\AppData\Local\Temp\RtmpOcZ5L9\file53d87e726d5b.tar.gz"' had status 1
此前已按包作者建议将DESCRIPTION文件的Description字段精简为单行,且在RStudio中打开项目.Rproj文件按Ctrl+Shift+B可正常构建包,但远程安装仍报相同错误。
本地zip包安装尝试
执行的本地安装代码:
install.packages("C:/Users/nmack/Downloads/ASCI-master.zip", repos = NULL, type = "win.binary")
运行后安装窗口快速闪过,无任何报错或提示,包未安装成功。
根因分析与解决步骤
核心报错原因
- 远程安装时出现的
truncated gzip input提示,本质是代理环境下GitHub自动打包的tar.gz源码包下载不完整,Windows自带tar工具解压失败,才触发了no DESCRIPTION的假报错——不是包本身缺少DESCRIPTION文件,是压缩包损坏读不到对应文件,精简DESCRIPTION字段解决不了下载截断的问题。 - 本地zip安装静默失败是参数写错了:从GitHub直接下载的
ASCI-master.zip是源码包,不是Windows平台预编译的二进制包,指定type = "win.binary"会让安装流程直接识别失败静默退出,不会返回任何有效提示。
按顺序操作即可完成安装
- 优先用本地源码安装,成功率最高
第一步先修正本地安装参数,不要指定二进制类型,源码包安装要选source类型,运行:
运行前确认所有依赖包已经提前安装完成,出现编译提示按默认选项确认即可。# 注意把路径替换成你本地zip包的实际存放路径 install.packages("C:/Users/nmack/Downloads/ASCI-master.zip", repos = NULL, type = "source") - 如果上述代码运行报错,手动解压后安装
不要用Windows自带的解压工具处理压缩包,换7-Zip等第三方解压工具把ASCI-master.zip解压到纯英文、无空格、无中文的路径下,避免大文件解压截断,之后运行:# 替换成你解压后ASCI-master文件夹的实际路径 devtools::install("C:/your/path/to/ASCI-master") - 必须用远程安装的话先调整网络配置
先配置代理参数、延长下载超时时间、指定可靠的下载方法,再执行安装命令:# 把代理地址、端口替换成你工作环境实际可用的代理参数 Sys.setenv(http_proxy = "http://代理地址:端口", https_proxy = "http://代理地址:端口") options(timeout = 600) # 将下载超时时间调整为10分钟,避免大文件下载中断 options(download.file.method = "libcurl") # 跳过 vignettes 构建减少下载和编译负担 devtools::install_github('SCCWRP/ASCI', build_vignettes = FALSE)
提示:如果远程安装仍报解压错误,先去R临时目录找到下载的tar.gz包,对比GitHub上显示的仓库压缩包大小,如果文件体积明显偏小就是代理截断了下载,直接换本地安装即可,不用反复尝试远程安装浪费时间。
内容的提问来源于stack exchange,提问作者Nathan Mack
相关产品推荐
相关产品推荐

