自从上一次服务器重装系统之后,总感觉缺少了一些东西,安装R包很多依赖库报错,也可以解决,但总是存在,烦。

一天,一个同事问我说ggpubr包安装不成功,我就自己试了一下,真的是……安装不成功。

当你到了我这个年纪(破罐子破摔),你就会知道,「如果有包安装不上,那就不安装了」。所以我就用资深数据分析师那意味深长的语气劝他(而且一定要营造出分析结果不理想是他数据的问题),R包有很多,为何不换一个呢?

今天,另一个同事告诉我,说服务器的clusterProfilerenrichplot自从重新装了服务器,就没有安装成功做,做分析都是放到个人电脑上去做的。不能忍,今天就解决。因为我知道,折腾一下总能解决,但是我只想躺平。

1. 系统环境

  • 操作系统 centos7
  • R 版本 MRO4.0.2
  • 有root权限
  • 需要安装 clusterProfilerenrichplot

2. 头脑风暴

我有一个设想:

  • 用root权限,新建一个环境 R4.1,然后在里面安装R4.1
  • 在R4.1中安装那几个包
  • 将Rstudio的R版本设置为新建环境的R4.1

我的顾虑:

  • 不确定我用root新建的环境,能不能让大家使用
  • 不确定Rstudio-server能不能指定新建环境中的R4.1版本

3. 新建conda环境并激活进入

因为conda环境还挺大,所以我在空间大的地方,新建文件夹R4.1_and_Rstudio

「新建环境:」

conda create -p /mnt/data/R4.1_and_Rstudio

「激活进入环境:」

source activate /mnt/data/R4.1_and_Rstudio/

4. 安装R最新版R4.1.0

一行代码搞定:

conda install -c conda-forge r-base

安装成功之后,进入R:


R version 4.1.0 (2021-05-18) -- "Camp Pontanezen"
Copyright (C) 2021 The R Foundation for Statistical Computing
Platform: x86_64-conda-linux-gnu (64-bit)

R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()'或'licence()'来看散布的详细条件。

R是个合作计划,有许多人为之做出了贡献.
用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。

用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.

>

可以看到,R4.1.0安装成功。

5. 安装最新版RStudio

一行代码搞定:

wget https://download2.rstudio.org/server/centos7/x86_64/rstudio-server-rhel-1.4.1717-x86_64.rpm
sudo yum install rstudio-server-rhel-1.4.1717-x86_64.rpm

好吧,这是两行。

6. 修改设置Rstudio-server选择R版本

修改参数:

vi /etc/rstudio/rserver.conf

将下面代码放到里面:

rsession-which-r=/mnt/data/R4.1_and_Rstudio/bin/R # 注意,这里是我们服务器上R4.1.0的路径

「重启Rstudio-server」

sudo rstudio-server status              #查看RStudio-server
sudo rstudio-server stop                #关闭RStudio-server
sudo rstudio-server restart             #重启RStudio-server

重启之后,打开Rstudio-server,发现R版本已经变为R4.1.0了,搞定!

7. 在conda环境中安装R包

「R4.1.0」

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("clusterProfiler")
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("enrichplot")

原本以为能安装成功,结果发现报错,类似这样:

显示上面的包都安装失败,那我就分开安装,然后都安装成功了,最后这两个包也安装成功了。

胜利的喜悦:

8. Rstudio画图报错:version ZLIB_1.2.9 not found

其实,在R终端下,载入上面的软件包没问题,但是在Rstudio中载入就出错:

> library(clusterProfiler)
错误: package or namespace load failed for ‘clusterProfiler’ in dyn.load(file, DLLpath = DLLpath, ...):
 无法载入共享目标对象‘/mnt/data/R4.1_and_Rstudio/lib/R/library/png/libs/png.so’::
  /lib64/libz.so.1: version `ZLIB_1.2.9' not found (required by /mnt/data/R4.1_and_Rstudio/lib/libpng16.so.16)
> library(clusterProfiler)
错误: package or namespace load failed for ‘clusterProfiler’ in dyn.load(file, DLLpath = DLLpath, ...):
 无法载入共享目标对象‘/mnt/data/R4.1_and_Rstudio/lib/R/library/png/libs/png.so’::
  /lib64/libz.so.1: version `ZLIB_1.2.9' not found (required by /mnt/data/R4.1_and_Rstudio/lib/libpng16.so.16)

