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

R语言

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


文章目录


一、起因

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

  • 具体错误:

r 复制代码
** 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、确认问题源

r 复制代码
> Sys.which("make")
make 
"" 

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

2.2、安装RTools

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

  • 方法一:在线安装
r 复制代码
install.packages("installr")
install.packages("stringr")###依赖包
library(stringr)
library(installr)
## 需要用installr安装RTools
install.Rtools()
  • 方法二 :本地安装
    去官网找与当前R版本匹配的安装包,除开需要将RTools安装在R(Rstudio)一个目录中外,其他一直点击下一步就行了。

2.3、与R(/Rstudio)绑定

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

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

完成之后,重启一下Rstudio

  • 方法二 :配置环境变量
    直接配置环境变量,开机就读取这个目录。
  • 这里以Windows10为例,在Windows设置中点击系统
  • 选择关于 ---高级系统设置
  • 选择环境变量
  • 编辑Path ,在Path中添加RTools的路径

  • 如果先前有下载过RTools,需要检查并清除掉个人变量系统变量中旧版本的RTools的目录路径。

2.4、验证可行性

r 复制代码
> 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真的存在啊,我翻来倒去都没找到。无奈,换个目录吧,在环境变量里,把这个目录加进去,也能成功加载。虽然最后还是解决了问题,但这种看不见的还解决不了的东西,真叫人心累。

相关推荐
芊寻(嵌入式)19 分钟前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
一颗松鼠28 分钟前
JavaScript 闭包是什么?简单到看完就理解!
开发语言·前端·javascript·ecmascript
有梦想的咸鱼_30 分钟前
go实现并发安全hashtable 拉链法
开发语言·golang·哈希算法
海阔天空_201335 分钟前
Python pyautogui库:自动化操作的强大工具
运维·开发语言·python·青少年编程·自动化
天下皆白_唯我独黑43 分钟前
php 使用qrcode制作二维码图片
开发语言·php
夜雨翦春韭1 小时前
Java中的动态代理
java·开发语言·aop·动态代理
小远yyds1 小时前
前端Web用户 token 持久化
开发语言·前端·javascript·vue.js
何曾参静谧1 小时前
「C/C++」C/C++ 之 变量作用域详解
c语言·开发语言·c++
q567315231 小时前
在 Bash 中获取 Python 模块变量列
开发语言·python·bash
许野平2 小时前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono