Мы недавно получили RStudio Connect в моем офисе. Для нашей работы мы создали пользовательские пакеты, которые мы обновили между собой, открыв проект и выполнив сборку + перезагрузка.
Я понимаю, что единственный способ заставить наши пользовательские пакеты работать в приложениях с RSConnect - это запустить локальное репо и настроить наш options(repos)
на включение этого.
В настоящее время у меня есть следующее:
library(drat)
RepoAddress <- "C:/<RepoPath>" # High level path
drat::insertPackage(<sourcePackagePath>, repodir = RepoAddress)
# Add this new repo to Rs knowledge of repos.
options(repos = c(options("repos")$repos,LocalCurrent = paste0("file:",RepoAddress)))
# Install <PackageName> from the local repo :)
install.packages("<PackageName>")
В настоящее время это работает хорошо, и я могу установить свой собственный пакет из локального репозитория. Это указывает на то, что локальное репо настроено правильно.
В качестве дополнительного отступления я изменил файл DESCRIPTION
, добавив в него дополнительную строку: repository:LocalCurrent
.
Однако, когда я пытаюсь развернуть приложение Shiny или Rmd, которое ссылается, я получаю следующую ошибку при моем развертывании:
Error in findLocalRepoForPkg(pkg, repos, fatal = fatal) :
No package '<PackageName> 'found in local repositories specified
Я понимаю, что это проблема из-за того, что packrat
не может найти мои локальные репозитории во время процесса развертывания (я полагаю, на этапе, где он использует packrat::snapshot()
). Это сбивает с толку, поскольку я думал, что packrat
будет используйте мои option("repos")
репозитории, похожие на install.packages
. Если я выполняю функции, то вижу, что конкретная точка отказа - packrat:::findLocalRepoForPkg("<PackageName", repos = packrat::get_opts("local.repos"))
, которая не срабатывает даже после того, как я определю packrat::set_opts("local.repos" = c(CurrentRepo2 = paste0("file:",RepoAddress)))
Если я углублюсь в packrat:::findLocalRepoForPkg
, произойдет сбой, потому что он не может найти файл / папку с именем: "C: //". Я бы подумал, что это гарантированно потерпит неудачу, потому что репозитории следуют структуре C: //bin/windows/contrib/3.3/. Ни в коем случае репо не будет иметь структуру, которую оно ищет?
Я думаю, что эта последняя часть показывает, что я что-то материально неправильно понимаю. Любое руководство по настройке моего репо, чтобы packrat
могло понять, что это было бы замечательно.