Я разработал локальный пакет, который зависит от других доступных в CRAN (например, pool
). Поэтому, когда я пытаюсь установить пакет, используя стандартный
install.packages("/path/to/package",
repos = NULL,
type = "source")
, я получаю ошибку, потому что зависимости не установлены. install.packages
имеет аргумент dependencies
, который по умолчанию попытается установить эти зависимости. Однако, как указано на странице руководства (и прокомментировано в связанном вопросе ниже), repos = NULL
означает, что зависимости игнорируются.
Чтобы обойти это, я использовал пакет miniCRAN
, чтобы создать репозиторий, содержащий моипакет, надеясь, что я смогу сделать repos = c("myRepo", getOption("repos"))
, чтобы заставить его работать.
Теперь я могу установить свой пакет, используя
install.packages("package",
repos = c("/path/to/repo", getOptions("repos"),
type = "source")
Но только если я уже установил pool
. Если нет, я все равно получаю сообщение об ошибке, потому что он не может найти зависимости.
Поэтому я позвонил miniCRAN::addPackage("pool")
, который добавляет этот пакет и его многочисленные зависимости в мое хранилище, и все они появляются, если я вызываю miniCRAN::pkgAvail()
.
Однако, если я пытаюсь установить свой пакет снова, я все равно получаю ошибку there is no package called 'pool'
.
Интересно, если я попытаюсь установить pool
из репозитория,это работает.
install.packages("pool",
repos = "/path/to/repo",
type = "source")
install.packages("package",
repos = "/path/to/repo",
type = "source")
Очевидно, однако, что этот вид превосходит смысл добавления pool
к репо: я мог бы с таким же успехом установить его из CRAN.
Так что жездесь, и действительно ли это единственный способ установить локальные пакеты и их зависимости CRAN?