前言

R对windows使用很友好,对Linux来说充满了敌意。小数据可以在windows下交互操作,效果很好很棒。可是当我们要处理大数据,或者要在集群上搭建pipeline时,不得不面对在Linux上装R及想要的R包这个难题,尤其是对非root用户而言更是艰难重重。

准备依赖库

依次安装:zlib/bzip/liblzma/pcre/curl,注意顺序和版本。目前3.4以上3.6以下R版本相对较为稳定和不过时,我自己安装的是3.5.2。

cd zlib-1.2.11
./configure --prefix =/your/path/zlib #一般最好新建一个目录,以下同理
make
make install cd bzip2-1.0.6
make -f Makefile-libbz2_so
然后修改 Makefile 中的PREFIX=/your/path/bzip2
make && make install cd xz-5.2.3
./configure -prefix=/your/path/xz
make
make install tar -zxvf pcre-8.41.tar.gz
cd pcre-8.41
./configure --enable-utf --enable-unicode-properties --enable-jit --disable-cpp --prefix /your/path/pcre
#按官方文档的推荐命令的安装参数
make
make install tar -zxf curl-7.28.0.tar.gz
cd curl-7.28.0
./configure --prefix=/your/path/curl
make
make install

如果没报错,怎么知道自己安装成功了呢?一般在各个库的目录下会新生成bin/include/lib/share等几个目录。

安装R

源码安装方式同其他软件步骤一样,也是configure —— make —— make install,不过肯定没那么顺利,必然会有各种依赖库找不到。

1. congure

configure是很重要的一步,检查系统环境,准备编译和链接所需依赖及其种种复杂关系,往往死在第一步。

./configure --prefix=/your/wantto/install/R --enable-R-shlib --with-cairo  --with-jpeglib --with-readline --with-tcltk  --with-blas --with-lapack --enable-R-profiling LDFLAGS="-L/your/path/zlib/lib  -L/your/path/bzip2/lib -L/your/path/xz/lib -L/your/path/pcre/lib -L/your/path/curl/lib" CPPFLAGS="-I/your/path/zlib/include -I/your/path/bzip2/include -I/your/path/xz/include -I/your/path/pcre/include -I/your/path/curl/include"
# R也是最好新建一个要安装的路径再指定。指定各依赖库的库文件和头文件。

2.make

configure成功,此时如果直接make,一般也会报错,如下:

/usr/bin/ld: warning: libpcre.so.1, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
/usr/bin/ld: warning: liblzma.so.5, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)

即使configure已经指定传入了PCRE和XZ这两个库的路径,还是会说缺少libpcre.so.1和liblzma.so.5这两个库文件。

为什么呢?gcc编译链接动态库时很有可能编译通过,但是执行时找不到动态链接库,那是因为-L选项指定的路径只在编译时有效。

如果是root用户,修改/etc/ld.so.conf文件,将前面安装的库的路径添加到这个文件中。

如果是非root用户(绝大多数的我们),解决方法是通过-Wl(大写的W和小写的L),rpath=<your_lib_dir>,使得execute记住链接库的位置。

此时如果在configure的时候加上-Wl,并不会起作用。configure成功的时候不仅生成Makefile,还会生成Makeconf(即将configure的参数传入),因此我们可以直接修改Makeconf中的参数。

LDFLAGS = -L/your/path/zlib/lib  -L/your/path/bzip2/lib -L/your/path/xz/lib -L/your/path/pcre/lib -L/your/path/curl/lib -Wl,-rpath=/your/path/xz/lib -Wl,-rpath=/your/path/pcre/lib
# configure已经传入-L参数,因此我们只需在后面加上-Wl参数并指定相应库路径。注:原来的-L参数仍要保留。
#-L参数只能让路径在gcc编译时有效,而-Wl参数只能让其在运行时有效。

make成功。

3.make install

make成功后,一般这一步没啥问题。

参考:https://xieduo7.github.io/2018-04-02-R安装.html

安装R包

Linux下安装R包一般有2种方式:

1. R CMD INSTALL

下载源码

R CMD INSTALL /.../mypackage.tar.gz

也可指定安装库路径:

R CMD INSTALL /.../mypackage.tar.gz --library=/your/lib/path

更多参数--help一下

2. install.packages

which R查看下路径,是否是刚才自己安装的R。敲R,或全路径进入R

install.packages('mypackage'),这种方式针对CRAN包。

