Как заставить пакет R рекомендовать пакет, размещенный на GitHub?

Я разрабатываю пакет R, который работает как оболочка для функций из пакетов parallel и Rhpc, называемых cинструменты. Я знаю, что если я хочу, чтобы мой пакет требовал эти пакеты, мне нужно включить их в раздел Imports файла DESCRIPTION. При установке моего пакета эти пакеты будут установлены из CRAN. Точно так же я могу поместить их в раздел Suggests, если они не нужны, но полезны. Они не будут установлены с моим пакетом.

Но я разветвил пакет Rhpc и добавил функцию, которую использую в своем пакете ctools. Как заставить мой пакет предлагать/импортировать этот пакет из моего репозитория GitHub, чтобы вместо установки пакета Rhpc он выполнял devtools::install_github("bamonroe/Rhpc")?


person Brian Albert Monroe    schedule 19.03.2016    source источник


Ответы (1)


Из руководства (и цитируя источник здесь):

Поле @c DESCRIPTION Additional_repositories

Поле @samp{Additional_repositories} представляет собой список URL-адресов репозиториев, разделенных запятыми, где можно найти пакеты, указанные в других полях. В настоящее время он используется @command{R CMD check} для проверки того, что пакеты могут быть найдены, по крайней мере, как исходные пакеты (которые могут быть установлены на любой платформе).

Вы можете добавить пакет в Suggests: и указать дополнительные репозитории — возможно, созданные с помощью drat. . Раньше это делал один пакет, а сейчас это делает IIRC, но теперь его имя ускользнуло от меня.

Изменить: Нашел! См. здесь, в исходный файл DESCRIPTION RNeXML -- и обратите внимание, как линия исчезает в опубликованном ОПИСАНИИ на CRAN. Более того, обратите внимание, что два пакета в Suggests: нет в списке гиперссылок на CRAN. Я думаю, что они исходят из дополнительных репозиториев. И да, rOpenSci использует для этого drat.

Правка 2. Чтобы закрыть цикл, вы (легко) используете drat для размещения такого дополнительного репозитория на GitHub — основной вариант использования drat< /а>.

Изменить 3: RNeXML удалил дополнительный репозиторий, но история github все еще есть.

Редактировать 4: В настоящее время (т. е. 13 марта 2020 г.) CRAN упаковывает EMC, bcmaps, blkbox, broom.mixed, epikit, grattan, gtsummary, hurricaneexposure, memoise, multinomialeq, noaastormevents, pointblank, provSummarize, provViz, spData, swephR, tashu, taxadb, waveformbildar — все перечисляют поле Additional_repositories, содержащее URL-адрес, указывающий на репозиторий drat.

person Dirk Eddelbuettel    schedule 19.03.2016
comment
Отличный материал! Я сейчас читаю твою страницу с основами дерьма. Итак, я создаю репозиторий на GitHub, потенциально разветвляя ваш репозиторий git drat, указываю на мой недавно созданный репозиторий в поле Additional_repositories моего файла DESCRIPTION, а затем добавляю свою разветвленную версию Rhpc в строку предложений, как это был любой другой пакет? Не то чтобы это было проблемой, но нужно ли мне менять имя моего разветвленного Rhpc? Похоже, что между версией CRAN и моей будет путаница в пространстве имен. - person Brian Albert Monroe; 19.03.2016
comment
Да, в этом случае вам, вероятно, нужно другое имя для Rhpc или, по крайней мере, большее число. Все немного зависит от того, изменяете ли вы существующий API или просто расширяете его. И да, дерьмо должно сделать все это для вас. - person Dirk Eddelbuettel; 19.03.2016
comment
Спасибо за редактирование, @NealFultz. Я обновлю тело ответа. - person Dirk Eddelbuettel; 13.03.2020
comment
Использование репозитория drat и ссылка на него через Additional_repositories: — это абсолютно лучший способ включить зависимость от GitHub, который я видел. (Спасибо, @DirkEddelbuettel!) Я прошел через несколько итераций различных стратегий, прежде чем попал в репозиторий дерьма, и репозиторий дерьма просто работает. Раньше я пытался установить пакет GH во временную папку и обновлял путь поиска библиотеки, чтобы включить временную папку. Хотя это работало локально, у меня всегда были проблемы хотя бы с одной ОС, проверенной CRAN (и это был метод, предложенный обозревателем CRAN). - person Daniel D. Sjoberg; 13.03.2020
comment
Привет, @DanielSjoberg, спасибо за одобрение! Так уж получилось, и это неудивительно, что я согласен на 100 %, поскольку механизм упаковки настолько хорошо спроектирован и протестирован, что обеспечивает надежную работу, в то время как альтернативы со временем исчезают. #FriendsDontLetFriendsUseRemote - person Dirk Eddelbuettel; 13.03.2020