R Studio 1.1.456 (Windows): Почему мне иногда приходится устанавливать бинарные пакеты вместо установки из источника?

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

Поэтому моя попытка установить Shiny в RStudio не удалась, и я считаю, что это важные сообщения об ошибках:

    Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 
  namespace 'httpuv' 1.3.3 is being loaded, but >= 1.4.3 is required
ERROR: lazy loading failed for package 'shiny'
* removing 'C:/Program Files/R/R-3.2.2/library/shiny'
* restoring previous 'C:/Program Files/R/R-3.2.2/library/shiny'
Warning in install.packages :
  running command '"C:/PROGRA~1/R/R-32~1.2/bin/x64/R" CMD INSTALL -l "C:\Program Files\R\R-3.2.2\library" C:\Users\Sam\AppData\Local\Temp\RtmpuI3XHe/downloaded_packages/shiny_1.1.0.tar.gz' had status 1
Warning in install.packages :
  installation of package ‘shiny had non-zero exit status

Сначала я прошел обычные процессы, чтобы найти решение.

  • Проверено, что мой RStudio был актуальным
  • Проверено и установлено обновление пакетов

Среди других решений, которые я пробовал, были:

  • Загрузка пакета непосредственно из интерфейса R Studio
  • Использование devtools для установки Shiny из Github
  • Использование install.packages("shiny", dependencies=TRUE).

Ни одно из этих решений не работало, и я полагаю, что это связано с зависимостью httpuv, но я не уверен, почему.

Поэтому в конце код, который я смог использовать, это: install.packages('shiny', type = "binary") и это позволило мне начать использовать Shiny.

Хотя мне было нелегко найти работу по этой проблеме, я был бы очень признателен, если кто-то потратит некоторое время на то, чтобы объяснить, почему моя версия RStudio в Windows (версия 1.1.456) не поддерживает исходный пакет Shiny и почему установка бинарного пакета работает. Я ненавижу исправление проблемы, но не имею в ней никакого понимания.

R 3.2.2

Спасибо.

Ответ 1

Варианты и исходный код двоичного кода и исходного кода

Вы испытываете трёхое трение между старыми и новыми законами и средами R. Реальность здесь заключается в том, что вам нужно выбирать между стабильностью и прогрессом. Трудно иметь и то, и другое.

Рассматривать:

  • Вы используете R версии 3.2.2 в двоичной форме, эта версия R была выпущена 15 августа 2015 года. Тем не менее, вы пытаетесь установить последнюю версию исходного кода Shiny.

    • Существует трехлетняя дельта между версией исходного кода пакета и используемой вами версией R. Исходный код пакета и исходный код среды R.

    • В настоящее время в среде компиляции и исходного кода произошло множество изменений.

Подумайте об этом так.

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

    • Shiny зависит от httpuv который зависит от Rcpp
    • httpuv построен поверх библиотек libuv и http-parser C.

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

Изменения, допущения и взаимозависимости приводят к сложной ситуации компиляции в обратном порядке. Следовательно, преимущество моментальных снимков двоичных пакетов.

Опции:

В этой ситуации у вас обычно есть два варианта. Вы также можете:

  1. Загрузите исходную версию, старую, которая соответствует вашей версии R и среде.

    • Недостатком этого подхода является то, что вы не можете получить доступ к текущим функциям пакета.
    • Положительным моментом является то, что среда пакета и R соответствует историческому контексту.
  2. Переход в текущую среду R

    • Недостатком этого подхода является то, что вам нужно кататься с релизами R.
    • Положительным моментом является то, что вы получаете доступ к последним функциям пакета, доступным в текущем исходном коде.

Варианты решения:

Как это сделать? В первом случае вы можете использовать devtools :: install_git и вытащить источник для конкретной ветки или версии пакета и скомпилировать его. Во втором случае вы можете обновить свою среду, а затем потянуть и обновить свои пакеты.

Если вы хотите отработать определенную версию среды R, вам нужно использовать двоичные версии. Зачем? Они будут соответствовать предположениям среды кодирования среды среды R.

Это классическая проблема, подчеркивающая толкание между текущим кодом и старым кодом. Вы должны выбирать между стабильностью и прогрессом. Трудно иметь и то, и другое.

Надеюсь, что это поможет объяснить ситуацию.