R Studio 1.1.456 (Windows) : Why do I sometimes have to install binary packages instead of installing from the source?

标签 r shiny rstudio install.packages

我问这个问题是因为我最近解决了安装 R Shiny 的问题(见下文)。但是,我找到的答案并没有详细说明为什么会出现这个问题,我真的很想了解以提高我对 R 的知识以及为什么会发生这些事情。

所以我在 RStudio 中安装 Shiny 的尝试失败了,我相信这些是重要的错误消息:

    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 从 Github 安装 Shiny
  • 使用 install.packages("shiny", dependencies=TRUE)

  • 这些解决方案都没有奏效,我相信这与依赖 httpuv 有关,但我不确定为什么。

    所以最后我能够使用的代码是:install.packages('shiny', type = "binary"),这让我可以开始使用 Shiny。

    虽然我不难找到解决这个问题的方法,但我真的很感激有人能抽出时间来解释为什么我的 Windows 中的 RStudio 版本(版本 1.1.456)不支持Shiny 的源包以及安装二进制包的原因。我讨厌解决问题,但对它的理解为零。

    R 版本 3.2.2

    谢谢你。

    最佳答案

    二进制与源代码选项和问题

    您正在体验新旧代码与 R 环境依赖项之间的推拉摩擦。这里的现实是你必须在稳定和进步之间做出选择。两者兼得是很困难的。

    考虑:

  • 您正在以二进制形式运行 R 版本 3.2.2,该 R 版本于 2015 年 8 月 15 日发布。然而,您正在尝试安装 Shiny 的最新源代码版本。
  • 包源代码版本和您使用的 R 版本之间存在 3 年的增量。包代码和R环境源代码已经进化。
  • 从那时到现在,编译和源代码环境发生了很多变化。

  • 这么想吧。
  • 二进制包镜像是编译时的编译和源代码环境假设的快照。如果您下载当前的源代码镜像,您将使用当前代码环境的快照 ( 现在 ),其中包括对源代码文件和编译环境中的假设和依赖项的数千个小增量更改。如果您查看 Shiny 的包装说明,您会注意到:
  • Shiny取决于 httpuv这取决于 Rcpp
  • httpuv建立在 libuv 之上和 http-parser C 库。
  • 要从源代码编译 httpuv,您需要匹配 R 环境、依赖库和源依赖项 手动 .不小的壮举。
  • 从源代码 (github) 编译上述包的例子,您可能会使用 Devtools如果您以二进制形式下载,则在 R 版本 3.2.5 下编译。

  • 更改、假设和相互依赖导致复杂的反向移植编译情况。因此,二进制包快照的优势。

    选项:

    在这种情况下,您通常有两种选择。您可以:
  • 下载与您的 R 版本和环境匹配的旧源版本。
  • 这种方法的缺点是您无法访问当前的包功能。
  • 好处是包和 R 环境匹配历史背景。
  • 升级到当前的 R 环境
  • 这种方法的缺点是您必须使用 R 版本。
  • 好处是您可以访问当前源代码中提供的最新包功能。

  • 解决方案选项:

    如何做到以上几点?在第一种情况下,您可以使用 devtools::install_git并提取特定分支或包版本的源代码并编译它。在第二个中,您可以升级您的环境,然后拉取并升级您的软件包。

    如果要使用特定的 R 环境版本,则必须使用二进制版本。为什么?这些将匹配 R 环境版本编码环境假设。

    这是一个突出当前代码和旧代码之间推拉的经典问题。你必须在稳定和进步之间做出选择。两者兼得是很困难的。

    我希望以上内容有助于解释这种情况。

    关于R Studio 1.1.456 (Windows) : Why do I sometimes have to install binary packages instead of installing from the source?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51704594/

    相关文章:

    r - 删除另一个数据框中存在的行?

    r - R 包外的单元测试

    r - 按矩阵中的行获取所有可能的组合

    javascript - Shiny.setInputValue 仅适用于第二次尝试

    rstudio - 如何同时部署多个 Shiny 的应用程序?

    rstudio - 如何在 RMarkdown 中创建自定义 block ?

    r - 不确定如何分离我抓取的一列数据

    r - Shiny 的时间选择器

    R 在 Ubuntu 中通过代理连接

    r - 在 knitr 中打印 HTML 或 Word 表,以便考虑字符串中的空格