Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R shiny / shiny-server - issue with finding packages

I have installed shiny and shiny-server on an ubuntu server. I did a similar install on a dev server which is working. R sessions when they open up load some packages. The app runs fine locally but I'm getting messages that it can't find the packages when running on shiny-server.

The error on the app

During startup - Warning messages:

1: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘shiny’
2: package ‘shiny’ in options("defaultPackages") was not found 
3: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘data.table’
4: package ‘data.table’ in options("defaultPackages") was not found 
5: In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called ‘optiRum’
6: package ‘optiRum’ in options("defaultPackages") was not found 
Error in eval(expr, envir, enclos) : 
  The Shiny package was not found in the library. Ensure that 
Shiny is installed and is available in the Library of the 
user you're running this application as.
Calls: local -> eval.parent -> eval -> eval -> eval -> eval
Execution halted

In Rprofile.site I have

# ## Example of Rprofile.site
 local({
#  # add MASS to the default packages, set a CRAN mirror
  old <- getOption("defaultPackages"); r <- getOption("repos")
#  r["CRAN"] <- "http://my.local.cran"
  options(defaultPackages = c(old, "shiny","data.table","optiRum"), repos = r)
})

.First <- function() {
   cat("\n   Welcome to R!\n\n")
#    setwd("/home/OPTIMUMCREDIT/R/Projects")
    Sys.umask(mode="0002")
}
.libPaths(c("/home/R/WorkingPackages","/home/R/ApprovedPackages"))

In shiny-server config I have just the default config (so run as shiny and default port).

My sessionInfo()

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C         LC_TIME=C            LC_COLLATE=C         LC_MONETARY=C        LC_MESSAGES=C        LC_PAPER=C          
 [8] LC_NAME=C            LC_ADDRESS=C         LC_TELEPHONE=C       LC_MEASUREMENT=C     LC_IDENTIFICATION=C 

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] ggplot2_0.9.3.1  scales_0.2.3     RCurl_1.95-4.1   bitops_1.0-6     rstudio_0.98.501 optiRum_0.30     data.table_1.9.2 shiny_0.8.0     

loaded via a namespace (and not attached):
 [1] MASS_7.3-29        RColorBrewer_1.0-5 RJSONIO_1.0-3      Rcpp_0.11.0        caTools_1.16       colorspace_1.2-4   dichromat_2.0-0   
 [8] digest_0.6.4       grid_3.0.3         gtable_0.1.2       httpuv_1.2.3       labeling_0.2       munsell_0.4.2      plyr_1.8.1        
[15] proto_0.3-10       reshape2_1.2.2     stringr_0.6.2      tools_3.0.3        xtable_1.7-3

I tried adding a message to output the libPaths above library(shiny) in my code but unfortunately the same error message happens. I did some uninstalling and reinstalling as I'd a bit unusually installed shiny-server first then remembered I needed shiny but no joy. I've confirmed that shiny is installed in ApprovedPackages. The packages at load up, I added in the hopes of circumventing the problem or finding out more information.

UPDATE - running as shiny Ah - the plot thickens... logging in with the user shiny on console caused the same warnings the app was getting, and .libPaths() is not like everyone else's:

> sessionInfo()
R version 3.0.3 (2014-03-06)
Platform: x86_64-pc-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8
 [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C
 [9] LC_ADDRESS=C               LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base
> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[3] "/usr/lib/R/library"

I'm a bit stumped and was hoping someone could point me in the right direction to solve the problem.

like image 446
Steph Locke Avatar asked Mar 10 '14 10:03

Steph Locke


People also ask

Why does my app work locally but not on my Shiny server?

Your application may be dependent on packages that are installed and loaded in your environment, but aren't installed for the correct user on the Shiny Server. Make sure that all necessary packages are installed for the same user set under run_as in your Shiny Server configuration file.

How do I install Shiny packages in R?

Installing Shiny on a local computer: in R/RStudio, run install. packages("shiny") if installing from CRAN, or devtools::install_github("rstudio/shiny") if installing from the RStudio Github repository.

How do you publish a Shiny app on a Shiny server?

Publish your Shiny App to RStudio ConnectAt the top of the editor, click Publish. In the Publish to Server window, confirm that your account is shown in the Publish To Account section and click Publish. You can monitor the status of the deployment in the RStudio IDE Deploy pane.

Do companies use R Shiny?

Fortune 500 companies trust Appsilon to build custom Shiny apps, scale PoCs, improve Shiny app performance, and enhance dashboard UI. We're also a pioneer in Shiny open source. Our R packages are actively used by global organizations such as Merck, Johnson & Johnson, WHO, Ubisoft, Bank of America, and Renault.


1 Answers

Sorry for the troubles. Can you try running the following command to install Shiny system-wide?

sudo su - \
  -c "R -e \"install.packages('shiny', repos='http://cran.rstudio.com/')\""

This comes from the Admin Guide which (hopefully) will serve as a useful resource on these kinds of issues.

I suspect that the problem is that Shiny is indeed properly installed in your user account, but because it wasn't installed as sudo, it's not available to the shiny user.

Edits:

You'll also need to make sure that Rprofile.site is being applied when the shiny user starts an R process. You can do this by logging in as shiny:

sudo su shiny

Then opening R and checking the .libPaths() or seeing if you can successfully run library(shiny) there. If you're not able to, there's probably an issue with letting the shiny user get into your shared packages directory or your Rprofile.site file (or its parent directory). Ensure that the shiny user is added to the necessary groups or that these files and all of their parent directories grant the appropriate permissions to the shiny user.

like image 181
Jeff Allen Avatar answered Nov 03 '22 09:11

Jeff Allen