Подтвердить что ты не робот

R: apt-get install r-cran-foo vs. install.packages( "foo" )

При установке пакетов R (например, mcmcpack в этом примере) в Ubuntu у меня есть выбор между двумя следующими способами:

# Let the distribution packaging system take care of installation/upgrades
apt-get install r-cran-mcmcpack

# Let R take care of installation/upgrades
install.packages("mcmcpack")

Вопросы:

  • Является ли какой-либо из двух способов установки пакетов R считаться "лучшей практикой"?
  • Предположим, что я сначала install.packages("mcmcpack"), а затем apt-get install r-cran-mcmcpack - должен ли я ожидать проблемы?
  • Предположим, что я сначала apt-get install r-cran-mcmcpack, а затем install.packages("mcmcpack") - должен ли я ожидать проблемы?
4b9b3361

Ответ 1

Это не так просто, как кажется.

  • apt-get update хорош, если и когда

    • существуют пакеты, но только около 150 пакетов r-cran-* из пула 2100+ пакетов на CRAN, поэтому довольно редкий охват

    • поддерживаются пакеты, ошибки и текущие

    • вы довольны двухгодичными релизами Ubuntu

  • install.packages(), а затем update.packages() хорош, если и когда

    • вы знаете, что нужно, чтобы установить встроенные зависимости (кроме r-base-dev)

    • вы не против запуска update.packages() вручную, а также обновлений apt-get.

На моей машине Ubuntu на работе я перехожу со вторым решением. Но поскольку первый из них лучше, если у вас достаточно покрытия, мы построили cran2deb, который предоставляет 2050+ двоичных пакетов deb для amd64 и i386 --- но только для тестирования Debian. Это то, что я использую дома.

Что касается последнего вопроса о том, следует ли вам ожидать неприятности: Нет, потому что R_LIBS_SITE установлен в /etc/R/Renvironment как

# edd Apr 2003  Allow local install in /usr/local, also add a directory for
#               Debian packaged CRAN packages, and finally the default dir 
# edd Jul 2007  Now use R_LIBS_SITE, not R_LIBS
R_LIBS_SITE=${R_LIBS_SITE-'/usr/local/lib/R/site-library:\
/usr/lib/R/site-library:/usr/lib/R/library'}

что означает, что ваши пакеты переходят в /usr/local/lib/R/site-library, тогда как те, которыми управляет apt, переходят в /usr/lib/R/site-library и (в случае базовых пакетов) /usr/lib/R/library.

Надеюсь, что это прояснит ситуацию. Список рассылки r-sig-debian является более информативным местом для таких вопросов.

Ответ 2

  • Я бы рассмотрел наилучшую практику apt-get, так как вы получите автоматические обновления через стандартные системные инструменты.

  • Наличие двух версий может привести вас к запутанным ситуациям: в зависимости от вашей настройки R вы можете загрузить другую версию пакета, а затем вы ожидаете, что в первую очередь будет загружен ваш частный (возможно, устаревший).

  • См. выше.