冷冻工厂

V1

2022/10/08阅读:38主题:科技蓝

R 包安装常见问题解决

1. 导读

日常中使用R语言进行数据分析,或者画图的读者,相信一定逃不过的一个操作就是安装R包,那么在R包安装过程中,可能会出现一些问题,有时候这些问题并不是R包仓库下载过程中网络和R语言本身的问题,而是系统中缺失一些配置或者编译器,本文将介绍一种常见的错误,并给以解决办法。

2. 问题

gfortran
gfortran

最近一位读者,在进行常规的转录组分析时,要在R中进行差异分析,因此需要安装DESeq2这个包,但是在安装过程中出现上面了这种情况,导致包没有安装成功。细心的读者,可以看见,小编已经在上图中,用红色方框框选出来了,就是:/bin/gfortran: No such file or directory。其实这个错误与/usr/bin/ld: cannot find -lxxxx可以算是一类错误。R在安装你所需要的包时,可能会需要进行编译,编译的过程中,需要使用一些系统中的编译器和库文件,如果缺失这些文件,就会导致包安装不上,其实R中安装包,出现安装问题,大多都是这个原因(不包括包的版本之间出现冲突的情况)。下面就介绍如何解决这个错误。

3. 解决办法

首先检索安装过程中出现Error的区域,查看有XXX: No such file or directory或者cannot find -lxxxx的区域,确定缺少的文件或者依赖是什么。下面以上面的gfortran为例,进行排查和解决。

3.1. 安装

首先,我们需要检查系统中是否有对应的文件或者安装了依赖

# 在终端中,输入下面两条命令
# 读者在解决自己的错误时,请将`fortran`替换为自己对应的

ldconfig -p | grep fortran 

which fortran
  • 有结果
存在
存在

一种情况就是上图这种,文件本身是存在的,只不过系统在使用过程中,可能存在:

  1. 版本不对应。
  2. 系统无法找到文件正确的位置

如果出现上面这个情况,请直接看3.2. 版本检测3.3. 更新链接

  • 没结果
不存在
不存在

如何出现上图这种,终端返回not found,那么代表系统中是不存在该文件或依赖的。其实这种情况更好解决,只需要在终端中安装即可,操作如下:

# linux 下
sudo apt update  # 更新
sudo apt install gfortran  # 安装

# mac 下
brew install gcc  # mac下 gcc 包含了 gfortran

# 读者需要将`gfortran`,换为自身缺失的软件,再去R中重新安装包即可。

注意:对于使用Mac的读者,这边建议将brew设置为国内源,可以参考: Mac 下 brew 切换为国内源[1]

3.2. 更新链接

如果在3.1.安装中发现,依赖是存在的,那么很有可能是系统中文件的链接不对,只需要重新添加一个符合链接即可。

# 在3.1.的结果中,查看文件的原始位置,并建立链接

sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/x86_64-linux-gnu/libgfortran.so

# 此处地址由第一步检查而来
# 链接完了,可以去`R`中重新安装,如果报错请参考`3.3.版本检查`

3.3. 版本检查

如果3.2.版本检查没有解决问题的话,就只有可能是软件的版本之间有冲突。对于这个例子的gfortran,它很有可能与gcc的版本之前存在冲突,因此需要将二者的版本安装为一致的。对于读者来说,想要确定冲突的软件,可以在百度中以需要安装的软件和冲突为关键词,确定可能冲突的软件。

gcc --version  # 查看 gcc 版本

gfortran --version  # 查看 gfortran 版本 

# 如果不一致则,重新安装gcc或gfortran为一致版本,再重新安装R包即可。

因此读者们在安装R包时,如果出现安装不成功的情况,一定要仔细阅读安装过程中打印出来的日志,查看问题的根源,在浏览器中检索,一般都有解决方案。

参考资料

[1]

Mac换源: https://cloud.tencent.com/developer/article/1614039

分类:

工具介绍

标签:

开源软件

作者介绍

冷冻工厂
V1

欢迎关注同名公众号“冷冻工厂”