史上最麻煩的linux下R源碼安裝(有/無(wú)root權(quán)限)

本文記錄的是linux下R安裝的心得械媒,windows下的安裝方法請(qǐng)自行g(shù)oogle:
先說(shuō)有root權(quán)限的時(shí)候:
官網(wǎng)上下載R源碼:找到latest release 版本:R-3.5.1.tar.gz

https://mirrors.tuna.tsinghua.edu.cn/CRAN/

官網(wǎng)圖

解壓胸遇,進(jìn)入路徑

tar -zxvf R-3.5.1.tar.gz 
cd R-3.5.1
./configure

有報(bào)錯(cuò):

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

設(shè)置如下參數(shù): ./configure --with-readline=no
或者centos系統(tǒng):安裝readline:yum install readline-devel
或者ubuntu系統(tǒng):安裝readline:

安裝成功后繼續(xù)./configure 又出現(xiàn)報(bào)錯(cuò):

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

設(shè)置參數(shù) --with-x=no
或者安裝x:

yum install libX11-devel 
yum install libXt-devel  

繼續(xù)
./configure --with-readline=no --with-x=no
還報(bào)錯(cuò):沒(méi)有裝libzma

configure: error: "liblzma library and headers are required"

解決方法:

wget https://tukaani.org/xz/xz-5.2.4.tar.gz
tar -zxvf xz-5.2.4.tar.gz
cd xz-5.2.4/
./configure
make
make install

安裝完成xz,無(wú)報(bào)錯(cuò)读拆,再來(lái)繼續(xù)編譯R
./configure --with-readline=no --with-x=no
又報(bào)錯(cuò):沒(méi)有pcre

checking whether PCRE support suffices... configure: error: pcre >= 8.20 library and headers are required

解決方法:

wget https://nchc.dl.sourceforge.net/project/pcre/pcre/8.42/pcre-8.42.tar.gz
tar -zxvf pcre-8.42.tar.gz
cd pcre-8.42.tar.gz
./configure
make
make install

安裝完成pcre擅憔,無(wú)報(bào)錯(cuò),再來(lái)繼續(xù)編譯R
./configure --with-readline=no --with-x=no
又報(bào)錯(cuò):沒(méi)有l(wèi)ibcurl

configure: error: libcurl >= 7.22.0 library and headers are required with support for https

解決方法:

wget https://curl.haxx.se/download/curl-7.61.0.tar.gz
tar -zxvf curl-7.61.0.tar.gz
cd curl-7.61.0/
./configure
make
make install

安裝完成curl檐晕,無(wú)報(bào)錯(cuò),再來(lái)繼續(xù)編譯R
./configure --with-readline=no --with-x=no
又報(bào)錯(cuò):

configure: error: libcurl >= 7.22.0 library and headers are required with support for https

好像上一步的libcurl沒(méi)有安裝成功吶暑诸?奇怪,
仔細(xì)觀察了一下辟灰,發(fā)現(xiàn)雖然是以root下載的个榕,但是解壓后的目錄是以用戶擁有的方式,于是
用sudo的方式試一次:

sudo ./configure
make
make install
安裝完成芥喇,無(wú)報(bào)錯(cuò)

再來(lái)安裝R
./configure --with-readline=no --with-x=no
報(bào)錯(cuò):

configure: error: libcurl >= 7.22.0 library and headers are required with support for https

還是這個(gè)錯(cuò)西采。。继控。械馆。。
已奔潰武通。霹崎。。

$ curl -V
curl 7.60.0 (x86_64-conda_cos6-linux-gnu) libcurl/7.60.0 OpenSSL/1.0.2o zlib/1.2.11
Release-Date: 2018-05-16
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy

看版本冶忱,已經(jīng)是7.60了呀仿畸。
有人說(shuō)要下載libcurl-devel,

wget http://mirrors.163.com/centos/7/os/x86_64/Packages/libcurl-devel-7.29.0-46.el7.x86_64.rpm
wget http://mirrors.163.com/centos/7/os/x86_64/Packages/libcurl-7.29.0-46.el7.x86_64.rpm

rpm -ivh libcurl-devel-7.29.0-46.el7.x86_64.rpm libcurl-7.29.0-46.el7.x86_64.rpm

