RStudio Connect, Packrat и пользовательские пакеты в локальных репозиториях - PullRequest
0 голосов
/ 26 октября 2018

Мы недавно получили 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 могло понять, что это было бы замечательно.

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Не стесняйтесь также обратиться к support@rstudio.com

Я считаю, что локальный путь к коду пакета запускается в пакрате из-за отсутствующей строки Repository: value в файле описания пакета. Вы упомянули, что добавили эту строку, не могли бы вы попробовать версию с учетом регистра?

Тем не менее, RStudio Connect не сможет установить пакет из RepoAddress, как вы его указали (жестко запрограммировано в общей папке Windows). Мы рекомендуем размещать репо через https с сервера, к которому есть доступ как к среде разработки, так и к RStudio Connect. Чтобы упростить настройку репо такого типа, мы только что выпустили RStudio Package Manager , который вы (и ИТ-специалисты) можете найти убедительной альтернативой ручному управлению выпусками ваших внутренних пакетов с помощью drat.

0 голосов
/ 26 октября 2018

Проблема в номенклатуре.

Я создал репо в смысле CRAN.Работает нормально и нормально.Когда packrat ссылается на local repo, это относится к локальному репозиторию в стиле git.

Это решает, почему findlocalrepoforpkg не выглядит так, как будто он будет работать - он предназначен для работы с другим типом репо.

...