闪亮服务器中缺少软件包

Sac*_*amp 3 r shiny shiny-server

我正在尝试使用闪亮创建一个Web应用程序.它需要我加载我在计算机上安装的软件包.例如:

## 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)
  })
})
Run Code Online (Sandbox Code Playgroud)

如果我在本地运行它(使用runApp),但是当我尝试通过我的服务器(同一台计算机)运行它时,我得到的错误是plyr我没有安装包(或我尝试使用这种方式的任何其他包)的错误.我怎么能在闪亮的服务器中使用额外的包?

Bas*_*ast 9

问题是,闪亮的服务器无法找到您安装的软件包,因为它将它们作为调用的其他用户运行shiny.此用户是在安装shiny-server时创建的

解决此问题的最简单(也是最安全的恕我直言)方法是使用以下步骤将软件包安装为闪亮的用户.

  1. 使用设置密码sudo passwd shiny,现在输入并确认密码
  2. 使用以下方法切换到闪亮帐户: su - shiny
  3. R使用$ R(没有sudo)调用
  4. 在这种情况下,安装所需的包: install.packages("plyr")

请注意,如果您在同一台计算机上安装了rstudio-server,则可以使用该接口执行步骤2-4.只需使用相同的域/ ip并使用:8787用于rstudio-server接口而不是:3838用于shiny-server.

从我的回答改编这里.


Dir*_*tel 8

比较.libPaths()两种情况下的输出,并在服务器实例/脚本中进行相应调整.

例如,您可以在"您的"R包目录中包含服务器无法访问的包.在这种情况下,系统范围的软件包安装更受欢迎 - 例如Debian/Ubuntu上的默认软件包.

  • 嗯,这似乎非常糟糕,但我可以问:为什么?:-) (9认同)
  • 做.不.开始.R. As.须藤.永远. (4认同)