对于我的系统:Ubuntu 12.04和R 3.03,每当我通过在R
中安装自定义软件包时>install.packages()
该软件包默认安装到
/home/USER/R/x86_64-pc-linus-gnu-library/3.0/
与全系统不同
/usr/local/lib/R/site-library/
这是 shiny-server 与该包一起使用所必需的。
我的临时解决方案是事后将包复制到正确的文件夹中。
问题:如何从一开始就设置默认安装路径以避免这个问题?
是的——我认为这是一个错误,并禁用了我的每用户目录。
此外,我主要使用脚本
install.r
(其中的一个版本是您可以作为 Ubuntu 的一部分安装的较小软件包中的示例),该脚本简单地将 /usr/local/lib/R/site-library
目录设置为默认目录。通过我们进入 R 3.0.2 或 3.0.3 的补丁,普通用户可以写入目录,现在将创建组可写目录,以便其他用户可以更新和覆盖 - 只需让每个人都是同一组的成员,比如说staff
或admin
。然后你甚至不需要 sudo
或 root。
这些年来,我基本上已经在这里回答过几次同样的问题(减去闪亮的角度,这并不是真正相关),所以请随意搜索其他问题以获取更多细节、示例……
我会提出一种不同的方法。
问题是shiny-server无法找到您安装的软件包,因为它以不同的用户身份运行它们,称为
shiny
。该用户是在安装闪亮服务器时创建的
解决此问题的最简单(也是最安全的)方法是使用以下步骤以闪亮用户身份安装软件包。
sudo passwd shiny
为用户设置密码,现在输入并确认您选择的密码。su - shiny
R
调用 $ R
(无需 sudo)请注意,如果您在同一台计算机上安装了 rstudio-server,则可以使用该界面执行步骤 2-4。只需使用相同的域/IP 并使用 :8787 作为 rstudio-server 接口,而不是 :3838 作为闪亮服务器。
改编自我的回答这里
提供另一种解决方案,即指定用户库作为位置,而不是指定
shiny
库,后者使用 /usr/local/lib/R/site-library
库位置作为您的用户名。
在
bash
中打开shiny-server配置文件
sudo nano /etc/shiny-server/shiny-server.conf
然后将
run_as
从 shiny
用户更改为您自己的用户名 soran
# Define the user we should use when spawning R Shiny processes
#run_as shiny; # old line
run_as soran;
# Define a top-level server which will listen on a port
server {
# Instruct this server to listen on port 3838
listen 3838;
....
更改文件后,停止服务器并再次启动,以便加载新配置。
sudo systemctl stop shiny-server
sudo systemctl start shiny-server
这将更改服务器提供的所有闪亮应用程序以使用用户
R
库。为了安全起见,我还建议不要使用具有管理员或 root 权限的用户。
可以仅将用户
R
库指定给特定应用程序。为此,您需要使用 run_as
和位置中的子目录名称来指定要在该用户配置文件下加载的某些闪亮应用程序子目录。请参阅以下文档了解更多详细信息。