R 系列 您所在的位置:网站首页 installed翻译 R 系列

R 系列

2023-03-19 11:32| 来源: 网络整理| 查看: 265

1. 安装命令2. 基础环境Ubuntu/DebianRHEL/openEluer3. 各种库和依赖解决3.1 自动处理Ubuntu/DebianRHEL/openEluerUbuntu/DebianRHEL/openEluerUbuntu/DebianRHEL/openEluerTIFFcairoICU3.2 手动处理zlibbzip2 or libbz2pcrecurl or libcurlliblzmalibtifflibjpeg and libpng164. 完整编译安装命令

如果你使用的 Linux 系统 GCC 版本太低, 又没有 root 权限 (即使有 root 权限又担心升级 GCC 带来的风险) ; 同时你又不想入坑 conda, 但是你又希望安装一个最新版本的 R, 那么恭喜你, 这篇普通用户在 Linux 下源码编译安装 R 的记录刚好满足了你想要的一切.。

:::tips 本文档以 R-3.6.0 为例, 但对于 R-3.6.x, R-4.0.x 的安装同样适用。例如 R-4.0.3、R-4.1.2 根据本教程,本人都测试过可以正常安装成功。 :::

本教程在以下的安装环境中,经过测试都可以正常操作:

系统(版本) GCC 版本 Red Hat Enterprise Linux Server release 6.5 (Santiago), x86_64 gcc version 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC) CentOS Linux release 7.6.1810 (Core), x86_64 gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) openEuler 20.03 (LTS) gcc (GCC) 7.3.0

1. 安装命令

R 源码编译安装基本命令。

# Rpy:--enable-R-shlib# download list:https://mirrors.ustc.edu.cn/CRAN/src/base/$ wget https://mirrors.ustc.edu.cn/CRAN/src/base/R-3/R-3.6.0.tar.gz $ tar zxvf R-3.6.0.tar.gz$ cd R-3.6.0$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib --enable-BLAS-shlib --with-blas --with-lapack

关于 R 相关的动态库:

R 编译的过程中,必须选择--enable-R-shlib选项,将 R 编译成 lib 模式,在此模式下,会生成 path-to-R/lib/libR.so库;同时,确保同目录下 libRblas.so,libRlapack.so 两个链接库也被正确生成,这两个库默认会生成,如果没有,需要添加参数:--enable-BLAS-shlib,--with-blas,--with-lapack;如果不编译生成 libR.so,在安装 rpy2(Python 中的 R 语言接口模块) 时就无法正确编译。

2. 基础环境 configure: error: No Fortran compiler found ```bashUbuntu/Debianapt install gfortran RHEL/openEluer

yum install gcc-gfortran

- **configure: error: C++ preprocessor "/lib/cpp" fails sanity check**```bash# Ubuntu/Debianapt install build-essentialapt install g++# RHEL/openElueryum install glibc-headersyum install gcc-c++

3. 各种库和依赖解决

R 源码编译安装的时候需要的各种依赖库比较多,如果你有 root 的权限,建议使用 yum/apt 等系统命令解决;如果没有 root 权限,可以手动一个个去解决。

3.1 自动处理

针对 RHEL/Debian 一些常见的依赖,使用 yum/apt 自动解决的示例。

configure: error: —with-readline=yes (default) and headers/libs are not available ```bashUbuntu/Debianapt install install libreadline-dev RHEL/openEluer

yum install readline-devel

- **configure: error: --with-x=yes (default) and X11 headers/libs are not available**```bash# Ubuntu/Debianapt install libx11-dev xorg-dev libcurl4-openssl-dev# RHEL/openElueryum install xorg-x11-server-devel libX11-devel libXt-devel configure: error: “liblzma library and headers are required” ```bashUbuntu/Debianapt install liblzma-dev RHEL/openEluer

yum install lzma-devel xz xz-devel

- **configure: error: PCRE2 library and headers are required, or use --with-pcre1 and PCRE >= 8.32 with UTF-8 support**```bash# Ubuntu/Debianapt install libpcre2-dev# RHEL/openEluer yum install pcre pcre-devel # 安装 PCRE1yum install pcre2 pcre2-devel # 安装 PCRE2 configure: error: libcurl >= 7.28.0 library and headers are required with support for https ```bashUbuntu/Debianapt install libcurl4-openssl-dev RHEL/openEluer

yum install libcurl-devel

### JPEGR 安装过程中默认开启 --with-jpeglib(use jpeglib library (if available) [yes]),但是相关的依赖没有,依然可以正常安装(没有任何报错),但最后会提示:**Capabilities skipped: JPEG!**```bash# Ubuntu/Debianyum install libjpeg-dev# RHEL/openEluer yum install libjpeg-devel

TIFF

R 安装过程中默认开启 —with-tifflib(use libtiff library (if available) [yes]),但是相关的依赖没有,依然可以正常安装(没有任何报错),但最后会提示:Capabilities skipped: TIFF!

# Ubuntu/Debianyum install libtiff-dev# RHEL/openEluer yum install libtiff-devel

cairo

R 安装过程中默认开启 —with-cairo(use cairo (and pango) if available [yes]),但是相关的依赖没有,依然可以正常安装(没有任何报错),但最后会提示:Capabilities skipped: cairo!

# Ubuntu/Debianapt install libcairo2-dev libxt-dev# RHEL/openEluer yum install cairo-devel

ICU

R 安装过程中默认开启 —with-ICU(use ICU library (if available) [yes]),如果不可用,最后会提示:Capabilities skipped: ICU!

# Ubuntu/Debianapt install libicu-dev# RHEL/openEluer yum install libicu libicu-devel

3.2 手动处理

以下是一些常见的依赖手动解决的示例,可以参考。

zlib

根据《R Installation and Administration: A.1 Essential programs and libraries》官方文档,zlib (version 1.2.5 or later),至少需要 1.2.5 及以上版本。

报错:checking for zlib.h... yeschecking if zlib version >= 1.2.5... nochecking whether zlib support suffices... configure: error: zlib library and headers are required ## 缺少zlib或者zlib版本过低, 要求 zlib 版本 >= 1.2.5 # download list:http://www.zlib.net/fossils/$ wget http://www.zlib.net/fossils/zlib-1.2.6.tar.gz$ tar xvf zlib-1.2.6.tar.gz$ cd zlib-1.2.6$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/zlib-1.2.6$ make && make install

接着安装 R-3.6.0:

$ cd ../R-3.6.0$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib LDFLAGS="-L/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/lib" CPPFLAGS="-I/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/include" 报错: checking for zlib.h... yes checking if zlib version >= 1.2.5... yes checking whether zlib support suffices... yes checking mmap support for zlib... yes checking for BZ2_bzlibVersion in -lbz2... yes checking bzlib.h usability... yes checking bzlib.h presence... yes checking for bzlib.h... yes checking if bzip2 version >= 1.0.6... no checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required ## zlib 版本已经符合要求,bzip2 版本要求 >= 1.0.6

bzip2 or libbz2

根据《R Installation and Administration: A.1 Essential programs and libraries》官方文档, libbz2 (version 1.0.6 or later: called bzip2-libs/bzip2-devel or libbz2-1.0/libbz2-dev by some Linux distributions), 至少需要 1.0.6 及以上版本.

$ wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz$ tar zvxf bzip2-1.0.6.tar.gz$ cd bzip2-1.0.6$ make -f Makefile-libbz2_so$ make clean$ make$ make install PREFIX=/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6

重新安装 R-3.6.0:

$ cd ../R-3.6.0$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib LDFLAGS="-L/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/lib -L/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/lib" CPPFLAGS="-I/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/include -I/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/include" 报错: checking if bzip2 version >= 1.0.6... yes checking whether bzip2 support suffices... yes checking for lzma_version_number in -llzma... yes checking lzma.h usability... yes checking lzma.h presence... yes checking for lzma.h... yes checking if lzma version >= 5.0.3... yes checking for pcre_fullinfo in -lpcre... no checking whether PCRE support suffices... configure: error: pcre >= 8.10 library and headers are required ## 要求 pcre >= 8.10 (同时要求 pcre < 10.0, 否则再次安装 R-3.6.0 时报错) # 安装 pcre-8.12,configure 编译 R-3.6.0 时报错: checking for pcre/pcre.h... no checking if PCRE version >= 8.10, = 8.10 library and headers are required # PCRE 安装需要 --enable-utf8,同时版本 >= 8.10 且 < 10.0

pcre

在《R Installation and Administration: A.1 Essential programs and libraries》官方文档中要求, PCRE 版本最好在 8.32 及以上.

CRE (version 8.32 or later, although versions 8.20–8.31 will be accepted with a deprecation warning) is required (or just its library and headers if packaged separately). Only the ‘8-bit’ interface is used (and only that is built by default when installing from sources). PCRE must be built with UTF-8 support (not the default, and checked by configure) and support for Unicode properties is assumed by some R packages. JIT support (optionally available) is desirable for the best performance: support for this and Unicode properties can be checked at run-time by calling pcre_config().

