MacOS下安装tidyverse时遭遇404及tar解压错误的解决方法咨询
MacOS下安装tidyverse时遭遇404及tar解压错误的解决方法咨询
你遇到的问题是典型的CRAN镜像包同步延迟+架构适配问题,先把你碰到的错误日志整理出来方便对照:
When I run install.packages("tidyverse") R returns the following also installing the dependencies ‘broom’, ‘modelr’ trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/broom_1.0.11.tgz' trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/modelr_0.1.11.tgz' trying URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/tidyverse_2.0.0.tgz' tar: Error opening archive: Failed to open '/var/folders/9t/82sm5m050mn69kjjkyxv1l5r0000gn/T//RtmpvybYFj/downloaded_packages/broom_1.0.11.tgz' Error: file ‘/var/folders/9t/82sm5m050mn69kjjkyxv1l5r0000gn/T//RtmpvybYFj/downloaded_packages/broom_1.0.11.tgz’ is not a macOS binary package In addition: Warning messages: 1: In .rs.downloadFile(url = c("https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/broom_1.0.11.tgz", : cannot open URL 'https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/broom_1.0.11.tgz': HTTP status was '404 Not Found' 2: In .rs.downloadFile(url = c("https://cran.rstudio.com/bin/macosx/big-sur-arm64/contrib/4.5/broom_1.0.11.tgz", : some files were not downloaded 3: 'tar' returned non-zero exit code 1
核心问题是CRAN官方镜像的ARM64架构(Big Sur)R 4.5版本下,broom_1.0.11的二进制包尚未上线,导致下载失败,进而触发后续的tar解压错误。下面是几个针对性的解决办法:
1. 切换到同步及时的CRAN镜像
国内的CRAN镜像(如清华、中科大)通常同步速度更快,可能已经有了适配的二进制包:
# 临时设置清华CRAN镜像 options(repos = c(CRAN = "https://mirrors.tuna.tsinghua.edu.cn/CRAN/")) # 重新安装tidyverse install.packages("tidyverse")
如果用RStudio,也可以通过可视化操作修改:
- 点击顶部菜单「Tools」→「Global Options」
- 切换到「Packages」标签页,点击「Change」按钮
- 选择国内的镜像源(比如「Tsinghua University」),保存后再执行安装命令
2. 改用源码安装方式
当二进制包缺失时,源码安装是最稳妥的备选方案,不过需要先安装Mac的编译工具:
- 打开Mac终端,执行以下命令安装Xcode命令行工具:
xcode-select --install
- 回到R/RStudio,运行源码安装命令:
install.packages("tidyverse", type = "source")
3. 降级R到稳定版本
你当前使用的R 4.5属于较新的版本,部分包的ARM64二进制包可能还没完成适配。如果上面两种方法都无效,可以考虑降级到R 4.4.x系列稳定版,再尝试安装tidyverse——稳定版本的包生态适配会更完善。
4. 单独安装依赖包再安装tidyverse
可以先手动安装报错的broom包(用源码方式),再安装tidyverse:
# 先安装broom install.packages("broom", type = "source") # 再安装tidyverse install.packages("tidyverse")




