簡體   English   中英

將應用程序部署到 shinyapps.io 依賴於自定義 package 本身具有依賴項

[英]Deploy app to shinyapps.io that depends on custom package which itself has dependencies

我想將 shiny 應用程序部署到shinyapps.io但我幾個月來一直未能全部發布:-(

有人可以逐步向我解釋下面概述的特定設置我需要做什么嗎?

設置

  • 該應用程序依賴於位於私有 GitHub 存儲庫中的自定義 package
  • I do not have a full-fledged R package repo that is accessible by RStudio Connect in order to install the custom package but would like to install it from GitHub
  • .Rprofile文件位於我要發布的項目的根目錄中,它包含
local({
  r <- getOption("repos")
  r["CRAN"] <- "https://cran.rstudio.com/"
  r["mycompany"] <- "https://github.com/rappster/mypkg/"
  options(repos = r)
})
  • 自定義 package 的tar.gz構建位於/opt/r-packages/<pkg-name>/<git-commit-hashkey>.tar.gz
  • 一個gcfg文件位於/etc/rstudio-connect/rstudio-connect.gcfg中,它只包含SourcePackageDir = "opt/r-packages"
  • 自定義 package 本身具有許多在 CRAN 上都可用的依賴項
  • shiny 應用程序的代碼位於項目根目錄中的多個文件中,當前對應於自定義的 package 項目(因為我認為這將是最容易進行發布工作),但我也可以將它放在它自己的 RStudio 中/R 項目,如果有幫助的話

盡職調查

我讀了

但無法讓事情正常進行。

RStudio 我得到的連接部署錯誤

<...>
[2019-02-05T11:50:16.877574592+0000] Building R package: mypkg (0.0.2.9002)
/mnt/packages/build /mnt
Warning in untar2(tarfile, files, list, exdir, restore_times) :
  skipping pax global extended headers
* installing to library ‘/opt/R/3.5.1/lib/R/library’
* installing *source* package ‘mypkg’ ...
** R
** inst
** byte-compile and prepare package for lazy loading
Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
  there is no package called ‘philentropy’
ERROR: lazy loading failed for package ‘climater’
* removing ‘/opt/R/3.5.1/lib/R/library/mypkg’GET /v1/tasks/?filter=account_id:113102&filter=parent_id:584709513&count=100&offset=0 590ms
################################# End Task Log ################################# 
----- Deployment error -----
Error: Unhandled Exception: Child Task 584709513 failed: Error building image: Error building mypkg (0.0.2.9002). Build exited with non-zero status: 1

----- Error stack trace -----
3: stop(status$error, call. = FALSE)
2: client$waitForTask(taskId, quiet)
1: rsconnect::deployApp(appDir = "C:/Users/janko/Dropbox (Personal)/Code/R/Packages/_Dev/mypkg", 
       appFileManifest = "C:/Users/janko/AppData/Local/Temp/6d2a-63b4-2877-4884", 
       account = "janko-thyson", server = "shinyapps.io", appName = "mypkg", 
       appId = 585041, launch.browser = function(url) {
           message("Deployment completed: ", url)
       }, lint = FALSE, metadata = list(asMultiple = FALSE, asStatic = FALSE, 
           ignoredFiles = <...>), 
       logLevel = "verbose")
Error: Unhandled Exception: Child Task 584709513 failed: Error building image: Error building mypkg (0.0.2.9002). Build exited with non-zero status: 1
Execution halted

這是否意味着我需要構建所有包的依賴項並將其放在opt/<pkg-dependency-name>/<git-commit-hashkey>.tar.gz

抱歉,萬一這是重復的,或者似乎有點非結構化/冗長,但我的腦袋完全在旋轉,試圖讓它工作,我不知道從哪里開始進行故障排除......

使用自定義 package 和 RStudio 部署 shiny 應用程序

  • 在您的應用項目中使用renv
  • 在 GitHub 中生成個人訪問令牌
  • 修改.Rprofile (在您的項目目錄中)以顯示:
source("renv/activate.R")
local({
  r <- getOption("repos")
  r["CRAN"] <- "https://cran.rstudio.com/"
  r["mycompany"] <- "https://github.com/<your_user>/<your_repo>/"
  options(repos = r)
})
  • 在您的項目中,打開 R 終端並安裝您的 package:
devtools::install_github("<my_user>/<my_repo>",
    auth_token = "<paste_your_token_here>",
    upgrade = "never") #this is optional, 
# but since you are using renv, you may want to conserve 
# your environment

這將在 renv 中安裝您的renv

重要提示:不要在要上傳到 shiny.io 或類似的源代碼中包含上一行閱讀有關它

  • 發布您的應用程序。

完成此操作后, rsconnect應該能夠從您的源代碼中讀取您的包並從您的renv上傳它們。 實際上,第一次 shiny.io 構建我的 package 時,出現超時並沒有上傳應用程序。 但是,它在它的環境中安裝了我的自定義 package,我第二次嘗試上傳應用程序時,它工作了。

注意:就我而言,我的 package 位於公共 github 存儲庫中。 尚未嘗試使用私有存儲庫,但我知道shiny.io中有一個選項可將服務器連接到私有存儲庫。 我認為您還需要配置您的個人訪問令牌,以便可以使用它來讀取私有存儲庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM