侧边栏壁纸
博主头像
qiql博主等级

水能载舟,亦可赛艇

  • 累计撰写 33 篇文章
  • 累计创建 28 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

🍄Linux 平台 R 安装及调试指南【附安装脚本】

qiql
2022-07-15 / 0 评论 / 0 点赞 / 773 阅读 / 2,461 字

TIME: 2022年6月23日15:32:55
AUOTO: qiql
EMAIL: hi@qiql.net

0 R简介

R 是一个用于统计计算和图形的免费软件环境。它可以在各种 UNIX 平台(Windows 和 MacOS)上编译和运行[1]

R语言是一种自由软件编程语言与操作环境,主要用于统计分析、绘图以及数据挖掘。R本来由来自新西兰奥克兰大学的统计学家罗斯·伊哈卡罗伯特·杰特曼开发,现在由R核心小组负责开发,同时也有其他用户编写了诸多外挂的软件包。R以S语言为基础,其语法来自Scheme。R的后台程序大多由C语言FORTRAN语言和R自己写成。R语言是GNU计划的一个项目,所以其源代码可自由下载使用。R也有已编译的可执行文件版本可以下载,可在多种平台下运行,包括UNIX(也包括FreeBSDLinux)、WindowsMacOS。R可以以命令行操作,同时有人开发了几种图形用户界面,其中包括RStudio[8]Jupyter[2]

本教程针对的是非 ROOT 用户,非 conda 的 R 安装需求

1 下载 R

你可以到 R 项目官网上下载到 R ,但是由于一些原因,一般下载都会比较慢,清华大学镜像站提供了更为快速的下载通道:https://mirrors.tuna.tsinghua.edu.cn/CRAN/src/base/

本文以 4.0.5 版本为例进行 R 在linux上的安装及调试。

2 下载并安装 R 的五个依赖

安装 R 需要五个依赖,分别是zlib[3], bzip2[4], liblzma[5], pcre[6], curl[7],文末的参考链接给出了这五个依赖的下载地址。

本文在安装过程中选择的版本是:

依赖 本文选择的版本 R-4.0.5 要求最低的版本
zlib 1.2.12 1.2.5
bzip2 1.0.8 1.0.6
xz 5.2.4 5.0.3
pcre 8.32 8.32
curl 7.83.1 7.28

2.1 安装 zlib

tar -zxvf /to/your/path/pkgs/zlib-1.2.12.tar.gz -C /to/your/path/build
cd /to/your/path/zlib-1.2.12
./configure --prefix=/to/your/path/tool/zlib/1.2.12
make
make install

2.2 安装 bzip2

tar -zxvf /to/your/path/pkgs/bzip2-1.0.8.tar.gz -C /to/your/path/build
cd /to/your/path/build/bzip2-1.0.8
make -f Makefile-libbz2_so
# 修改MakeFile 中的 PREFIX字段
sed -i 's/PREFIX=\/usr\/local/PREFIX=to\/your\/path\/bzip2\/1.0.8/' ./Makefile
make
make install

2.3 安装 xz

tar -zxvf /to/your/path/pkgs/xz-5.2.4.tar.gz -C /to/your/path/build
cd /to/your/path/xz-5.2.4
./configure --prefix=/to/your/path/tool/xz/5.2.4
make
make install

2.4 安装 pcre

tar -zxvf /to/your/path/pkgs/pcre-8.32.tar.gz -C /to/your/path/build
cd /to/your/path/pcre-8.32
./configure --prefix=/to/your/path/tool/pcre/8.32 --enable-utf --enable-unicode-properties --enable-jit --disable-cpp
make
make install

2.5 安装 curl

tar -zxvf /to/your/path/pkgs/curl-7.83.1.tar.gz -C /to/your/path/build
cd /to/your/path/curl-7.83.1
./configure --prefix=/to/your/path/tool/curl/7.83.1 --with-openssl
make
make install

即可完成编译和安装

否则可能会报找不到需要的头文件和库文件的错误

3 安装 R 并配置环境

解压:

tar -zxvf /to/your/path/pkgs/R-4.0.5.tar.gz -C /to/your/path/build

进入到 R 的解压目录,执行以下命令以进行配置[8]