然后作图也报错:

> plot(1)
Error in RStudioGD() : 
  Shadow graphics device error: r error 4 (R code execution error)
此外: There were 50 or more warnings (use warnings() to see the first 50)

太难了,以为所有问题都解决了,出了这幺蛾子。

多年的(摸鱼)经验告诉我,不慌,先解决这个问题/lib64/libz.so.1: versionZLIB_1.2.9' not found`

先查看这个lib有哪些版本:

 strings /lib64/libz.so.1 |grep "ZLIB*"

结果:

ZLIB_1.2.0
ZLIB_1.2.0.2
ZLIB_1.2.0.8
ZLIB_1.2.2
ZLIB_1.2.2.3
ZLIB_1.2.2.4
ZLIB_1.2.3.3
ZLIB_1.2.3.4
ZLIB_1.2.3.5
ZLIB_1.2.5.1
ZLIB_1.2.5.2
ZLIB_1.2.7.1

果然没有ZLIB_1.2.9,那我看看服务器都有哪些/libz.so.1

find / -name "libz.so.1"

选几个看看看有没有ZLIB_1.2.9,然后将lib64的lib删掉,重新建立软链接。

# 确认其中的某一个libz.so.1含有ZLIB_1.2.9
strings /home/softwares/anaconda3/lib/libz.so.1 |grep "ZLIB*"

# 替换
rm /usr/lib64/libz.so.1
# 也可以使用ln -s来创建软连接
cp /home/softwares/anaconda3/lib/libz.so.1 /usr/lib64/

再次运行Rstudio-server,搞定!

9. 其它人用Rstudio-server安装R包

因为现在Rstudio-server用的是conda环境中的R4.1,它会在conda环境中有一个library,普通用户没有写入的权限,安装R包时会在自己的路径下自动新建一个library。如果安装包出错,就进入conda的环境,安装即可,绝对可以成功。

特别好使!

10. 总结

1,conda新建环境安装R4.1.0,因为是全新的环境,可以安装任何包都不会报错,如果报错了,就分开安装,然后再安装,一般都能解决问题。

2,外部是可以用conda环境中的程序的,指定路径就行。

3,Rstudio-server可以指定R版本,在/etc/rstudio/rserver.conf设置一下就行

4,如果有些软件安装比较麻烦,各种报错,不要在root下安装了,直接新建conda环境,在环境中安装配置好,用得时候绝对调用就行。

5,没有安装不了的R包,折腾一下总能实现。

参考:

http://showteeth.tech/posts/741.html https://cloud.tencent.com/developer/article/1819222

本文分享自微信公众号 - 生信科技爱好者(bioitee)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

RStuido Server 选择不同的 R 版本(conda 中的不同 R 版本)的更多相关文章

  1. 在高版本SDK中打开现存低版本SDK工程

    直接打开低版本SDK工程会出现错误提示:“Unable to resolve target 'android-xx” 解决方法: 1.将project.properties文件中的“target=an ...

  2. 翻译1-在SQL Server 2016中介绍微软R服务

    在SQL Server 2016中介绍微软R服务 源自:http://www.sqlservercentral.com/articles/Microsoft/145393/ 作者:tomakatrun ...

  3. SQL Server中TempDB管理(版本存储区的一个example)

    原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...

  4. 2017-5-14 湘潭市赛 Partial Sum 给n个数,每次操作选择一个L,一个R,表示区间左右端点,该操作产生的贡献为[L+1,R]的和的绝对值-C。 0<=L<R<=n; 如果选过L,R这两个位置,那么以后选择的L,R都不可以再选择这两个位置。最多操作m次,求可以获得的 最大贡献和。

    Partial Sum Accepted : Submit : Time Limit : MS Memory Limit : KB Partial Sum Bobo has a integer seq ...

  5. 关于在.Net开发中使用Sqlite的版本选择问题

    原文:关于在.Net开发中使用Sqlite的版本选择问题 如果一个.NET应用要自适应32位/64位系统,只需要在项目的“目标平台”设置为“Any CPU”.但是如果应用中使用了SQLite,情况就不 ...

  6. SQL Server 临时禁用和启用所有外键约束(高版本向低版本迁移数据)

    --获得禁用所有外键约束的语句 select 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name +';' as 禁用约束 from ...

  7. Windows 10 版本 1507 中的新 AppLocker 功能

    要查看 Windows 10 版本信息,使用[运行]> dxdiag  回车 下表包含 Windows 10 的初始版本(版本 1507)中包括的一些新的和更新的功能以及对版本 1511 的 W ...

  8. 配置sql server 2000以允许远程访问 及 连接中的四个最常见错误

    地址:http://www.cnblogs.com/JoshuaDreaming/archive/2010/12/01/1893242.html 配置sql server 2000以允许远程访问适合故 ...

  9. R语言入门1:安装R和RStudio

    R语言入门1:安装R和RStudio 曹务强 中科院遗传学博士研究生 9 人赞同了该文章 1. Windows安装R 在Windows系统上,安装R语言比较简单,直接从R的官方网站下载,按照正常的软件 ...

  10. 【转帖】sysbench使用教程(包含ubuntu自带的0.4版本、0.5版本和最新的1.0版本)

    sysbench使用教程(包含ubuntu自带的0.4版本.0.5版本和最新的1.0版本) 2018年08月10日 09:54:42 cxin917 阅读数 429   版权声明:本文为博主原创文章, ...

