Linux環(huán)境下R和R包安裝及其管理

前言

R對windows使用很友好皱坛,對Linux來說充滿了敵意。小數(shù)據(jù)可以在windows下交互操作僧凤,效果很好很棒畜侦。可是當我們要處理大數(shù)據(jù)躯保,或者要在集群上搭建pipeline時旋膳,不得不面對在Linux上裝R及想要的R包這個難題,尤其是對非root用戶而言更是艱難重重途事。

準備依賴庫

依次安裝:zlib/bzip/liblzma/pcre/curl验懊,注意順序和版本。目前3.4以上3.6以下R版本相對較為穩(wěn)定和不過時尸变,我自己安裝的是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
#按官方文檔的推薦命令的安裝參數(shù)
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是很重要的一步匙头,檢查系統(tǒng)環(huán)境,準備編譯和鏈接所需依賴及其種種復(fù)雜關(guān)系仔雷,往往死在第一步蹂析。

./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已經(jīng)指定傳入了PCRE和XZ這兩個庫的路徑蝙叛,還是會說缺少libpcre.so.1和liblzma.so.5這兩個庫文件俺祠。
為什么呢?gcc編譯鏈接動態(tài)庫時很有可能編譯通過借帘,但是執(zhí)行時找不到動態(tài)鏈接庫蜘渣,那是因為-L選項指定的路徑只在編譯時有效。

如果是root用戶肺然,修改/etc/ld.so.conf文件蔫缸,將前面安裝的庫的路徑添加到這個文件中。

如果是非root用戶(絕大多數(shù)的我們)际起,解決方法是通過-Wl(大寫的W和小寫的L),rpath=<your_lib_dir>拾碌,使得execute記住鏈接庫的位置。
此時如果在configure的時候加上-Wl街望,并不會起作用校翔。configure成功的時候不僅生成Makefile,還會生成Makeconf(即將configure的參數(shù)傳入)它匕,因此我們可以直接修改Makeconf中的參數(shù)展融。

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已經(jīng)傳入-L參數(shù)窖认,因此我們只需在后面加上-Wl參數(shù)并指定相應(yīng)庫路徑豫柬。注:原來的-L參數(shù)仍要保留。
#-L參數(shù)只能讓路徑在gcc編譯時有效,而-Wl參數(shù)只能讓其在運行時有效扑浸。

make成功烧给。

3.make install
make成功后,一般這一步?jīng)]啥問題喝噪。

參考:https://xieduo7.github.io/2018-04-02-R%E5%AE%89%E8%A3%85.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
更多參數(shù)--help一下