./configure --prefix=/to/your/path/r/4.0.5 --enable-R-shlib=yes --with-tcltk --with-x=no --with-pcre1 CPPFLAGS="-I/to/your/path/bzip2/1.0.8/include -I/to/your/path/zlib/1.2.12/include -I/to/your/path/xz/5.2.4/include -I/to/your/path/pcre/8.32/include -I/to/your/path/curl/7.83.1/include/curl" LDFLAGS="-L/to/your/path/xz/5.2.4/lib -L/to/your/path/zlib/1.2.12/lib/ -L/to/your/path/bzip2/1.0.8/lib/ -L/to/your/path/pcre/8.32/lib/ -L/to/your/path/curl/7.83.1/lib/"

如果报错说某些依赖的头文件或库文件不存在,可以依次进行以下检查:

  1. 检查自己 configure 参数中的路径是否都正确
  2. 检查各个依赖库是否都安装成功
  3. 使用 ldd 命令检查各个依赖库的依赖是否都存在

然后执行 make -j 进行并行编译

make -j 表示并行编译,假如读者的计算机有 24 个核心,那么就会调用起 24 个核进行并行编译,当然,也可以指定并行编译的核心数,比如 make -j 8 表示使用 8 个核心进行并行编译

编译完毕之后,执行 make install 开始安装,如果读者不是 root 用户且 configure 的 prefix 参数未指定,那么安装时可能会报错说没有权限复制文件,此时需要先make clean 然后重新 configure 并将 prefix 参数修改为读者可以写入的路径即可

如果遇到错误:

grep.c:(.text+0xb2): undefined reference to `pcre_jit_stack_alloc`
grep.c:(.text+0xdd): undefined reference to `pcre_assign_jit_stack`
grep.o: In function `do_strsplit`:
grep.c:(.text+0x1f8a): undefined reference to `pcre_free_study`
grep.o: In function `do_grep`:
grep.c:(.text+0x3ca5): undefined reference to `pcre_free_study`
grep.o: In function `do_gsub`:
grep.c:(.text+0x85c6): undefined reference to `pcre_free_study`
grep.o: In function `do_regexpr`:
grep.c:(.text+0xb3e6): undefined reference to `pcre_free_study'

笔者是通过将 pcre 的版本从8.45降低到 8.32 解决的,因为这样的错误很有可能是新版本添加了新的特性导致的

安装完毕之后,可以将 R 的bin目录添加至环境变量PATH中去

export PATH=/to/your/path/r/4.0.5/bin:$PATH

然后输入命令 R 即可进入 R 软件的欢迎界面!

image-20220624091625971

4 安装 R 软件包

如果计算机可以连接外网,那么可以在进入 R 之后,输入命令 install.packages(“包名”) 以安装相应的 R 包,如果无法连接外网,可以参考:R 语言中 4 种 R 包安装方式[9]

附录1 参考链接

附录2 安装脚本

#!bin/bash
### 本脚本为R软件的安装脚本,在执行本脚本之前,需要修改本文件中的一些配置
### 脚本作者:https://iqiql.com,当前时间:2022年6月24日16:29:38

### 开始指定/配置
## 指定 R 的安装包路径(默认与本脚本在同一目录)
r_pkg_dir=$(dirname $(readlink -f "$0"))
## 指定 gcc 的版本号
r_version=4.0.5
## 指定 gcc 的 build 目录【可选】(默认与安装包在同一路径)
r_build_dir=${r_pkg_dir}/build
## 指定 gcc 的安装目录
r_install_dir=/to/your/path/r/${r_version}
## 指定 gcc 的五个依赖的安装包目录【可选】(默认与本脚本在同一目录)
r_rely_pkg_dir=$(dirname $(readlink -f "$0"))
## 指定这五个依赖的 build 目录【可选】(默认与安装包在同一路径)
r_rely_build_dir=${r_rely_pkg_dir}/build
## 指定这五个依赖的安装目录
r_rely_install_dir=/to/your/path
## 指定 zlib 的版本号
zlib_version=1.2.12
## 指定 bzip2 的版本号
bzip2_version=1.0.8
## 指定 xz 的版本号
xz_version=5.2.4
## 指定 pcre 的版本号
pcre_version=8.32
## 指定 curl 的版本号
curl_version=7.83.1
### 指定完毕,配置完成

### 创建 r 的 build 目录
mkdir -p ${r_build_dir}
### 创建五个依赖的 r 目录
mkdir -p ${r_rely_build_dir}

## 开始安装五个依赖
## 1 安装zlib
tar -zxvf ${r_rely_pkg_dir}/zlib-${zlib_version}.tar.gz -C ${r_rely_build_dir}
cd ${gcc_rely_build_dir}/zlib-${zlib_version}
./configure --prefix=${r_rely_install_dir}/zlib/${zlib_version}
make
make install
## 安装 zlib 完毕

## 2 安装bzip2
tar -zxvf ${r_rely_pkg_dir}/bzip2-${bzip2_version}.tar.gz -C ${r_rely_build_dir}
cd ${gcc_rely_build_dir}/bzip2-${bzip2_version}
make -f Makefile-libbz2_so
# 修改MakeFile 中的 PREFIX=/to/yuour/path
sed -i 's/PREFIX=\/usr\/local/PREFIX=${r_rely_install_dir}\/bzip2\/${bzip2_version}/g' ./Makefile
make
make install
## 安装 bzip2 完毕

## 3 安装 xz
tar -zxvf ${r_rely_pkg_dir}/xz-${xz_version}.tar.gz -C ${r_rely_build_dir}
cd ${gcc_rely_build_dir}/xz-${xz_version}
./configure --prefix=${r_rely_install_dir}/xz/${xz_version}
make
make install
## 安装 xz 完毕


## 4 安装 pcre
tar -zxvf ${r_rely_pkg_dir}/pcre-${pcre_version}.tar.gz -C ${r_rely_build_dir}
cd ${gcc_rely_build_dir}/pcre-${pcre_version}
./configure --prefix=${r_rely_install_dir}/pcre/${pcre_version} --enable-utf --enable-unicode-properties --enable-jit --disable-cpp
make
make install
## 安装 pcre 完毕

## 5 安装 xz
tar -zxvf ${r_rely_pkg_dir}/curl-${curl_version}.tar.gz -C ${r_rely_build_dir}
cd ${gcc_rely_build_dir}/curl-${curl_version}
./configure --prefix=${r_rely_install_dir}/curl/${curl_version}  --with-openssl
make
make install
## 安装 curl 完毕

## 五个依赖都已经安装完毕,开始安装 r
tar -zxvf ${r_pkg_dir}/r-${r_version}.tar.gz -C ${r_build_dir}
cd ${r_build_dir}/r-${r_version}
./configure --prefix=${r_install_dir}/r/${r_version} --enable-R-shlib=yes --with-x=no --with-tcltk --with-pcre1 CPPFLAGS="-I${r_rely_install_dir}/zlib/${zlib_version}/include -I${r_rely_install_dir}/bzip2/${bzip2_version}/include -I${r_rely_install_dir}/xz/${xz_version}/include -I${r_rely_install_dir}/pcre/${pcre_version}/include -I${r_rely_install_dir}/curl/${curl_version}/include/curl" LDFLAGS="-L${r_rely_install_dir}/zlib/${zlib_version}/lib/ -L${r_rely_install_dir}/bzip2/${bzip2_version}/lib/ -L${r_rely_install_dir}/xz/${xz_version}/lib -L${r_rely_install_dir}/pcre/${pcre_version}/lib/ -L${r_rely_install_dir}/curl/${curl_version}/lib/" 

make -j
make install

### END

附录3 R 的 modulefile

#%Module
# 
# R 4.0.5 modulefile
#

proc ModulesHelp { } {
puts stderr "R software."
}

module-whatis "Try running command: R"

# add paths
prepend-path PATH /to/your/path/r/4.0.5/bin
prepend-path LD_LIBRARY_PATH /to/your/path/r/4.0.5/lib64
### END

  1. R语言官网 ↩︎

  2. 维基百科:R语言 ↩︎

  3. zlib下载页 ↩︎

  4. bzip2下载页 ↩︎

  5. liblzma下载页 ↩︎

  6. pcre下载页 ↩︎

  7. [curl下载页](https://curl.se/download.html; https://github.com/curl/curl/tags) ↩︎

  8. R 配置命令来源 ↩︎

  9. R 语言中 4 种 R 包安装方式 ↩︎

0

评论区