leoatchina的博客

在服务器上装r时踩到的坑

为什么要在服务器上装R

其实原因很简单,服务器的性能更强,而且在装了anaconda2后,有比较理想的“云界面”,所以想要扩展R

下载,安装

1
2
3
wget && tar && cd # 这个都是常规,不表。出于实验的目的,我试了下无root权限安装
# 进行onfigure 这一步就出问题
./configure --prefix=$HOME/R/R-3.3.2 --enable-R-shlib

安装zlib

上一步时一直提醒我缺少安装zlib1.2.5以上版本,将就下载,也是无root安装

1
2
3
4
5
6
wget -c http://www.zlib.net/zlib1211.zip #注意我下载 的是1.2.11版本
unzip zlibi1211
cd zlib-1.2.11
./configure --prefix=$HOME/packages
make
make install

问题

还是同样的问题,提醒没有zlib1.2.5以上版本,好,指定目录confiture

./configure –prefix=$HOME/R/R-3.3.2 –enable-R-shlib LDFLAGS=”-L$HOME/packages/lib” CPPFLAGS=”-I$HOME/packages/include”

始终不行,中途试过root权限,换安装位置,重新下载3.3.1等,设置编译参数,都不行

检查configure代码

vim configure
发现了检查zlib版本的代码,有一个 >1.2.5

顿悟

在网上搜索时,发现很多人也有这个问题,突然想到,是不是这个检查zlib版本的代码不对,导致这一步检测不过?
我用的是 1.2.11的包,这是一个字符,不是一个数字
是不是作为字符来说,是1.2.11 < 1.2.5 ?

换装R3.2.5

由于此时已经下载了3.2.5的R包,所以试试

1
2
3
./configure --prefix=$HOME/R/R-3.2.5 --enable-R-shlib LDFLAGS="-L$HOME/packages/lib" CPPFLAGS="-I$HOME/packages/include" # 检查通过 !!!看来这个问题可能在3.3.X的版本上
make
make install # 顺利装上

第二天检查 R-3.3.2的安装

重新非root安装zlib1.2.8到$HOME/packages,然后去configureR-3.3.2

1
2
./configure --prefix=$HOME/R/R-3.3.2 --enable-R-shlib LDFLAGS="-L$HOME/packages/lib" CPPFLAGS="-I$HOME/packages/include" # 编译通过zlib,但是没通过bzip
# 不理他了,先用着已经装上的R-3.2.5版本吧!!!

### 给anconda2安装R扩展
首先,要把R加入当前的$PATH,在你的’~/.zshrc’或者’~/.bashrc’里加入

export PATH=”$HOME/anaconda2/bin:$HOME/R/R-3.2.5/bin:$PATH”
source ~/.zshrc

安装R的包

1
2
3
4
R # 第一样自然是启动R
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdoZMQ', 'devtools', 'uuid', 'digest'))
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec()

会有这样一句话 [InstallKernelSpec] Installed kernelspec ir in /home/xx/.local/share/jupyter/kernels/ir,同时你看到你可以生成R的文本了

在安装R包时可能碰到的问题

1
2
3
4
5
6
# 首先,是不能下载包
options(download.file.method = "wget")
# 编译时碰到的 libssl libcrypto 文件找不到的问题
cd /usr/lib64
sudo ln -s libcrypto.so.1.0.1e libcrypto.so.1.0.0
sudo ln -s libssl.so.1.0.1e libssl.so.1.0.0