首页 > 解决方案 > 在 ShinyServer 上将 `shiny` 的默认加载更改为特定的 `.libPaths()`

问题描述

问题

我正在我的大学维护的闪亮服务器上部署一个闪亮的应用程序,其中有许多.libPaths()包含不同版本的包。

> .libPaths()
[1] "/zeolite/rpauloo/R/x86_64-pc-linux-gnu-library/3.4"
[2] "/nfs/admin/software/xenial/system-gcc/R_libs"      
[3] "/usr/local/lib/R/site-library"                     
[4] "/usr/lib/R/site-library"                           
[5] "/usr/lib/R/library"  

当我闪亮的应用程序启动时,shiny默认情况下从 加载.libPaths()[2],然后导入R6 V.2.2.1,也从这个路径。

但是,我的代码取决于R6 >= V.2.2.2,我在.libPaths()[1].

让我的 SysAdmin 更新很简单R6.libPaths()[2]但他们不能,因为其他人的应用程序依赖于该路径上的库,我们不想破坏这些。


我试过了:

  1. R6_.libPaths()[1]

    detach("package:R6", unload=TRUE, force = TRUE, character.only = TRUE)
    library(R6, lib.loc = "/zeolite/rpauloo/R/x86_64-pc-linux-gnu-library/3.4")  
    
  2. shiny_.libPaths()[1]

    detach("package:shiny", unload=TRUE, force = TRUE, character.only = TRUE)
    library(shiny, lib.loc = "/zeolite/rpauloo/R/x86_64-pc-linux-gnu-library/3.4")  
    
  3. .libPaths()在文件中从头开始设置我global.R以仅包含我想要的路径。

    .libPaths(.libPaths()[1])
    
  4. 在包含以下文件的etc文件夹下添加一个文件夹(来自此处的建议): "/zeolite/rpauloo/R"Rprofile.site

    .First <- function(){
      .libPaths("/zeolite/rpauloo/R/x86_64-pc-linux-gnu-library/3.4")
    }
    

这些方法都不起作用。为什么?

  1. R6是一个附加的包,所以它不能被卸载。
  2. 不知道为什么卸载/重新加载闪亮不起作用
  3. Shiny Server在获取文件之前shiny.libPaths()[2]一开始就加载global.R,因此设置libPaths()无济于事。
  4. Rprofile.site文件可能位于错误的目录中,但将其放在管理目录中会与其他应用程序混淆

问题

如何配置我的闪亮应用程序以在启动时shiny从特定加载.libPath

还是我误解了这个问题?还有其他方法可以解决这个问题吗?

标签: rshinyshiny-server

解决方案


推荐阅读