随机推荐

  1. opencv-python 2 图像基本操作

    图像的基本操作 获取并修改图像的像素值 可以通过行和列的坐标值获取该像素点的像素值.对于BGR图像,它返回一个蓝色,绿色,红色值的数组.对于灰度图像,仅返回相应的强度值. 可以用同样的方法修改像素点的 ...

  2. 为什么我推荐你使用 systemd timer 替代 cronjob?

    概述 前几天在使用 Terraform + cloud-init 批量初始化我的实验室 Linux 机器.正好发现有一些定时场景需要使用到 cronjob, 进一步了解到 systemd timer ...

  3. python入门教程之八列表,字典,字符串,集合常用操作

    一列表常用方法 Python包含以下函数: 序号 函数 1 cmp(list1, list2)比较两个列表的元素 2 len(list)列表元素个数 3 max(list)返回列表元素最大值 4 mi ...

  4. pandas之分组操作

    在数据分析中,经常会遇到这样的情况:根据某一列(或多列)标签把数据划分为不同的组别,然后再对其进行数据分析.比如,某网站对注册用户的性别或者年龄等进行分组,从而研究出网站用户的画像(特点).在 Pan ...

  5. windows 10 家庭版安装Docker和portainer汉化版

    目录 前景提要 存在问题 一.Docker的windows版本安装 1.官网下载: https://www.docker.com/(没有本文问题的直接下载就好.) 2.本文是找到其他版本的Docker ...

  6. 碉堡!“万物皆可分”标记模型上线「GitHub 热点速览」

    这周有个让人眼前一亮的图像识别模型 segment-anything,它能精细地框出所有可见物体,它标记出的物体边界线清晰可见.如此出色的模型,自然获得了不少人的赞赏,开源没几天,就拿下了 18k+ ...

  7. 高可用(keepalived)部署方案

    前言:为了减少三维数据中心可视化管理系统的停工时间,保持其服务的高度可用性.同时部署多套同样的三维可视化系统,让三维数据中心可视化系统同时部署并运行到多个服务器上.同时提供一个虚拟IP,然后外面通过这 ...

  8. 请求被中止: 未能创建 SSL/TLS 安全通道 解决方案

    最近项目改造https,有部分请求出现"请求被中止: 未能创建 SSL/TLS 安全通道". 原因应该是,接口方变更了安全协议,而客户端并未启用该协议. 解决办法自然就是:让客户端 ...

  9. 如何在 DevOps 中进行 API 全生命周期管理?

    随着 DevOps 理念在中国企业当中的普及和发展,中国企业 DevOps 落地成熟度不断提升,根据中国信通院的数据已有近 6 成企业向全生命周期管理迈进. 而在研发全生命周期管理之中,API 管理的 ...

  10. Appuploader安装指南

    转载:http://kxdang.com/topic/appuploader/install.html 下载和安装appuploader IOS开发工具官网地址 http://www.applicat ...