PAYATHON 2026

如何安装 tibblify,以便在 RStudio 中使用 naturecounts?

排障赵师傅

先修复 Windows 上的 Rtools 编译环境,再安装 tibblify。日志中的 R 版本是 4.5.x,需要使用 Rtools45,自动下载的 Rtools44 与它不匹配。make not found 和 gcc: command not found 都表示安装过程找不到所需的编译工具。这个问题没有解决,换 GitHub 地址或改用 CRAN 存档中的源码包,仍会安装失败。

为什么包已下载,安装还是失败?

从 GitHub 安装包或安装 .tar.gz 源码包,都可能需要在本机编译 C/C++ 代码。日志显示,安装已经进入编译阶段:

gcc ... -c add-value.c -o add-value.o
/bin/sh: line 1: gcc: command not found

源码已经成功解压,但编译时找不到 C 编译器。前一次检查连 make 都找不到;后一次能运行 make,却仍然找不到可用的 gcc。

日志中的 c:/rtools45/.../include 路径可能来自 R 的默认配置,不能据此判断 Rtools45 是否已完整安装。

1. 确认 R 版本,安装对应的 Rtools

在 RStudio 控制台运行:

R.version.string
R.version$arch
R.home()

以下步骤适用于日志中的 Windows、R 4.5.x、x86_64 环境。

从 Rtools45 下载页面下载普通的 Rtools45 Windows 安装程序,安装时使用默认目录:

C:\rtools45

Rtools 是单独的 Windows 软件,下载 .exe 后还需要运行它,完成安装。按照官方说明,通过标准安装程序安装的 R,配合默认目录下的 Rtools45,通常无需额外配置就能编译源码包。

如果安装程序提示“已经安装”,先到 Windows 的“已安装的应用”中确认装的是 Rtools44 还是 Rtools45。两者可以共存,无需先删除 Rtools44。如果已经安装 Rtools45,但后面的文件检查显示编译器缺失,再考虑卸载并重新安装 Rtools45。

安装完成后,关闭并重新打开 RStudio。暂时不要加载 naturecounts、rlang 或 devtools,以免更新时相关包仍在使用中。

2. 更新检测工具,确认编译环境可用

在新的 R 会话中运行:

install.packages(
  c("pkgbuild", "pak"),
  repos = "https://cloud.r-project.org",
  type = "binary"
)

安装结束后重启 R 会话,再运行检查:

pkgbuild::check_build_tools(debug = TRUE)

这个检查会尝试编译一个简单的 C 文件,因此应以实际编译是否通过来判断工具链是否正常。pkgbuild 文档说明了这项检查及诊断输出的用途。

原来的检测流程为 R 4.5.x 下载了 Rtools44,可能与旧版检测工具或 RStudio 有关,具体原因无法仅凭日志确定。如果更新 pkgbuild 后仍然如此,检查 RStudio 是否需要更新,以及它当前使用的 R 是否与 R.home() 显示的一致。

仍然找不到 make 或 gcc 时

先检查默认安装目录中是否存在这些文件:

tool_files <- c(
  make = "C:/rtools45/usr/bin/make.exe",
  gcc = "C:/rtools45/x86_64-w64-mingw32.static.posix/bin/gcc.exe"
)

file.exists(tool_files)

在上述 x86_64 环境中按默认目录安装后,这两个文件都应存在:

  • 如果文件不存在,先检查安装目录,或重新安装 Rtools45。修改 PATH 无法补齐缺失的文件。
  • 如果文件存在,但编译检查仍提示找不到命令,可以在当前 R 会话中临时补充路径。
rtools_bins <- c(
  "C:/rtools45/x86_64-w64-mingw32.static.posix/bin",
  "C:/rtools45/usr/bin"
)

Sys.setenv(
  PATH = paste(
    c(rtools_bins, Sys.getenv("PATH")),
    collapse = .Platform$path.sep
  )
)

Sys.which(c("make", "gcc"))
pkgbuild::check_build_tools(debug = TRUE)

这项设置只对当前会话有效,重启后会失效。如果补充路径后检查通过,接下来应排查 .Renviron、.Rprofile 或自定义工具链配置中的旧路径。

按默认方式安装通常不需要永久修改系统 PATH。应避免混用旧 Rtools、Git for Windows 或其他 MSYS2 安装中的编译工具,R 官方的 Windows 构建说明也提醒过这类冲突。

3. 安装 tibblify

如果当前 CRAN 仓库提供适用于你的 R 版本的 Windows 二进制包,可以先尝试:

install.packages(
  "tibblify",
  repos = "https://cloud.r-project.org",
  type = "binary"
)

能否这样安装,取决于安装时仓库中是否有对应的包。二进制包无需在本机编译。如果提示二进制包不可用,或所用的 naturecounts 版本明确要求开发版,再从 GitHub 安装。

tibblify 项目给出的开发版安装命令是:

pak::pak("wranglezone/tibblify")

安装“开发版本”就是安装 GitHub 仓库中的代码。之前选择的安装方式没有问题,安装失败是因为本机编译环境不可用。项目当前的安装说明见 tibblify 仓库。

使用 pak::pak() 无需先安装或加载 devtools,也不需要执行 library(rlang)。如果依赖解析要求安装开发版 rlang,让安装工具处理即可,安装完成后重启 R。

日志中的 GitHub PAT 提示没有阻止源码下载,这次安装因编译工具错误而终止。遇到认证失败或 API 限流时,才需要另外处理 PAT。

4. 验证 tibblify,再运行 naturecounts

安装结束后重启 R,然后运行:

packageVersion("tibblify")
library(tibblify)

library(naturecounts)
nc_count(username = "my_username")

将 "my_username" 换成实际用户名。library(tibblify) 运行成功,就说明包已安装,且当前 R 会话能够加载它。

如果仍提示找不到包,检查安装和运行时是否使用了不同的包库:

.libPaths()
find.package("tibblify")
sessionInfo()

如果接下来出现登录、权限或网络连接错误,需要根据新的报错继续排查。nc_count() 查询 NatureCounts 服务中的数据集及记录数量,运行成功还需要相应的账户权限和正常的服务连接,详见 nc_count 文档。

其他容易混淆的地方

CRAN Archive 中的 tibblify_0.3.1.tar.gz 也是源码包,安装时同样需要编译器。这个旧版本能否适用于当前依赖环境,还需要另行验证。

日志末尾的 DESCRIPTION 读取错误发生在编译失败之后。应先解决最早出现的 gcc: command not found,再检查是否仍有后续错误。

nc_count() 不会读取电脑里已经下载的文件。如果数据集已经保存为本地 CSV,可以直接用 read.csv() 等函数导入处理。是否还需要 naturecounts,取决于后续是否要查询服务、下载数据,或使用包中的其他功能。

备注:内容仅供参考。