R&RStudio安装/升级

在升级R之前,首先创建临时文件,保存以前的R包
> tmp = installed.packages()
> installedpkgs = as.vector(tmp[is.na(tmp[,"Priority"]), 1])
> save(installedpkgs, file="installed_old.rda")
然后升级R
#R的更新/安装
#参考链接:https://cran.r-project.org/
sudo yum install R
sudo yum update R

yum list R-\*

which R
#/usr/bin/R

R --version
# R version 3.4.1 (2017-06-30) -- "Single Candle"
# ......

#RStudio Server下载与安装
#RStudio Server下载地址:https://www.rstudio.com/products/rstudio/download-server/
wget https://download2.rstudio.org/rstudio-server-rhel-1.0.153-x86_64.rpm
sudo yum install --nogpgcheck rstudio-server-rhel-1.0.153-x86_64.rpm
更新R包
#从CRAN中重新安装R包
tmp = installed.packages()
installedpkgs.new = as.vector(tmp[is.na(tmp[,"Priority"]), 1])
missing = setdiff(installedpkgs, installedpkgs.new)
install.packages(missing)
update.packages(ask=FALSE, checkBuilt=TRUE)

#从BioConductor中重新载入
# 卸载Biocondutor
remove.packages("BiocInstaller", lib=.libPaths())
# 确认Biocondutor被卸载后,重新安装
## 显示CRAN镜像的列表,就近原则
chooseCRANmirror()
## 由于使用 bioconductor 的biocLite()安装程序包时,可能速度很慢,所以可以先使用chooseBioCmirror()选择中国镜像,用于提高安装速度
# 查看哪些R包已经过时
biocValid()

load("installed_old.rda")
tmp = installed.packages()
installedpkgs.new = as.vector(tmp[is.na(tmp[,"Priority"]), 1])
missing = setdiff(installedpkgs, installedpkgs.new)
for (i in 1:length(missing)) biocLite(missing[i])

rserver配置文件

ls /etc/rstudio/
#server.conf  rsession.conf

vim /etc/rstudio/rserver.conf
# 添加下面三行
www-port=8787  #指定端口号,<其他值也可>
www-address=<server-ip> #指定服务器的ip
rsession-which-r=/usr/bin/R  #指定R版本,如果我们的系统上有多个版本的R,那么可以使用rsession-which-r参数指定RStudio 使用哪个版本的R。

#此时,即可通过http://localhost:8787/即可在浏览器中访问RStudio

RStudio Server使用

#以下操作需root权限
rstudio-server restart #重启
rstudio-server start  #启用
rstudio-server stop   #停止

rstudio-server offline #服务下线;
rstudio-server online #服务上线

#管理RStudio-server进程:
#查看运行中的R进程:
rstudio-server active-sessions

#指定PID, 停止运行中的R进程:
rstudio-server suspend-session 6666

#停止所有运行中的R进程:
rstudio-server suspend-all

#强制停止运行中的R进程,此操作优先级最高,立刻执行:
rstudio-server force-suspend-session <pid> 
rstudio-server force-suspend-all

问题

当登陆网页版的RStudio,显示error : unable to connect to service 或者rstudio initialization error: unable to connect to service

#首先尝试重启服务,
sudo rstudio-server restart
#initctl: Unknown instance:
#但是若重启发现报错信息,则可以执行下面三步:
#注意:解决问题之前首先按上面介绍的步骤安装好R&RStudio Server
#1) check the process that used 8787
sudo fuser 8787/tcp

#2) with the -k option to kill all process.
sudo fuser -k 8787/tcp

#3) Start RStudio Server
sudo rstudio-server start

参考链接:initctl: Unknown instance


更新R包可用的快捷途径

#R升级之后的R包的升级(无比烦躁,我为什么要更新R!!!)

#将以前的包移动到指定的R包安装目录
cp -r R/3.4/* /home/users/R/R_packages
#最后更新
update.packages(ask=FALSE, checkBuilt=TRUE)

#查看R包的安装目录
> .libPaths()
[1] "/home/users/R/R_packages" "/usr/lib64/R/library"              
[3] "/usr/share/R/library" 

#查看指定R包安装的路径
> system.file(package = "stringr")
[1] "/usr/lib64/R/library/stringr"

#查看已安装的R包
> installed.packages()

#快速判断某个包是否安装:
> "stringr" %in% installed.packages()[, 1]

R 会根据 R_LIBSR_LIBS_USER 这两个环境变量来查找, 默认是在 R 的安装路径下和/usr 的对应目录下, 可以在 R 里面输入 .libPaths()来确认当前的 R 包查找路径, 具体方法如下

  1. 在自己 HOME 下的 .Renviron 文件 (touch .Renviron) 里增加 R_LIBS_USER 变量, 如:
    R_LIBS_USER="/public/home/users/R/R_packages"
    若需加多个路径,操作同 bash 里一样用 : 分隔
    推荐使用该方法
  2. 更改自己的 .bashrc, 增加 R_LIBS 变量, 如:
    export R_LIBS="/public/home/users/R/R_libs"
  3. 在 R 里用 .libPaths("path/to/your/lib")来增加路径

当在CRAN 上找不到的包时,只有一个zip或者tarball的形式。用以下命令安装:
R CMD INSTALL --library=/path/to/my/R/lib foo_0.76.tar.gz

如果写脚本投集群上跑, 那么传环境变量就比较麻烦, 出于方便, 可以在脚本里加载包的命令中增加参数指定路径, 如:
library("package_name", lib.loc = "path/to/your/lib")

安装指定版本的R package
install.packages("https://cran.r-project.org/src/contrib/Archive/foo/foo_0.19.0.tar.gz",repos=NULL)


用途:使用文件或文件结构识别进程

用法: fuser(选项)(参数)
选项:
-a:显示命令行中指定的所有文件; 
-k:杀死访问指定文件的所有进程; 
-i:杀死进程前需要用户进行确认; 
-l:列出所有已知信号名; 
-m:指定一个被加载的文件系统或一个被加载的块设备; 
-n:选择不同的名称空间; 
-u:在每个进程后显示所属的用户名。


#每个进程号后面都跟随一个字母,该字母指示进程如何使用文件。
c:指示进程的工作目录。 
e:指示该文件为进程的可执行文件(即进程由该文件拉起)。 
f:指示该文件被进程打开,默认情况下f字符不显示。 
F:指示该文件被进程打开进行写入,默认情况下F字符不显示。 
r:指示该目录为进程的根目录。 
m:指示进程使用该文件进行内存映射,抑或该文件为共享库文件,被进程映射进内存。

参数:文件名或者TCP、UDP端口号。

ref link: