实验记录 | 6/6 安装R并安装指定的R包

官方网站:https://cran.r-project.org/
有一点比较棘手的地方是:我的系统是ubuntu系统,而服务器的系统是centOS,所以,可能出现的情况就是在我这里编译成功的R,移动到服务器上,会不再适用。
另外,我不太知道如果是centOS,应该选择下方的什么版本(这个命名我有点看不懂)?

[DIR] debian/ 2021-05-21 10:55 -
[DIR] fedora/ 2020-10-06 11:49 -
[DIR] redhat/ 2020-10-06 11:49 -
[DIR] suse/ 2012-02-16 15:09 -
[DIR] ubuntu/ 2021-05-27 17:21 -

centOS起源于redhat,所以如果要挑选的话,可以选择这个。
不过我突然想起来,实验室的服务器上,也有R,只不过这个R的版本未知,是否能够安装statmod这个包也未知。所以,我现在干嘛呢?
有两条思路:
(1)去实验室中,检查R的版本号(要求:大于3.6.0)。尝试安装statmod这个包,如果缺依赖的库的话,再想办法。
(2)现在,在这里尝试安装平台不依赖的R环境,到时候挪到系统上可以直接适用。

参考链接1(在centos下安装R):
https://blog.csdn.net/qq_28652401/article/details/106014883?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-9.control

还是喜欢下载源文件(不依赖于平台)。
镜像官网链接:https://mirrors.sjtug.sjtu.edu.cn/cran/
我选择的是:Source Code for all Platforms,官网对于它的介绍是:

The sources have to be compiled before you can use them.

由于最新的4版本的,可能会平台不适用。于是,我选择比较保险一点的3系列:
https://mirrors.sjtug.sjtu.edu.cn/cran/src/base/R-3/
下载完成之后,解压,编译。
tar -xzvf R-3.6.3.tar.gz
cd R-3.6.3/
./configure
毫无疑问,编译的时候出现了问题:

configure: error: --with-x=yes (default) and X11 headers/libs are not available

按照网上的方法,需要安装一个库文件的依赖。
参考链接:https://blog.csdn.net/tommy_12345/article/details/81067605

apt-get install libXt-devel.aarch64
但是,如果非root用户,安装库依赖,会提示权限不够。
apt-get install libxt-dev
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?
所以,只能适用root权限。
sudo apt-get install libxt-dev
好像没啥用。
最后参考:https://blog.csdn.net/ustczyy/article/details/14448445
./configure --with-readline=no --with-x=no
暂时,编译没有报错。
之后就是make,这个过程也进展的比较顺利。
进入到中。
运行library(statmod),安装成功。

  • installing source package ‘statmod’ …
    ** package ‘statmod’ successfully unpacked and MD5 sums checked
    ** using staged installation
    ** libs
    /home/zxx/miniconda3/bin/x86_64-conda_cos6-linux-gnu-gfortran -fno-optimize-sibling-calls -fpic -fopenmp -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/zxx/miniconda3/include -c gaussq2.f -o gaussq2.o
    /home/zxx/miniconda3/bin/x86_64-conda_cos6-linux-gnu-cc -I"/media/zxx/TOSHIBA/software/Rpackage/R-3.6.3/include" -DNDEBUG -DNDEBUG -D_FORTIFY_SOURCE=2 -O2 -isystem /home/zxx/miniconda3/include -fpic -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /home/zxx/miniconda3/include -c init.c -o init.o
    /home/zxx/miniconda3/bin/x86_64-conda_cos6-linux-gnu-cc -shared -Wl,-O2 -Wl,–sort-common -Wl,–as-needed -Wl,-z,relro -Wl,-z,now -Wl,–disable-new-dtags -Wl,–gc-sections -Wl,-rpath,/home/zxx/miniconda3/lib -Wl,-rpath-link,/home/zxx/miniconda3/lib -L/home/zxx/miniconda3/lib -o statmod.so gaussq2.o init.o -lgfortran -lm -lgomp -lquadmath -lpthread
    installing to /media/zxx/TOSHIBA/software/Rpackage/R-3.6.3/library/00LOCK-statmod/00new/statmod/libs
    ** R
    ** data
    ** inst
    ** byte-compile and prepare package for lazy loading
    ** help
    *** installing help indices
    ** building package indices
    ** testing if installed package can be loaded from temporary location
    ** checking absolute paths in shared objects and dynamic libraries
    ** testing if installed package can be loaded from final location
    ** testing if installed package keeps a record of temporary installation path
  • DONE (statmod)

The downloaded source packages are in
‘/tmp/RtmpFlaHwu/downloaded_packages’
Updating HTML index of packages in ‘.Library’
Making ‘packages.html’ … done

library(“statmod”)

所以,我想明天,同样的流程,放到服务器上,看看是否顺利。我突然想到,我的这个问题解决的思路,有点像体外受精,然后再移植到母体中来孵化。
就是不知道,这种移植是否能够成功。


而且这里,比较有意思的地方还在于,这个包在编译的过程中调用的是miniconda的bin文件中的内容。而我们在服务器上运行的时候,明明在服务器中存在这个库文件,但是却显示缺少。为什么呢?(这也是我一直比较困惑的,上次卡住的地方)

我觉得最本质的原因,可能是将conda的bin添加到了home路径下,所以可以直接调用。
那我想要弄明白,上次学长说的那个LD_LIBRARY_PATH是什么意思?
参考链接:https://www.cnblogs.com/trying/archive/2013/06/07/3123577.html
https://blog.csdn.net/KLKFL/article/details/101183241
我的理解就是,这个指令设置程序临时的对于库的查找途径,优先在哪里寻找。如果自己设定的路径中,有的话,则不必去动用/home/路径,这是一个不错的思路,我可以明天来试试看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值