Linux/Mac 系统 R 包安装失败怎么办?
R 语言好用的地方之一在于有很多包帮我们把复杂问题都实现了,使用时只需要一个函数就可以完成大量计算工作。但也存在一个问题,包的依赖很多,依赖很多其它包,依赖很多底层工具。因此在 Linux/Mac 等系统安装时常常会出现少了一些头文件(*.h
) 或库文件而报错(*.so
), 如下面的报错;
在ERROR MESSAGE
部分,R 给我们的提示还是很清楚的:fatal error: hb-ft.h: 没有那个文件或目录
缺少这个头文件 (.h 代表 header file)。
在ANTICONF
部分,R 贴心的给出了不同系统下哪些软件包包含这个头文件
根据上面的提示,你就知道不同的系统怎么进行安装了。
确定自己的操作系统的版本
运行lsb_release -a
获得输出如下,知道操作系统是centos
根用户下安装
确定了操作系统,拷贝粘贴对应的安装命令。注意:
- 需要有根用户 (root) 权限
- 这个命令是在 terminal 下运行的
常见错误 1: 在 R 中安装 (注意看开头的>
, 这是 R 中运行代码的标识)
解析:缺失的软件不是 R 包,而是 Linux 系统中的包,当做 R 包去安装时不对的。
常见错误 2: 还是在 R 中安装(注意看开头的>
, 这是 R 中运行代码的标识)
解析: yum 是 centos、fedora 下的包管理器,应该在终端 (terminal) 下运行。
常见错误 3:用错了包安装工具 (注意看开头 (不算开头,输入的命令前面的标识)的$
, 这是 Linux 终端中运行代码的标识)
解析:判断错了操作系统的版本,这个系统是 ubuntu,没有 yum,应该用 apt-get
常见错误 4:没有权限 (注意看开头 (不算开头,输入的命令前面的标识)的$
, 这是 Linux 终端中运行代码的标识)
解析:应该用 sudo 或切换为 root 用户运行。正确写法如下 (注意看开头 (不算开头,输入的命令前面的标识)的#
, 这是 Linux 终端中root 用户运行代码的标识):
问题又出来了
一段时间后(取决于网速,可能几分钟),安装好了,继续回到 R 里面,再次安装 R 包 (注意看开头的>
, 这是 R 中运行代码的标识)
不是前面的解决无效,大家要仔细看,这次除了新的错误,提示还缺少其它的文件,并依旧给出了如何进行安装,ANTICONF
部分。
根据提示,再来一次操作:
一段时间后(取决于网速,可能几分钟),安装好了,继续回到 R 里面,再次安装 R 包 (注意看开头的>
, 这是 R 中运行代码的标识)
这次比较幸运,直接安装成功了,有时还需要再来一遍或着多变,缺什么装什么。
如果只提示缺少 .h 或 .so 未给提供怎么安装怎么办?
也有的时候,软件没这么智能,就孤零零的告诉你:
怎么知道哪个软件包里面有hb-ft.h
呢?
CentOS 下运行这个命令, 输出harfbuzz-devel
里面包含hb-ft.h
:
继续安装
Ubuntu 下可以试试apt-file search hb-ft.h