2. install.packages
which R查看下路徑础嫡,是否是剛才自己安裝的R。敲R酝惧,或全路徑進入R
install.packages('mypackage')榴鼎,這種方式針對CRAN包。
一般會讓你選擇鏡像晚唇。選擇自己最近的巫财,有的鏡像所含的R包不是很全,需要換一下哩陕。如果沒有自己想要的鏡像平项,也可自己指定(在R官網(wǎng)中可查鏡像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")  #如已安裝扣讼,后續(xù)安裝不再需要
BiocManager::install("clusterProfiler")

不推薦以下安裝方法缺猛,速度會很慢。

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

如果不指定R包安裝的路徑椭符,R包會安裝在/your/R/lib64/R/library中枯夜,這也是R自帶的基礎(chǔ)包的目錄。

一口氣裝了這么多包艰山,包括依賴炒雞多的tidyverse和clusterProfiler等湖雹,爽歪歪。


image.png

常見操作

1.包的操作和管理

  • 添加環(huán)境變量:
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庫路徑到環(huán)境變量:
export R_LIBS=/your/R_packages
export R_LIBS=/others/.../R/lib64/R/library #添加環(huán)境變量R的lib路徑曙搬,可以使用別人安裝的包

R中用.libPaths()函數(shù)查看lib路徑摔吏,如果有多個lib,install.packages()默認是安裝在第一個目錄下纵装。如果一開始就沒指定R包安裝路徑并配置環(huán)境變量征讲,則默認安裝在/your/R/lib64/R/library中。

2. 其他操作
其實和window控制臺一樣橡娄,只是換成了單命令行:

.libPaths() #查看包的安裝目錄
library() #查看已經(jīng)安裝的包目錄
library(package) #載入mypackage包
getOption("defaultPackages") #查看啟動R時自動載入的包诗箍。
help(package = 'mypackage') #查看‘mypackage’的幫助

args(function):查看函數(shù)的參數(shù)
example(function):自動運行該函數(shù)幫助文檔中的例子,很贊挽唉!
demo("package"):展示包中demo
vignette('mypackage'):有的包特別是bioconductor的包有vignette
openVignette('mypackage'):這個函數(shù)也可以查看vignette滤祖,更好用一些
RSiteSearch("helpinfor"):搜索R網(wǎng)站上的“helpinfor”相關(guān)信息
help.start():查看已經(jīng)安裝包的詳細HTML文檔,這個命令非常爽瓶籽。

search():查看當前載入的包
sessionInfo():查看R中載入的包
methods():查看某個S3泛型函數(shù)中所有的方法或者一個類中所有的方法(S3:S version 3)
showMethods(class = "myClass"):查看S4類的方法
findMethods("myMethods"):查看method的代碼
class(myObject):查看某個對象的類
getClass(“class/package”):查看某個class或者包的具體內(nèi)容
getSlots("class"):查看某個class的slot
slotNames(MyObject):查看某個對象的slot匠童。
可以使用Myobject@slotNames訪問對象的slot值,這個@設(shè)計實在是太爽了塑顺,可以連續(xù)用汤求。

查詢包內(nèi)信息:
1. ?function/method:查看某個“函數(shù)”或者“方法”的詳細內(nèi)容
2. class?graph::graph:查看“組”的詳細內(nèi)容的一個例子。這個例子的來源是查詢graph包時候严拒,查看其中class的信息扬绪,輸入??graph后出現(xiàn)一個graph::graph-class。

ls("package:mypackage"):查看"mypackage"中的所有對象裤唠。

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末挤牛,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巧骚,更是在濱河造成了極大的恐慌赊颠,老刑警劉巖格二,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竣蹦,居然都是意外死亡顶猜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門痘括,熙熙樓的掌柜王于貴愁眉苦臉地迎上來长窄,“玉大人,你說我怎么就攤上這事纲菌∧尤眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵翰舌,是天一觀的道長嚣潜。 經(jīng)常有香客問我,道長椅贱,這世上最難降的妖魔是什么懂算? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮庇麦,結(jié)果婚禮上计技,老公的妹妹穿的比我還像新娘。我一直安慰自己山橄,他們只是感情好垮媒,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著航棱,像睡著了一般睡雇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丧诺,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天入桂,我揣著相機與錄音奄薇,去河邊找鬼驳阎。 笑死,一個胖子當著我的面吹牛馁蒂,可吹牛的內(nèi)容都是我干的呵晚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼沫屡,長吁一口氣:“原來是場噩夢啊……” “哼饵隙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沮脖,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤金矛,失蹤者是張志新(化名)和其女友劉穎芯急,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體驶俊,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡娶耍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了饼酿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片榕酒。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖故俐,靈堂內(nèi)的尸體忽然破棺而出想鹰,到底是詐尸還是另有隱情,我是刑警寧澤药版,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布辑舷,位于F島的核電站,受9級特大地震影響槽片,放射性物質(zhì)發(fā)生泄漏惩妇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一筐乳、第九天 我趴在偏房一處隱蔽的房頂上張望歌殃。 院中可真熱鬧,春花似錦蝙云、人聲如沸氓皱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽波材。三九已至,卻和暖如春身隐,著一層夾襖步出監(jiān)牢的瞬間廷区,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工贾铝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留隙轻,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓垢揩,卻偏偏與公主長得像玖绿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子叁巨,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容