一般会让你选择镜像。选择自己最近的,有的镜像所含的R包不是很全,需要换一下。如果没有自己想要的镜像,也可自己指定(在R官网中可查镜像https://cran.r-project.org/mirrors.html)。

install.packages("packages","repos" = (CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"),lib="/lib/path")

以上针对的是CRAN中的包,如果是 bioconductor包呢?

先装BiocManager,再安装所需R包即可。

install.packages("BiocManager")  #如已安装,后续安装不再需要
BiocManager::install("clusterProfiler")

不推荐以下安装方法,速度会很慢。

source("http://bioconductor.org/biocLite.R")
biocLite("mypackage")

如果不指定R包安装的路径,R包会安装在/your/R/lib64/R/library中,这也是R自带的基础包的目录。

常见操作

1.包的操作和管理

  • 添加环境变量:
export PATH=/your/R/bin:$PATH
export LD_LIBRARY_PATH=/your/complie_tools/zlib/lib:/your/complie_tools/curl/lib:/your/complie_tools/bzip2/lib:/your/complie_tools/pcre/lib:/your/complie_tools/xz/bin:/your/R/lib64/R/lib:$LD_LIBRARY_PATH #这些都是一些依赖库
  • 添加R库路径到环境变量:
export R_LIBS=/your/R_packages
export R_LIBS=/others/.../R/lib64/R/library #添加环境变量R的lib路径,可以使用别人安装的包

R中用.libPaths()函数查看lib路径,如果有多个lib,install.packages()默认是安装在第一个目录下。如果一开始就没指定R包安装路径并配置环境变量,则默认安装在/your/R/lib64/R/library中。

2. 其他操作

其实和window控制台一样,只是换成了单命令行:

.libPaths() #查看包的安装目录
library() #查看已经安装的包目录
library(package) #载入mypackage包
getOption("defaultPackages") #查看启动R时自动载入的包。
help(package = 'mypackage') #查看‘mypackage’的帮助 args(function):查看函数的参数
example(function):自动运行该函数帮助文档中的例子,很赞!
demo("package"):展示包中demo
vignette('mypackage'):有的包特别是bioconductor的包有vignette
openVignette('mypackage'):这个函数也可以查看vignette,更好用一些
RSiteSearch("helpinfor"):搜索R网站上的“helpinfor”相关信息
help.start():查看已经安装包的详细HTML文档,这个命令非常爽。 search():查看当前载入的包
sessionInfo():查看R中载入的包
methods():查看某个S3泛型函数中所有的方法或者一个类中所有的方法(S3:S version 3)
showMethods(class = "myClass"):查看S4类的方法
findMethods("myMethods"):查看method的代码
class(myObject):查看某个对象的类
getClass(“class/package”):查看某个class或者包的具体内容
getSlots("class"):查看某个class的slot
slotNames(MyObject):查看某个对象的slot。
可以使用Myobject@slotNames访问对象的slot值,这个@设计实在是太爽了,可以连续用。 查询包内信息:
1. ?function/method:查看某个“函数”或者“方法”的详细内容
2. class?graph::graph:查看“组”的详细内容的一个例子。这个例子的来源是查询graph包时候,查看其中class的信息,输入??graph后出现一个graph::graph-class。 ls("package:mypackage"):查看"mypackage"中的所有对象。

Ref: https://www.cnblogs.com/xianghang123/archive/2013/01/08/2851450.html

Linux环境下R和R包安装及其管理的更多相关文章

  1. Linux 系统下用源码包安装软件

    Linux系统下用源码包安装软件 by:授客 QQ:1033553122 下载源码安装包,解压或者直接双击打开(如果有安装zip或rar等压缩/解压缩软件的话),查找相关的安装说明文件,一般是READ ...

  2. Linux环境下 RabbitMQ 的下载与安装

    0 环境 CentOS7 RabbitMQ 3.6.5 erlang 18.3 socat rabbitmq是使用erlang语言编写的,所以需要先安装erlang,其次rabbitmq安装依赖于so ...

  3. Linux环境下NodeJS和MongoDB的安装配置

     一.NodeJS的安装配置 #进入安装目录cd /usr/local/ #删除原有安装rm -rf noderm -rf node-v0.10.29-linux-x64 #解压压缩包tar -zxv ...

  4. 从vmware下载到Linux环境下jdk和maven的安装

    写在前面:个人总结,如有不对请指出 操作环境: 操作系统:window7 企业版 处理器:Intel Core i5-4200U CPU @ 1.6GHz 内存:8G 系统类型:64位操作系统 需要安 ...

  5. linux环境下kettle部署(JDK安装配置,kettle安装配置,资源库配置,定时执行job)

    一.部署准备 1.1 java安装(略) 1.2 JDK配置 1.     命令行键入“cd /etc”进入etc目录 2.     命令行键入“vi profile”打开profile文件 3.   ...

  6. Linux环境下使用tcpdump抓包与下载

    (1)报文抓取 tcpdump -i eno5 host 10.8.12.154 -w /test.cap -i:抓取的网卡 host:目的地址 -w:生成的文件存放路径 Ctrl+c 结束抓包,抓取 ...

  7. Linux环境下的Nginx编译与安装

    1.新建文件夹: mkdir -p /zuker cd /zuker 2.编译: yum -y install gcc-c++ make wget autoconf libjpeg libjpeg-d ...

  8. 【转载】linux环境下为firefox/chrome浏览器安装flash player

    本文转载自 http://blog.sina.com.cn/s/blog_6ad624380102v1xf.html     firefox安装flash player的方法: 先到adobe网站上下 ...

  9. linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg)

     linux环境下安装sphinx中文支持分词搜索(coreseek+mmseg) 2013-11-10 16:51:14 分类: 系统运维 为什么要写这篇文章? 答:通过常规的三大步(./confi ...

  10. Linux环境下JDK/Eclipse一键安装脚本

    -------------------------------------------------------------------- author:jiangxin Email:jiangxinn ...

随机推荐

  1. .NET CLI简单教程和项目结构

    WHAT IS .NET CLI ? .NET 命令行接口 (CLI) 工具是用于开发.生成.运行和发布 .NET 应用程序的跨平台工具链. 来源:.NET CLI | Microsoft Docs ...

  2. 技术博客--微信小程序canvas实现图片编辑

    技术博客--微信小程序canvas实现图片编辑 我们的这个小程序不仅仅是想给用户提供一个保存和查找的平台,还希望能给用户一个展示自己创意的舞台,因此我们实现了图片的编辑部分.我们对对图片的编辑集成了很 ...

  3. Vue el 使用el-checkbox-group复选框进行单选框操作

    el-checkbox-group这个组件与其他复选框不一样,我当初也是半天不知道怎么操作 页面使用v-model绑定 size就是等比例缩小放大,v-ror循环应该看的懂.重要的是@chage到我们 ...

  4. 转:VCS仿真vivado IP的方法

    vivado中的仿真库和模型与ISE中的是不一样的,因此在vivado中使用VCS进行仿真的方法也与ISE中不一样. VCS可以通过两种方法对XILINX的器件进行功能仿真和门级仿真,这两种方法是 P ...

  5. hdu 1394 Minimum Inversion Number(线段树or树状数组)

    题意: 给你N个数,N个数是0~N-1的一个全排列. 要求统计它的所有形式的逆序对的最小值.它的所有形式的意思是,不断将数组开头的第一个数放到数组的最后面. 逆序对:i<j且ai>aj 思 ...

  6. 用python写一个自动化盲注脚本

    前言 当我们进行SQL注入攻击时,当发现无法进行union注入或者报错等注入,那么,就需要考虑盲注了,当我们进行盲注时,需要通过页面的反馈(布尔盲注)或者相应时间(时间盲注),来一个字符一个字符的进行 ...

  7. Linux的inode与block

    1,inode包含文件的元信息,具体来说有以下内容: 文件的字节数 文件拥有者的User ID 文件的Group ID 文件的读.写.执行权限 文件的时间戳,共有三个:ctime指inode上次文件属 ...

  8. 使用vsftpd 搭建ftp服务

    ftp 基础服务器基础知识 ftp有三种登录方式.匿名登录(所有用户).本地用户.虚拟用户(guest). FTP工作模式 主动模式:服务端从20端口主动向客户端发起链接. 控制端口21:数据传输端口 ...

  9. Ambari 2.4 在 CentOS 7.4 因 TLS_1.2 协商内部错误导致注册失败

    问题背景 业务准备在天翼云上搭建一套线上环境,VM 操作系统版本为 CentOS Linux release 7.4.1708,但是在 ambari Web 管理页面上部署hadoop节点主机的时候, ...

  10. lumen、laravel问题汇总

    框架报500 1.chmod 777 -R storage 将日志目录权限设置下. 2.修改fastcgi,将代码目录包含进去. fastcgi_param PHP_ADMIN_VALUE " ...