# 源码安装 PCRE1$ wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz --no-check-certificate$ tar zvxf pcre-8.40.tar.gz$ cd pcre-8.40$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/pcre-8.40 --enable-utf8$ make -j3 && make install# root 安装 PCRE1yum install pcre pcre-devel# 源码的方式安装 PCRE2,这里不介绍,跟源码安装 PCRE1 原理是一样的,自己去谷歌就好# root 安装 PCRE2yum install pcre2 pcre2-devel

注意:

R-3.4.2 要求 pcre 版本(>= 8.20, < 10.0);R-4.0.1 要求 PCRE >= 8.32 with UTF-8 support;configure: error: PCRE2 library and headers are required, or use —with-pcre1 and PCRE >= 8.32 with UTF-8 support。R-4.0 以上在 configure 时,需要增加一个 --with-pcre1 参数;或者安装 PCRE2!

重新安装 R-3.6.0:

$ cd ../R-3.6.0$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib LDFLAGS="-L/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/lib -L/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/lib -L/Bioinfo/SoftWare/NewLibs/pcre-8.40/lib" CPPFLAGS="-I/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/include -I/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/include -I/Bioinfo/SoftWare/NewLibs/pcre-8.40/include" 报错: checking curl/curl.h usability... yes checking curl/curl.h presence... yes checking for curl/curl.h... yes checking if libcurl is version 7 and >= 7.28.0... no configure: error: libcurl >= 7.28.0 library and headers are required with support for https # 需要安装 curl >= 7.28.0

curl or libcurl

在《R Installation and Administration: A.1 Essential programs and libraries》要求, libcurl 大于或等于 7.22.0 版本。Library libcurl (version 7.22.0 or later) is required, with at least 7.28.0 being desirable.

$ wget https://curl.haxx.se/download/curl-7.64.1.tar.gz --no-check-certificate$ tar zvxf curl-7.64.1.tar.gz$ cd curl-7.64.1## 不指定证书$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/curl-7.64.1## 指定证书(推荐)$ wget https://curl.haxx.se/ca/cacert.pem -O /Bioinfo/SoftWare/certs/ca-bundle.crt --no-check-certificate$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/curl-7.64.1 --with-ca-bundle=/Bioinfo/SoftWare/certs/ca-bundle.crt $ make$ make install

如果你有管理员的权限,你也可以使用 root 的方法直接安装 libcurl:

# CentOS 7.6 自带的 libcurl 最新版本应该是 7.29.0-59.el7_9.1yum install libcurl libcurl-devel

注意:

有些情况下,R 在链接一些在线数据库,或者下载某些特殊包时,可能导致 SSL certificate problem: unable to get local issuer certificate 异常,这种情况可以通过 --with-ca-bundle 指定证书来解决。参考下面的内容。

R 语言关于 SSL 证书异常处理笔记

重新安装 R-3.6.0:

$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib LDFLAGS="-L/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/lib -L/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/lib -L/Bioinfo/SoftWare/NewLibs/pcre-8.40/lib -L/Bioinfo/SoftWare/NewLibs/curl-7.64.1/lib" CPPFLAGS="-I/Bioinfo/SoftWare/NewLibs/zlib-1.2.6/include -I/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/include -I/Bioinfo/SoftWare/NewLibs/pcre-8.40/include -I/Bioinfo/SoftWare/NewLibs/curl-7.64.1/include"$ make 报错: /Bioinfo/SoftWare/NewLibs/bzip2-1.0.6/lib/libbz2.a: could not read symbols: Bad value collect2: ld returned 1 exit status make[3]: *** [libR.so] Error 1 make[3]: Leaving directory `/home/shenweiyan/inst/R-3.6.0/src/main' make[2]: *** [R] Error 2 make[2]: Leaving directory `/home/shenweiyan/inst/R-3.6.0/src/main' make[1]: *** [R] Error 1 make[1]: Leaving directory `/home/shenweiyan/inst/R-3.6.0/src' make: *** [R] Error 1 # 需要使用64位元的方法重新编译 bzip2

重装 bzip2-1.0.6, 如下所示, 首先修改 bzip2-1.0.6 的 Makefile 文件:

CC=gcc -fPICAR=arRANLIB=ranlibLDFLAGS=BIGFILES=-D_FILE_OFFSET_BITS=64

然后, 重新编译 bzip2-1.0.6:

$ make clean$ make$ make install PREFIX=/Bioinfo/SoftWare/NewLibs/bzip2-1.0.6

liblzma

在编译过程中发现: “configure: error: “liblzma library and headers are required”, 需要安装 xz, 对应主页: https://tukaani.org/xz/, 安装如下:

$ wget https://nchc.dl.sourceforge.net/project/lzmautils/xz-5.2.3.tar.gz$ tar zvxf xz-5.2.3.tar.gz$ cd xz-5.2.3/$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/xz-5.2.3$ make -j3$ make install

libtiff

R shell 中使用 capabilities() 可以查看 R 已经编译支持的功能, 对于画图可以增加下面几个参数, 使 R 支持对应格式的图片保存, 与此同时要确保对应库已经安装.

--with-cairo use cairo (and pango) if available [yes]--with-libpng use libpng library (if available) [yes]--with-jpeglib use jpeglib library (if available) [yes]--with-libtiff use libtiff library (if available) [yes]

以 tiff 为例, 需要安装 libtiff 库:

The bitmapped graphics devices jpeg(), png() and tiff() need the appropriate headers and libraries installed: jpeg (version 6b or later, or libjpeg-turbo) or libpng (version 1.2.7 or later) and zlib or libtiff(versions 4.0.[5-10] have been tested) respectively.

$ wget ftp://download.osgeo.org/libtiff/tiff-4.0.9.zip$ unzip tiff-4.0.9.zip$ cd tiff-4.0.9$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/tiff-4.0.9$ make$ make install

如果你有管理员权限,你也可以直接使用 root 直接安装 libtiff:

# CentOS 7.6 自带的 libcurl 最新版本应该是 4.0.3-35.el7yum install libtiff libtiff-devel

然后重新编译 R-3.6.0:

$ ./configure --prefix=/Bioinfo/SoftWare/R-3.6.0 --enable-R-shlib --with-libtiff LDFLAGS="-L/Bioinfo/SoftWare/NewLibs/tiff-4.0.9/lib" CPPFLAGS="-I/Bioinfo/SoftWare/NewLibs/tiff-4.0.9/include"

如果 tiff 无法使用, 可以考虑在 ~/.bashrc 中添加 libtiff 库路径, 然后重新再编译 R .

export LD_LIBRARY_PATH=/Bioinfo/SoftWare/NewLibs/tiff-4.0.9/lib:$LD_LIBRARY_PATHexport PKG_CONFIG_PATH=/Bioinfo/SoftWare/NewLibs/tiff-4.0.9/lib/pkgconfig:$PKG_CONFIG_PATH

libjpeg and libpng16

R 安装完以后, 使用 plot 进行画图, 如果出现如下错误:

> plot(1:0)Error in (function (display = "", width, height, pointsize, gamma, bg, : X11 module cannot be loadedIn addition: Warning message:In (function (display = "", width, height, pointsize, gamma, bg, : unable to load shared object '/Bioinfo/SoftWare/R-3.6.0/lib64/R/modules//R_X11.so': libjpeg.so.9: cannot open shared object file: No such file or directory> quit()Save workspace image? [y/n/c]: n

使用 ldd 命令如果看到 libjpeg.so.9、libpng16.so.16 not found,则可以考虑手动安装这两个包:

$ /Bioinfo/SoftWare/R-3.6.0/bin/R CMD ldd /Bioinfo/SoftWare/R-3.6.0/lib64/R/modules//R_X11.so linux-vdso.so.1 => (0x00007fff3c79b000) libtiff.so.5 => /Bioinfo/SoftWare/NewLibs/tiff-4.0.9/lib/libtiff.so.5 (0x00007f75369dc000) libjpeg.so.9 => not found libpng16.so.16 => not found libpangocairo-1.0.so.0 => /usr/lib64/libpangocairo-1.0.so.0 (0x00007f75367ba000) libpango-1.0.so.0 => /usr/lib64/libpango-1.0.so.0 (0x00007f753656e000) libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007f7536322000) ......

libjpeg.so.9, libpng16.so.16 安装步骤如下:

$ wget http://www.ijg.org/files/jpegsrc.v9c.tar.gz$ tar zvxf jpegsrc.v9c.tar.gz$ cd jpeg-9c$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/jpeg-9c$ make$ make install$ wget https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz$ tar zvxf libpng-1.6.37.tar.gz$ cd libpng-1.6.37$ ./configure --prefix=/Bioinfo/SoftWare/NewLibs/libpng-1.6.37$ make$ make install http://libjpeg.sourceforge.net/

4. 完整编译安装命令

如果使用了自定义安装的 gcc/c++ 进行编译, 需要在 configure 时候使用 CC/CXX 进行指定, 否则使用系统默认的 gcc/c++,由于 CentOS-6.5 默认的 gcc==4.4.7, 该版本的 gcc 会导致 R>=3.5.0 编译出现各种错误,非 root 用户手动升级 gcc 可以参考:非 root 用户手动编译安装 GCC



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有