試了還是不行朗和,最后错沽。。眶拉。
用別的用戶名登錄千埃,不用root登錄

./configure --with-readline=no --with-x=no
···
R is now configured for x86_64-pc-linux-gnu
  Source directory:          .
  Installation directory:    /usr/local
  C compiler:                gcc -std=gnu99  -g -O2
  Fortran 77 compiler:       gfortran  -g -O2
  Default C++ compiler:      g++   -g -O2
  C++98 compiler:            g++ -std=gnu++98 -g -O2
  C++11 compiler:            g++ -std=gnu++11 -g -O2
  C++14 compiler:
  C++17 compiler:
  Fortran 90/95 compiler:    gfortran -g -O2
  Obj-C compiler:
  Interfaces supported:
  External libraries:        readline, curl
  Additional capabilities:   NLS
  Options enabled:           shared BLAS, R profiling
  Capabilities skipped:      PNG, JPEG, TIFF, cairo, ICU
  Options not enabled:       memory profiling
  Recommended packages:      yes
configure: WARNING: you cannot build info or HTML versions of the R manuals
configure: WARNING: you cannot build PDF versions of the R manuals
configure: WARNING: you cannot build PDF versions of vignettes and help pages

最后只有三個(gè)無(wú)關(guān)緊要的提醒。
趕緊
sudo make
輸入了密碼
sudo make install
成功了 但是使用時(shí)還是沒(méi)有有問(wèn)題忆植,沒(méi)有l(wèi)ibR.so放可?谒臼?

當(dāng)沒(méi)有安裝bzip2時(shí)會(huì)報(bào)錯(cuò)如下:

checking whether bzip2 support suffices... configure: error: bzip2 library and headers are required

最后。耀里。蜈缤。
一怒之下刪掉了安裝了所有版本R,

rm -rf /usr/bin/R*
rm -rf /usr/local/bin/R*
刪掉了安裝的所有bzip2,
rm -rf /usr/local/bin/bz*
rm -rf /usr/local/include/bz*
yum remove bzip2
重新解壓 bzip2
tar -zxvf bzip2-1.0.6.tar.gz
cd bzip2-1.0.6
make -f Makefile-libbz2_so
修改Makefile其中兩行冯挎。
vi Makefile
CC=gcc -fPIC
CFLAGS=-Wall -fPIC -Winline -O2 -g $(BIGFILES)

然后
make
make install
然后安裝R
將原來(lái)R解壓的路徑也刪掉了
重新解壓R包

tar -zxvf R-3.5.1.tar.gz
cd R-3.5.1
./configure --enable-R-shlib
居然沒(méi)有報(bào)錯(cuò)
make
make install

都沒(méi)有報(bào)錯(cuò)底哥。。房官。趾徽。。翰守。


重點(diǎn)來(lái)了

將R安裝到指定路徑下:在沒(méi)有root權(quán)限時(shí)孵奶,我們只能安裝在指定目錄下。

要想安裝到指定目錄中則需要指定: --prefix=/path/to/install/
./configure --enable-R-shlib,先根據(jù)報(bào)錯(cuò)將依賴的各種庫(kù)都裝上蜡峰。安裝時(shí)也要指定路徑了袁,一般情況下我會(huì)將其安裝在解壓后的該目錄。
先后安裝了zlib湿颅,bzip2,xz,curl.
然后編譯的時(shí)候要加上LDFLAGS和CPPFLAGS相關(guān)的路徑:

./configure --prefix=$HOME/Programme/R-3.3.1 --enable-R-shlib LDFLAGS="-L/$HOME/Programme/zlib-1.2.11/lib -L/$HOME/Programme/bzip2-1.0.6/lib -L/$HOME/Programme/xz-5.2.3/lib -L/$HOME/Programme/pcre-8.40/lib -L/$HOME/Programme/curl-7.52.1/lib" CPPFLAGS="-I/$HOME/Programme/zlib-1.2.11/include -I/$HOME/Programme/bzip2-1.0.6/include -I/$HOME/Programme/xz-5.2.3/include -I/$HOME/Programme/pcre-8.40/include -I/$HOME/Programme/curl-7.52.1/include"

然而還是會(huì)報(bào)錯(cuò):


報(bào)錯(cuò):

