R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found

R语言

R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found


文章目录

  • R语言
  • 一、起因
  • 二、具体步骤
    • 2.1、确认问题源
    • 2.2、安装RTools
    • 2.3、与R(/Rstudio)绑定
    • 2.4、验证可行性
  • 三、疑惑


一、起因

R语言在包的安装上是真的方便,一句install.packages()就可以实现绝大多数包的安装。可惜,越简单的东西,报起错来也越是要命。

  • 我在加载Seurat包时,报错提醒我缺少依赖包rgeos。
    • 行呗,那就install.packages()呗。
  • 开始报错 package ‘rgeos’ is not available for this version of R”。
    一般原因有两个:
    1. 该版本的R数据库中不含该包(淘汰或改名了)
    2. 该软件包可用,但不适用于当前版本的R或操作系统类型(Unix/Windows)
    • 解决办法
    1. 用Bio conductor或者Github的安装方法安装,具体操作
    2. install.packages(pkgs, repos = “换个镜像源”)
    3. 直接去官网下载压缩包,进行本地安装
  • 再加载一遍Seurat包,开始报错:Error: package or namespace load failed for ‘Seurat’ in library.dynam(lib, package, package.lib): 没有这个DLL ‘rgeos’:是不是没有为此架构安装?好家伙,还是没安上。我怀疑了一下,是不是包的版本和软件版本有冲突,或者rgeos和Seurat两个包的版本起冲突了,更改了几次,还是报错。于是我就去看了下,安装包时输出的log。
  • 报错Warning in system(cmd) : ‘make‘ not found
  • 具体错误:
** installing *source* package 'rgeos' ...
** 成功将'rgeos'程序包解包并MD5和检查
** using staged installation
** libs

Warning in system(cmd) : 'make' not found
ERROR: compilation failed for package 'rgeos'
* removing '.../R/4.2/library/rgeos'
Warning in install.packages :
installation of package ‘rgeos’ had non-zero exit status
  • 这个make命令是RTools中的,我更新了RTools,配置了make命令的环境变量就可以本地安装rgeos包了。
    • Rtools:一个用于Windows操作系统的软件包,它为R编程语言提供了一套工具和依赖项,以便在Windows上进行编译和构建R软件包。 Rtools的安装和配置使得开发人员能够在Windows环境中更轻松地编译和构建R包,同时也方便了使用C/C++或Fortran等其他编程语言编写的扩展包的安装和使用。
    • 下面是具体步骤

二、具体步骤

2.1、确认问题源

> Sys.which("make")
make 
"" 

确认找不到make命令,make命令在RTools中

2.2、安装RTools

安装与当前R版本匹配的RTools版本,有两种方法(如果先前安装过RTools,先卸载RTools)

  • 方法一:在线安装
install.packages("installr")
install.packages("stringr")###依赖包
library(stringr)
library(installr)
## 需要用installr安装RTools
install.Rtools()
  • 方法二:本地安装
    去官网找与当前R版本匹配的安装包,除开需要将RTools安装在R(Rstudio)一个目录中外,其他一直点击下一步就行了。
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第1张图片
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第2张图片

2.3、与R(/Rstudio)绑定

假如忘记安装在同一目录下,或者R(/Rstudio)还是找不到make命令在哪的话,我们就需要将二者进行绑定,告诉它RTools的路径在哪。有两种方法。

  • 方法一:创建一个Renviron文件,指明Rtools主页的路径
    在Rstudio中运行:(这里以RTools 4.3为例)
writeLines('PATH="${RTOOLS43_HOME}\\usr\\bin;${PATH}"', con = "~/.Renviron")

完成之后,重启一下Rstudio

  • 方法二:配置环境变量
    直接配置环境变量,开机就读取这个目录。
  • 这里以Windows10为例,在Windows设置中点击系统
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第3张图片
  • 选择关于高级系统设置
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第4张图片
  • 选择环境变量
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第5张图片
  • 编辑Path,在Path中添加RTools的路径
    R语言实操记录——R包无法安装,报错:Warning in system(cmd) : ‘make‘ not found_第6张图片
    在这里插入图片描述
  • 如果先前有下载过RTools,需要检查并清除掉个人变量系统变量中旧版本的RTools的目录路径。

2.4、验证可行性

> Sys.which("make")
                              make 
"c:\\rtools43\\usr\\bin\\make.exe" 

install.packages("C:/Users/16748/Downloads/rgeos_0.6-4.tar.gz", repos = NULL, type = "source")

可以成功本地安装了。

三、疑惑

虽然解决了问题,可是我还是存在疑惑。在知道是RTools那边出问题后,我先是在应用程序中,找到了RTools,确定我安装了与Rstudio当前版本匹配的RTools版本,并且前不久才刚刚用过本地安装,理论上不应该会出错。想不通就干脆卸了重装好了,在卸载RTools时,发现应用程序中有它,但是卸载时提示找不到该程序,进入文件目录也确实找不到该包,重启电脑,重新加载还是一样的问题。emmm,好吧,就当它不存在吧,我换个版本吧。为了和新版本的RTools匹配,我又升级了Rstudio,R到最新版。RTools需要和R包的库放在一个目录下,方便加载,但是在安装新版时,提示当前目录下已安装过RTools,请换个目录。emmm,所以旧版的RTools真的存在啊,我翻来倒去都没找到。无奈,换个目录吧,在环境变量里,把这个目录加进去,也能成功加载。虽然最后还是解决了问题,但这种看不见的还解决不了的东西,真叫人心累。

你可能感兴趣的:(R语言,r语言,开发语言)