2010-05-25 5 views
35

Я хотел бы создать локальный репозиторий R-пакетов, чтобы пользователи из моей компании могли устанавливать пакеты из него, а администраторы системы могут периодически обновлять локальное репо. В настоящее время доступ к зеркалам CRAN запрещен.Создание локального репозитория R-пакета

Есть ли простой способ сделать это?

Спасибо за ваше время.

EDIT: Приносим извинения за недосмотр. Руководство - это то место, где я должен был смотреть первым. Спасибо.

ответ

36

Да, либо копия CRAN, либо репо с локальными пакетами легко настраивается. Предположительно вы хотите это для Windows, так это сделать:

  1. Создайте директорию верхнего уровня на вашем веб-сервере, скажем R/
  2. Создать обычную иерархию там: R/bin/windows/contrib/2.11. Если вам нужно поддерживать другие (более ранние) версии, просто создайте каталоги 2.10, 2.9, ... рядом с каталогом 2.11.
  3. Поместите пакеты, которые нужно в директорию (скажем, 2.11), затем перейдите в этот каталог и выполните следующую команду, чтобы создать PACKAGES и PACKAGES.gz файлов для репозитория:

    tools::write_PACKAGES(".", type="win.binary")

Это все, что вам нужно - теперь вы можете получить доступ к репозиторию, указав адрес, такой как

update.packages(repos="http://my.local.server/R", ask=FALSE) 

, который я даже делаю в R/zzz.R для локальных пакетов, чтобы они обновлялись.

Редактировать некоторые пять + лет спустя: И drat пакет Теперь автоматизирует многое из этого, и светит особенно, если вы используете GitHub, чтобы служить хранилищем над HTTP/HTTPS (но полезно для других или локального хостинга тоже) ,

+0

Автоматическое обновление звуков очень удобно, но я не понимаю, куда поместить команду обновления. Я играю с 'zzz.R' и' .onLoad', но не могу заставить его передать «R CMD check ...». В некотором роде, кажется немного странным, чтобы обновить то, что вы в настоящее время загружаете. – Backlin

+0

Команда update может быть введена в R любым, кто может попасть в репозиторий. –

+4

В дополнение к комментариям Дирка, если вы хотите, чтобы пользователи пакета редактировали свои файлы Rprofile.site (которые запускались при запуске каждого сеанса R), чтобы включить что-то вроде 'options (repos = c (getOption (« repos ») MyCompanyRepo = "http: //my.local.server/R")) ', тогда ваши пользователи могут делать такие вещи, как' install.packages («mypackage») ', не указывая на путь. –

2

Пакет miniCRAN также обеспечивает отличную функциональность для этого. Ключевым преимуществом является то, что вам не нужно полное зеркало, но можно настроить «мини-зеркало» CRAN только с необходимыми дистрибутивами пакетов, включая их зависимости.

Смежные вопросы