/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) 
../../lib/libR.so: undefined reference to `pcre_fullinfo' 
../../lib/libR.so: undefined reference to `lzma_lzma_preset@XZ_5.0' 
../../lib/libR.so: undefined reference to `lzma_alone_decoder@XZ_5.0' 
../../lib/libR.so: undefined reference to `lzma_crc64@XZ_5.0' 
../../lib/libR.so: undefined reference to `lzma_raw_encoder@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_config' 
../../lib/libR.so: undefined reference to `lzma_code@XZ_5.0' 
../../lib/libR.so: undefined reference to `lzma_stream_decoder@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_free' 
../../lib/libR.so: undefined reference to `lzma_raw_decoder@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_free_study' 
../../lib/libR.so: undefined reference to `pcre_assign_jit_stack' 
../../lib/libR.so: undefined reference to `pcre_exec' 
../../lib/libR.so: undefined reference to `lzma_version_string@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_maketables' 
../../lib/libR.so: undefined reference to `lzma_stream_encoder@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_compile' 
../../lib/libR.so: undefined reference to `pcre_study' 
../../lib/libR.so: undefined reference to `pcre_version' 
../../lib/libR.so: undefined reference to `lzma_end@XZ_5.0' 
../../lib/libR.so: undefined reference to `pcre_jit_stack_alloc' 
collect2: error: ld returned 1 exit status 
make[3]: *** [R.bin] Error 1 
make[3]: Leaving directory `/builder/software/R/src/main' 
make[2]: *** [R] Error 2 
make[2]: Leaving directory `/builder/software/R/src/main' 
make[1]: *** [R] Error 1 
make[1]: Leaving directory `/builder/software/R/src' 
make: *** [R] Error 1

重點(diǎn)來(lái)了:

/usr/bin/ld: warning: libpcre.so.1, needed by ../../lib/libR.so, not found (try using -rpath or -rpath-link)
怎么會(huì)有這樣的報(bào)錯(cuò)载绿?編譯的時(shí)候不是已經(jīng)將這兩個(gè)庫(kù)的路徑傳入了呀?
一番搜索后肖爵,
有人提出

要添加動(dòng)態(tài)庫(kù)
#cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/opt/pcre-8.39/lib
/opt/xz-5.2.2/lib
然后執(zhí)行
#ldconfig

但是我沒(méi)有root權(quán)限啊,于是再一帆研究臀脏,根據(jù)報(bào)錯(cuò)提示劝堪,設(shè)置一下-rpath看行不行。
修改Makeconf文件揉稚,再LDFLAGS這里加上了-Wl,-rpath后面跟這兩個(gè)庫(kù)的路徑秒啦,

LDFLAGS = -L/BIGDATA1/cygene_sydu_1/02.dropEst/zlib-1.2.11/lib -L/BIGDATA1/cygene_sydu_1/02.dropEst/bzip2-1.0.6/lib -L/BIGDATA1/cygene_sydu_1/02.dropEst/xz-5.2.4/lib -L/BIGDATA1/cygene_sydu_1/02.dropEst/pcre-8.42/lib -L/BIGDATA1/cygene_sydu_1/02.dropEst/curl-7.61.0/lib -Wl,-rpath=/BIGDATA1/cygene_sydu_1/02.dropEst/pcre-8.42/lib -Wl,-rpath=/BIGDATA1/cygene_sydu_1/02.dropEst/xz-5.2.4/lib

再進(jìn)行make,make install就不會(huì)報(bào)錯(cuò),完成安裝搀玖。
或者在編譯的時(shí)候直接將-Wl,-rpath=/的路徑跟在LDFLAGS里面余境,要寫(xiě)兩次哦。

補(bǔ)充:
如果遇到如下報(bào)錯(cuò)

begin installing recommended package Matrix
ERROR: failed to lock directory ‘/BIGDATA1/cygene_sydu_1/software/R-3.5.1/library’ for modifying
Try removing ‘/BIGDATA1/cygene_sydu_1/software/R-3.5.1/library/00LOCK-Matrix’
make[2]: *** [Matrix.ts] Error 1
make[2]: Leaving directory `/BIGDATA1/cygene_sydu_1/software/R-3.5.1/src/library/Recommended'
make[1]: *** [recommended-packages] Error 2
make[1]: Leaving directory `/BIGDATA1/cygene_sydu_1/software/R-3.5.1/src/library/Recommended'
make: *** [stamp-recommended] Error 2

這里是開(kāi)始安裝某個(gè)package時(shí)失敗了灌诅,那么想讓它跳過(guò)芳来,不安裝就好了,在提示的報(bào)錯(cuò)信息中找到安裝該package的路徑猜拾,把里面的相應(yīng)的package刪掉即可即舌,我這里刪掉了Martrix包;
rm /BIGDATA1/cygene_sydu_1/software/R-3.5.1/src/library/Recommended/Matrix*

等R安裝成功后再手動(dòng)將這些包裝上挎袜。

R 包的安裝

R的package安裝時(shí)遇到錯(cuò)誤可以換鏡像路徑顽聂,舉例如下:
install.packages("Rcpp",dependencies=TRUE, repos='http://cran.rstudio.com/')
install.packages("ggplot2",dependencies=TRUE, repos='http://cran.rstudio.com/')

R ggforce 包安裝

install.packages("ggforce")
library(ggforce)

# geom_circle() 是來(lái)自ggforce這個(gè)包肥惭。用法跟ggplot一樣:

ggplot(df.venn, aes(x0=x, y0=y, r= 1.5, fill = labels)) +
  geom_circle(alpha=.3, size=1, colour='grey') +
  coord_fixed() + theme_void()

關(guān)于bioconductor

R limma 包安裝

source("http://www.bioconductor.org/biocLite.R")
biocLite("limma")
library(limma)

R tidyverse包安裝

source("http://www.bioconductor.org/biocLite.R")
biocLite("tidyverse")
library(tidyverse)

其他包安裝

source("[http://bioconductor.org/biocLite.R](http://bioconductor.org/biocLite.R)")
biocLite("ALL") 安裝 ALL
biocLite("hgu95av2.db")

library(ALL)
library(hgu95av2.db)

總結(jié):

Ubuntu下基本上可以通過(guò)安裝這些庫(kù)解決:

sudo apt-get install build-essential
sudo apt-get install fort77 (error)
sudo apt-get install xorg-dev
sudo apt-get install liblzma-dev libblas-dev gfortran
sudo apt-get install gcc-multilib
sudo apt-get install gobjc++ (error)
sudo apt-get install aptitude
sudo apt-get install libreadline-dev

最簡(jiǎn)單的安裝R的方法是:通過(guò)conda安裝,先安裝annaconda2或3紊搪,再通過(guò)conda install R蜜葱,就可以一鍵安裝R,非常方便耀石,繞過(guò)手動(dòng)源碼安裝牵囤。省好多事

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市娶牌,隨后出現(xiàn)的幾起案子奔浅,更是在濱河造成了極大的恐慌,老刑警劉巖诗良,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汹桦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鉴裹,警方通過(guò)查閱死者的電腦和手機(jī)舞骆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)径荔,“玉大人督禽,你說(shuō)我怎么就攤上這事∽艽Γ” “怎么了狈惫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹦马。 經(jīng)常有香客問(wèn)我胧谈,道長(zhǎng),這世上最難降的妖魔是什么荸频? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任菱肖,我火速辦了婚禮,結(jié)果婚禮上旭从,老公的妹妹穿的比我還像新娘稳强。我一直安慰自己,他們只是感情好和悦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布退疫。 她就那樣靜靜地躺著,像睡著了一般鸽素。 火紅的嫁衣襯著肌膚如雪蹄咖。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天付鹿,我揣著相機(jī)與錄音澜汤,去河邊找鬼蚜迅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛俊抵,可吹牛的內(nèi)容都是我干的谁不。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼徽诲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼刹帕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起谎替,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤偷溺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钱贯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挫掏,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年秩命,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尉共。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弃锐,死狀恐怖袄友,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情霹菊,我是刑警寧澤剧蚣,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布,位于F島的核電站旋廷,受9級(jí)特大地震影響鸠按,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柳洋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一待诅、第九天 我趴在偏房一處隱蔽的房頂上張望叹坦。 院中可真熱鬧熊镣,春花似錦、人聲如沸募书。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)莹捡。三九已至鬼吵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篮赢,已是汗流浹背齿椅。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工琉挖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣脚。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓示辈,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親遣蚀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子矾麻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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