【編譯R語言】
1、下載安裝R語言
# 下載R-3.3.2
$ wget https://cran.r-project.org/src/base/R-3/R-3.3.2.tar.gz# 安裝R-3.3.2
$ tar -zxvf R-3.3.2.tar.gz
$ cd R-3.3.2# 安裝到默認目錄下 --perfix=/opt/R 或 /usr/local/lib64/R
$ ./configure --prefix=/opt/R --with-readline=yes --with-x=yes --enable-R-shlib
$ make
$ make install# 配置R環境變量
$ vim /etc/profile
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/R/lib64/R/lib/
#或 /usr/local/lib64/R/lib64/R/lib
export PATH=/opt/R/lib64/R/bin:$PATH
# (保存修改:Esc --> Shift+: --> wq)
2、測試R語言是否編譯成功
R
R version 3.3.2 (2016-10-31) -- "Sincere Pumpkin Patch"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.Natural language support but running in an English localeR is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.q()
如果centOS6中依賴版本過低,在R語言編譯過程中就會出現各種錯誤;常見的集中錯誤及解決方案如下:
Error1:--with-readline=yes (default) and headers/libs are not available
$ yum install readline-devel
Error2:–with-x=yes (default) and X11 headers/libs are not available
$ yum install libXt-devel
Error3: make 過程中會出現類似錯誤:checking if XXX version >= 1.0.6... no, 可以參考:
http://blog.sina.com.cn/s/blo...
http://pj.freefaculty.org/blo...
# step1:下載安裝zlib
$ wget http://www.zlib.net/zlib-1.2.11.tar.gz
$ tar zlib-1.2.11.tar.gz
$ cd zlib-1.2.11.tar.gz
$ ./configure --prefix=/opt/packages
$ make
$ make install# step2:下載和安裝bzip2:
# bzip2不是標準的GNU包,根據下載的安裝文件的說明文檔,執行以下命令:
$ wget http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz
$ tar xzvf bzip2-1.0.6.tar.gz
$ cd bzip2-1.0.6
$ make -f Makefile-libbz2_so
$ make clean
$ make
$ make install PREFIX=/opt/packages
# 注意:這里下載完bzip2后,需要修改Makefile文件,在CFLAGS這個變量后面添加:-fPIC,否則后面安裝R的時候會報錯。# step3:安裝xz包:
$ wget http://tukaani.org/xz/xz-5.2.2.tar.gz
$ tar xzvf xz-5.2.2.tar.gz
$ cd xz-5.2.2
$ ./configure --prefix=/opt/packages
$ make -j3
$ make install# step4:安裝pcre包:
$ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz
$ tar xzvf pcre-8.38.tar.gz
$ cd pcre-8.38
$ ./configure --enable-utf8 --prefix=/opt/packages
$ make -j3
$ make install# step5:安裝curl包:
$ wget --no-check-certificate http://curl.haxx.se/download/curl-7.51.0.tar.gz
$ tar -zxf curl-7.51.0.tar.gz
$ cd curl-7.51.0
$ ./configure --prefix=/opt/packages
$ make -j3
$ make install# step6:設置安裝好的包的環境變量(!這步最重要):
export PATH=/opt/packages/bin:PATH
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/opt/packages/lib/
export CFLAGS="-I/opt/packages/include"
export LDFLAGS="-L/opt/packages/lib"
# 前兩個是安裝R的“make”過程需要用到的,后兩個是“configure”過程需要用到的。
Error4: /opt/packages/lib/libbz2.a: could not read symbols: Bad value
參考網站:
http://www.blogjava.net/haha0...
http://www.cnblogs.com/qq7829...
# step1:刪除原先安裝的庫(這三個東西一環扣一環,真麻煩)
# 如果發現 libbz2.a: could not read symbols: Bad value
# 就應該把/opt/packages/lib中的libbz2.a刪掉
# 進入解壓縮的zlib-1.2.8目錄,用make clean命令清理一下。
# 同樣,/opt/packages/libz.a: could not read symbols
# 操作同上,刪掉libz.a,把bzip2-1.0.4目錄的編譯文件清理一下。# step2:修改zlib-1.2.8的Makefile文件
# 把gcc的編譯參數加上 -fPIC
$ cd zlib-1.2.8
$ vi Makefile
# 原文:CFLAGS=-O3 -DUSE_MMAP
# 修改為:CFLAGS=-O3 -DUSE_MMAP -fPIC
# (保存修改:Esc --> Shift+: --> wq)
make clean #清理之前的編譯,再按錯誤三的方法安裝# step3:修改bzip2-1.0.6的Makefile文件
$ cd bzip2-1.0.6
$ vi Makefile #按下面改
# CC=gcc -fPIC
# AR=ar
# RANLIB=ranlib
# LDFLAGS=
# BIGFILES=-D_FILE_OFFSET_BITS=64
# CFLAGS=-fPIC -Wall -Winline -O2 -g (BIGFILES)
# (保存修改:Esc --> Shift+: --> wq)
$ make clean #清理之前的編譯,再按錯誤3的方法安裝
Error5:
/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 `lzma_code@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_raw_encoder@XZ_5.0'
../../lib/libR.so: undefined reference to `lzma_stream_decoder@XZ_5.0'
............................
../../lib/libR.so: undefined reference to `pcre_study'
../../lib/libR.so: undefined reference to `lzma_stream_encoder@XZ_5.0'
collect2: 錯誤:ld 返回 1
make[3]: * [R.bin] 錯誤 1
make[3]: Leaving directory `/home/lingang/R-3.3.2/src/main'
make[2]: * [R] 錯誤 2
make[2]: Leaving directory `/home/lingang/R-3.3.2/src/main'
make[1]: * [R] 錯誤 1
make[1]: Leaving directory `/home/lingang/R-3.3.2/src'
make: * [R] 錯誤 1
# 解決方法:加環境變量,上面錯誤是因為沒加環境變量
$ set #看是否有LD_LIBRARY_PATH=/opt/packages/lib/
# 如沒有輸入如下:
$ export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/opt/packages/lib/
Error6:
/usr/bin/install: 無法獲取"NEWS.pdf" 的文件狀態(stat): 沒有那個文件或目錄
/usr/bin/install: 無法獲取"NEWS.pdf" 的文件狀態(stat): 沒有那個文件或目錄
make: * [install-sources2] 錯誤 1
參考網址:http://www.cnblogs.com/luomgf...
# 解決方法:
$ vim doc/Makefile
# 將18、19行改為下面這樣,即去掉NEWS.pdf
INSTFILES2 = NEWS.rds NEWSNON_SVN_INSTFILES = FAQ RESOURCES NEWS
INSTFILES2 = NEWS.rds NEWS
# 19 #NEWS.pdf
# 20 NON_SVN_INSTFILES = FAQ RESOURCES NEWS
# 21 #NEWS.pdf
# 22 ## generated later.
# (保存修改:Esc --> Shift+: --> wq)
[編譯Rstudio-Server]
不同的系統環境,有對應不同的安裝方式與安裝包,安裝前先確定系統環境
確定系統版本為Cent OS(5.4+)
可以參照:https://www.rstudio.com/produ...
$ cat /etc/issue
CentOS release 6.4 (Final)
確認以下動態鏈接庫文件已安裝,
libcairo.so.2 libcrypto.so.6 libgfortran.so.1 libpango-1.0.so.0 libpangocairo-1.0.so.0 libssl.so.6 openssl098e-0.9.8e
否則可以按如下方式安裝:
$ yum install libcrypto.so.6
$ yum install libgfortran.so.1
$ yum install openssl098e-0.9.8e
$ yum install libcairo.so.2
$ yum install libpango-1.0.so.0
$ yum install libpangocairo-1.0.so.0
$ yum install libssl.so.6
安裝rstudio server并驗證:
# 安裝rstudio server
$ wget https://download2.rstudio.org/rstudio-server-rhel-1.0.44-x86_64.rpm
$ rpm -Uvh --nodeps rstudio-server-rhel-1.0.44-x86_64.rpm# 驗證是否成功
$ rstudio-server verify-installation
rstudio-server stop/waiting
rstudio-server start/running
# 如果在驗證安裝是否正確時,仍然會報某些動態鏈接庫文件,無法找到如:
# 可能會報libgfortran.so.1無法找到,但/usr/lib64目錄下有更高版本的
# libgfortran.so.3.0.0時,可以下命令來解決:
$ ln –s /usr/lib64/ libgfortran.so.3.0.0 /usr/lib64/ libgfortran.so.1# 配置Rstudio-server端口
$ vi /etc/rstudio/rserver.conf
www-port=8787
rsession-which-r=/opt/R/lib64/R/bin/R
#(保存修改:Esc --> Shift+: --> wq)
創建linux用戶,并訪問Rstudio-server:
# 創建賬戶
$ usradd test
# 創建賬戶密碼
$ passwd test
用戶創建成功后訪問:http://XXX.XX.XXX.XX:8787/,登陸以上賬號,即可使用Rstudio-server。
同樣,Rstudio-server編譯過程中也會出現一些錯誤,解決方式如下:
Error1:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
$ yum -y install epel-release
$ vi /etc/yum.repos.d/epel.repo
#<把 #name baseurl 改為 name #baseurl> 例如:
# #name=Extra Packages for Enterprise Linux 6 - basearch
# baseurl=http://download.fedoraproject.org/pub/epel/6/basearch
# 改為:
# name=Extra Packages for Enterprise Linux 6 - basearch
# #baseurl=http://download.fedoraproject.org/pub/epel/6/basearch
# (保存修改:Esc --> Shift+: --> wq)