R 服务器中缺少包
我正在尝试使用shiny创建一个web应用程序。它要求我加载已安装在计算机上的软件包。例如:R 服务器中缺少包,r,shiny,shiny-server,R,Shiny,Shiny Server,我正在尝试使用shiny创建一个web应用程序。它要求我加载已安装在计算机上的软件包。例如: ## Contents ui.R: library(shiny) library(plyr) shinyUI(pageWithSidebar( headerPanel("Hello Shiny!"), sidebarPanel( sliderInput("obs", "Number of observations:",
## Contents ui.R:
library(shiny)
library(plyr)
shinyUI(pageWithSidebar(
headerPanel("Hello Shiny!"),
sidebarPanel(
sliderInput("obs",
"Number of observations:",
min = 0,
max = 1000,
value = 500)
),
mainPanel(
plotOutput("distPlot")
)
))
## Contents server.R:
library(shiny)
library(plyr)
shinyServer(function(input, output) {
output$distPlot <- renderPlot({
# generate an rnorm distribution and plot it
dist <- rnorm(input$obs)
hist(dist)
})
})
##内容ui.R:
图书馆(闪亮)
图书馆(plyr)
shinyUI(带侧栏的页面)(
headerPanel(“你好,闪亮!”),
侧栏面板(
滑块输入(“obs”,
“观察次数:”,
最小值=0,
最大值=1000,
数值=500)
),
主面板(
plotOutput(“distPlot”)
)
))
##Content server.R:
图书馆(闪亮)
图书馆(plyr)
shinyServer(功能(输入、输出){
output$distPlot比较两种情况下.libpath()
的输出,并在服务器实例/脚本中进行相应调整
例如,您可以将包放在“您的”服务器无法访问的R程序包目录。在这种情况下,最好安装系统范围的程序包,例如Debian/Ubuntu上的默认程序包。为什么需要Plyr?代码中没有任何内容使用它;但无论如何,您可以通过运行R,然后安装.packages('Plyr'),在Linux R安装上安装程序包;问题是Shining server找不到您安装的软件包,因为它以另一个名为Shining
的用户的身份运行这些软件包。此用户是在安装Shining server时创建的
解决这个问题最简单(也是最安全的IMHO)的方法是只以闪亮用户的身份安装软件包,使用以下步骤
使用sudo passwd
为用户设置密码,现在输入并确认密码
使用:su-shinny
使用$R
调用R
(不带sudo)
安装所需的软件包,在本例中:Install.packages(“plyr”)
请注意,如果在同一台计算机上安装了rstudio服务器,则可以使用该接口执行步骤2-4。只需转到相同的域/ip,并使用:8787作为rstudio服务器接口,而不是:3838作为服务器接口
根据我的回答改编。我已经从R3.2升级到了3.4,面临着同样的问题,然后我在R/x86_64-pc-linux-gnu-library/中创建了一个名为3.4的文件夹,并复制了3.2文件夹中的所有内容(该文件夹已经位于同一位置).这里可能有一个不会弄乱系统库的解决方案。请将以下代码放在服务器.R
的开头
user <- unname(Sys.info()["user"])
if (user == "shiny") {
# Set library locations
.libPaths(c(
"/path/to/your/own/library"
)
)
}
user如果程序包安装在您的R库中。使其在Shining server上运行的最简单方法是指示程序包所在的库目录。类似于:library(plyr,lib.loc=“/usr/local/lib/R/site library”)
。如果安装了R-Studio,则可以使用.libpath()查看目录
一个简单的检查方法实际上是查看sudo R
,然后查看一下(库(MyPotentialMissingPackage)
)。如果需要,您也可以从那里安装丢失的包。Do.Not.Start.R.As.sudo.Ever。嗯,这看起来很糟糕,但我能问一下:为什么?:-)你真的不想以root身份运行任何东西,因为如果该程序因任何原因被破坏,那么你的整个服务器现在都被破坏了。因此,如果R中存在任何安全漏洞,当以root身份运行时,你现在允许这些威胁让坏进程/人/等接管你的机器。尝试步骤1,我得到“passwd:Unknown user name'shinny.”-有什么解决方案吗?@maia,这个帐户应该在您安装shinny服务器时创建,但是,您可以使用:useradd shinny
手动创建。我希望可以。您不需要为用户添加密码。只需从第2步开始,su-shinny
。同意,但如果您要使用该用户,它将那是个好主意