You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建含Vignettes的R包时出现'arch = x64'未安装错误求助

问题根因定位
  • 核心触发源为微软Defender反恶意软件病毒库更新后新增的误判规则:R构建含Vignettes的包时,会先在系统临时目录生成完整的临时安装副本,再调用该临时副本渲染Vignettes文件,Defender实时扫描会误将临时目录下的x64架构二进制编译文件判定为风险文件直接隔离删除,导致后续环节找不到对应架构的包文件,触发Error : package 'my_pkg' is not installed for 'arch = x64'报错。
  • 半安装状态、my_pkg::暴露非导出函数的异常,是因为Defender仅删除了架构相关的二进制文件,包的命名空间元数据、函数定义文件仍留存,不符合正常安装的目录结构但仍可被R的补全逻辑识别。
  • 单独构建Vignettes、不构建Vignettes打包时可正常运行,是因为这两个场景不会触发「临时目录下完整安装包后调用副本」的流程,不会触发Defender误杀。
解决方案

临时验证方案

关闭微软Defender实时保护后重新执行devtools::build(),如果报错消失即可100%确认是误杀问题。

永久修复方案

无需关闭Defender实时防护,仅需将以下路径加入微软Defender的排除项列表即可:

  • R安装目录,默认路径为C:\Program Files\R\
  • Rtools安装目录,默认路径为C:\rtools40\(对应R 4.1.x版本)
  • 你当前的R包开发工作目录
  • R系统临时目录:可在R控制台执行tempdir()获取当前临时目录路径,也可先在系统环境变量中设置R_TEMP为固定路径(如C:\R\temp)后将该固定路径加入排除项
  • R用户包库目录:可在R控制台执行.libPaths()获取对应路径加入排除项

可选优化配置

如果仍偶发类似问题,可在包的DESCRIPTION文件中添加如下配置,关闭32位架构编译,减少Defender扫描触发概率:

Biarch: false

内容的提问来源于stack exchange,提问作者Greg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 21:27:03