前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Linux多用户R包权限问题解决及一次性协作项目构建

Linux多用户R包权限问题解决及一次性协作项目构建

原创
作者头像
叶子Tenney
修改于 2023-03-28 07:48:49
修改于 2023-03-28 07:48:49
8540
举报

引言

今天遇到的问题:

使用 BiocManager::install("edegR") 安装 edgeR 的时候, 提示一堆包需要更新, 但是更新进程显示无权限. 查看 .libPath() 可以看到出了自己的 "/home/tenney/R/x86_64-redhat-linux-gnu-library/4.1" 以外还有两个包库也可以作为来源, 且不可取消.

代码语言:text
AI代码解释
复制
r$> .libPaths()
[1] "/home/tenney/R/x86_64-redhat-linux-gnu-library/4.1" "/usr/lib64/R/library"                              
[3] "/usr/share/R/library"  

因此为以后考虑, 将 /usr/lib64/R/library 下的个人R包放到了私人目录.

/usr/lib64/R/library 设置权限为755.

那么, 如果想以团队协作为目的, 可否构建一个一次性R项目呢?

效果展示

过程

包库权限设置

/usr/lib64/R/library 下的个人R包放到了私人目录.

/usr/lib64/R/library 设置权限为755, 禁止普通用户写入.

新建共用包库, 权限设置为 777 , 使所有人可将该目录添加为包库.

代码语言:txt
AI代码解释
复制
$ chmod 777 -R Rlib                       
$ ll | grep Rlib
drwxrwxrwx   3 root        root               45 3月  26 19:38 Rlib
$ ll Rlib
total 0
drwxrwxrwx 3 root root 17 3月  26 19:38 x86_64-redhat-linux-gnu-library 

新建一批测试帐号

代码语言:shell
AI代码解释
复制
# create and edit
touch createuser.sh
vim createuser.sh

# run
chmod u+x createuser.sh
bash ./createuser.sh
代码语言:text
AI代码解释
复制
for i in {1..10}
do
	username=gsegroup_$i;
	echo $username;
	if [ -n $username ]
	then
		sudo useradd -d /home/$username -s /bin/bash -m $username
		echo $username:$username | sudo chpasswd
		echo "user $username added!"
	else
		echo "the username is null!"
	fi
done

进入一个新账户的rstudio-servers:

依次选择上传项目文件.

将自动进行解压, 进入解压文件夹点击Rproj文件.

使用 .libPaths(c(.libPaths(), "/home/Rlib/x86_64-redhat-linux-gnu-library/4.1")) 指定项目使用包库.

结论

长期使用自然是单人单库最好, 但是团队项目如果想要节约时间精力, 那么做一些批量行为也未尝不可.

引用

  1. libPaths function - RDocumentation

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文