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

R包安装报错:依赖RJSONIO加载失败问题求助

解决R 4.4.3安装RJSONIO依赖包失败(undefined symbol: VECTOR_PTR_RO)的问题

问题背景

在Ubuntu 22.04环境下,使用R 4.4.3安装rfigshare包时,其依赖的RJSONIO包安装失败,核心报错为:

Error: package or namespace load failed for ‘RJSONIO’ in dyn.load(file, DLLpath = DLLpath, ...):
 unable to load shared object '/home/username/R/x86_64-pc-linux-gnu-library/4.4/00LOCK-RJSONIO/00new/RJSONIO/libs/RJSONIO.so':
  /home/username/R/x86_64-pc-linux-gnu-library/4.4/00LOCK-RJSONIO/00new/RJSONIO/libs/RJSONIO.so: undefined symbol: VECTOR_PTR_RO
Error: loading failed
Execution halted

编译阶段同时出现VECTOR_PTR_RO隐式声明的警告,说明该C API宏在R 4.4版本中已被调整或移除。

解决方案

方案1:安装修复后的开发版RJSONIO

直接从GitHub安装适配R 4.4的修复版本:

install.packages("devtools")
devtools::install_github("jeroen/RJSONIO")

该分支已针对R 4.4的C API变化更新了代码,替换了过时的VECTOR_PTR_RO宏。

方案2:替换依赖包,绕过RJSONIO

rfigshare的JSON处理逻辑可由jsonlite替代,无需依赖RJSONIO:

  1. 先安装替代包:
install.packages("jsonlite")
  1. 跳过RJSONIO依赖,手动安装并加载rfigshare:
Sys.setenv("R_REMOTES_NO_ERRORS_FROM_WARNINGS" = "true")
install.packages("rfigshare", dependencies = FALSE)
library(jsonlite)
library(rfigshare)

方案3:手动修改源码编译

若偏好使用CRAN版源码,可手动修改代码兼容R 4.4:

  1. 下载源码包并解压:
wget https://cran.r-project.org/src/contrib/RJSONIO_1.3-1.8.tar.gz
tar -xzf RJSONIO_1.3-1.8.tar.gz
cd RJSONIO/src
  1. 编辑RJSON.c文件,将第73行的VECTOR_PTR_RO(tmp)替换为VECTOR_PTR(tmp)
  2. 回到上级目录,重新编译安装:
install.packages("./RJSONIO", repos = NULL, type = "source")

前置依赖检查

确保Ubuntu系统已安装编译所需的基础依赖:

sudo apt-get update && sudo apt-get install r-base-dev libcurl4-openssl-dev

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 18:14:56