You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R更新后无法安装包:新位置重装及编译问题求助

解决R更新后包安装失败与编译器版本不匹配问题

问题背景

我是R新手,有少量使用经验。更新R和RStudio后所有包无法安装,以安装dplyr为例出现编译失败错误:

> install.packages("dplyr")

  There is a binary version available but the source version is later:
      binary source needs_compilation
dplyr 1.0.10  1.1.0              TRUE

Do you want to install from sources the package which needs compilation? (Yes/no/cancel) Yes
installing the source package ‘dplyr’

trying URL 'https://cran.rstudio.com/src/contrib/dplyr_1.1.0.tar.gz'
Content type 'application/x-gzip' length 1068347 bytes (1.0 MB)
==================================================
downloaded 1.0 MB

* installing *source* package ‘dplyr’ ...
** package ‘dplyr’ successfully unpacked and MD5 sums checked
** using staged installation
** libs
/usr/local/Cellar/gcc/9.2.0/bin/g++-7 -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG   -I/usr/local/include   -fPIC  -Wall -g -O2  -c chop.cpp -o chop.o
/bin/sh: /usr/local/Cellar/gcc/9.2.0/bin/g++-7: No such file or directory
make: *** [chop.o] Error 127
ERROR: compilation failed for package ‘dplyr’
* removing ‘/Library/Frameworks/R.framework/Versions/4.2/Resources/library/dplyr’
* restoring previous ‘/Library/Frameworks/R.framework/Versions/4.2/Resources/library/dplyr’
Warning in install.packages :
  installation of package ‘dplyr’ had non-zero exit status

The downloaded source packages are in
    ‘/private/var/folders/k7/pbrcjpr517x06fhvnkvbq0nc0000gp/T/RtmpAODLeZ/downloaded_packages’
> 

排查结果

经检查,R试图调用旧版本g++-7,但终端显示当前gcc版本为12.2.0,对应g++-12:

(base) Liams-MacBook-Pro:~ lessig7$ brew list gcc
/usr/local/Cellar/gcc/12.2.0/bin/c++-12
/usr/local/Cellar/gcc/12.2.0/bin/cpp-12
/usr/local/Cellar/gcc/12.2.0/bin/g++-12
/usr/local/Cellar/gcc/12.2.0/bin/gcc-12
/usr/local/Cellar/gcc/12.2.0/bin/gcc-ar-12
/usr/local/Cellar/gcc/12.2.0/bin/gcc-nm-12
/usr/local/Cellar/gcc/12.2.0/bin/gcc-ranlib-12
/usr/local/Cellar/gcc/12.2.0/bin/gcov-12
/usr/local/Cellar/gcc/12.2.0/bin/gcov-dump-12
/usr/local/Cellar/gcc/12.2.0/bin/gcov-tool-12
/usr/local/Cellar/gcc/12.2.0/bin/gfortran
/usr/local/Cellar/gcc/12.2.0/bin/gfortran-12
/usr/local/Cellar/gcc/12.2.0/bin/lto-dump-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-c++-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-g++-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-gcc-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-gcc-ar-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-gcc-nm-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-gcc-ranlib-12
/usr/local/Cellar/gcc/12.2.0/bin/x86_64-apple-darwin21-gfortran-12
/usr/local/Cellar/gcc/12.2.0/include/c++/ (806 files)
/usr/local/Cellar/gcc/12.2.0/lib/gcc/ (719 files)

错误尝试

我曾错误指定编译器路径作为包安装目录,导致权限错误:

install.packages("dplyr", lib="/usr/local/Cellar/gcc/12.2.0/bin/c++-12/Library/Frameworks/R.framework/Resources/include")

出现报错:

install.packages("dplyr", lib="/usr/local/Cellar/gcc/12.2.0/bin/c++-12/Library/Frameworks/R.framework/Resources/include")
Warning in install.packages :
  'lib = "/usr/local/Cellar/gcc/12.2.0/bin/c++-12/Library/Frameworks/R.framework/Resources/include"' is not writable
Would you like to use a personal library instead? (yes/No/cancel) 
Error in install.packages : unable to install packages
> 

install.packages("dplyr", lib="/usr/local/Cellar/gcc/12.2.0/bin/c++-12/Library/Frameworks/R.framework/Resources/include")

解决方案

1. 让R识别当前g++版本

  • 方法一:创建软链接映射旧编译器路径
    在终端执行以下命令,让R寻找的g++-7指向当前的g++-12:

    # 先创建旧版本gcc的bin目录(如果不存在)
    sudo mkdir -p /usr/local/Cellar/gcc/9.2.0/bin
    # 创建软链接
    sudo ln -s /usr/local/Cellar/gcc/12.2.0/bin/g++-12 /usr/local/Cellar/gcc/9.2.0/bin/g++-7
    
  • 方法二:修改R环境变量指定编译器
    在R控制台执行以下命令,临时指定编译器路径:

    Sys.setenv(CXX = "/usr/local/Cellar/gcc/12.2.0/bin/g++-12")
    Sys.setenv(CC = "/usr/local/Cellar/gcc/12.2.0/bin/gcc-12")
    

    若要永久生效,将上述两行代码添加到用户主目录下的.Rprofile文件中(没有则新建),每次启动R时会自动加载。

2. 正确安装R包

  • 使用默认路径安装:不要手动指定lib参数到编译器路径,直接执行默认安装命令:

    install.packages("dplyr")
    

    若提示权限不足,选择"yes"使用个人库(推荐),避免使用sudo修改系统目录权限。

  • 优先安装二进制版本:如果不想编译源码,直接指定安装二进制包,跳过源码编译步骤:

    install.packages("dplyr", type = "binary")
    

内容的提问来源于stack exchange,提问作者lwe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 07:15:27