一天,一個同事問我說ggpubr
包安裝不成功,我就自己試了一下,真的是……安裝不成功。
當(dāng)你到了我這個年紀(jì)(破罐子破摔),你就會知道,「如果有包安裝不上,那就不安裝了」。所以我就用資深數(shù)據(jù)分析師那意味深長的語氣勸他(而且一定要營造出分析結(jié)果不理想是他數(shù)據(jù)的問題),R包有很多,為何不換一個呢?
今天,另一個同事告訴我,說服務(wù)器的clusterProfiler
和enrichplot
自從重新裝了服務(wù)器,就沒有安裝成功做,做分析都是放到個人電腦上去做的。不能忍,今天就解決。因為我知道,折騰一下總能解決,但是我只想躺平。
centos7
MRO4.0.2
clusterProfiler
和enrichplot
包我有一個設(shè)想:
R4.1
,然后在里面安裝R4.1我的顧慮:
因為conda環(huán)境還挺大,所以我在空間大的地方,新建文件夾R4.1_and_Rstudio
「新建環(huán)境:」
conda create -p /mnt/data/R4.1_and_Rstudio
「激活進(jìn)入環(huán)境:」
source activate /mnt/data/R4.1_and_Rstudio/
R4.1.0
一行代碼搞定:
conda install -c conda-forge r-base
安裝成功之后,進(jìn)入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是自由軟件,不帶任何擔(dān)保。
在某些條件下你可以將其自由散布。
用'license()'或'licence()'來看散布的詳細(xì)條件。
R是個合作計劃,有許多人為之做出了貢獻(xiàn).
用'contributors()'來看合作者的詳細(xì)情況
用'citation()'會告訴你如何在出版物中正確地引用R或R程序包。
用'demo()'來看一些示范程序,用'help()'來閱讀在線幫助文件,或
用'help.start()'通過HTML瀏覽器來看幫助文件。
用'q()'退出R.
>
可以看到,R4.1.0安裝成功。
一行代碼搞定:
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
?好吧,這是兩行。
?
修改參數(shù):
vi /etc/rstudio/rserver.conf
將下面代碼放到里面:
rsession-which-r=/mnt/data/R4.1_and_Rstudio/bin/R # 注意,這里是我們服務(wù)器上R4.1.0的路徑
「重啟Rstudio-server」
sudo rstudio-server status #查看RStudio-server
sudo rstudio-server stop #關(guān)閉RStudio-server
sudo rstudio-server restart #重啟RStudio-server
重啟之后,打開Rstudio-server,發(fā)現(xiàn)R版本已經(jīng)變?yōu)?code style="overflow-wrap: break-word;margin-right: 2px;margin-left: 2px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(53, 148, 247);background: rgba(59, 170, 250, 0.1);padding-right: 2px;padding-left: 2px;border-radius: 2px;height: 21px;line-height: 22px;">R4.1.0了,搞定!
「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")
原本以為能安裝成功,結(jié)果發(fā)現(xiàn)報錯,類似這樣:
勝利的喜悅:
version ZLIB_1.2.9 not found
其實,在R終端下,載入上面的軟件包沒問題,但是在Rstudio中載入就出錯:
> library(clusterProfiler)
錯誤: package or namespace load failed for 'clusterProfiler’ in dyn.load(file, DLLpath = DLLpath, ...):
無法載入共享目標(biāo)對象'/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, ...):
無法載入共享目標(biāo)對象'/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)
太難了,以為所有問題都解決了,出了這幺蛾子。
多年的(摸魚)經(jīng)驗告訴我,不慌,先解決這個問題/lib64/libz.so.1: version
ZLIB_1.2.9' not found`
先查看這個lib有哪些版本:
strings /lib64/libz.so.1 |grep "ZLIB*"
結(jié)果:
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
,那我看看服務(wù)器都有哪些/libz.so.1
:
find / -name "libz.so.1"
選幾個看看看有沒有ZLIB_1.2.9
,然后將lib64的lib刪掉,重新建立軟鏈接。
# 確認(rèn)其中的某一個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來創(chuàng)建軟連接
cp /home/softwares/anaconda3/lib/libz.so.1 /usr/lib64/
再次運行Rstudio-server,搞定!
因為現(xiàn)在Rstudio-server用的是conda環(huán)境中的R4.1,它會在conda環(huán)境中有一個library,普通用戶沒有寫入的權(quán)限,安裝R包時會在自己的路徑下自動新建一個library。如果安裝包出錯,就進(jìn)入conda的環(huán)境,安裝即可,絕對可以成功。
特別好使!
1,conda新建環(huán)境安裝R4.1.0,因為是全新的環(huán)境,可以安裝任何包都不會報錯,如果報錯了,就分開安裝,然后再安裝,一般都能解決問題。
2,外部是可以用conda環(huán)境中的程序的,指定路徑就行。
3,Rstudio-server可以指定R版本,在/etc/rstudio/rserver.conf
設(shè)置一下就行
4,如果有些軟件安裝比較麻煩,各種報錯,不要在root下安裝了,直接新建conda環(huán)境,在環(huán)境中安裝配置好,用得時候絕對調(diào)用就行。
5,沒有安裝不了的R包,折騰一下總能實現(xiàn)。
http://showteeth.tech/posts/741.html https://cloud.tencent.com/developer/article/1819222