部署Golem Shiny应用至Shiny.io遇库与锁文件不同步及DBI安装失败求助
问题描述
部署Golem Shiny应用至shiny.io时,出现以下两个问题:
1. 部署阶段renv锁文件与本地库不同步
ℹ Capturing R dependencies from renv.lock Error in `parseRenvDependencies()`: ! Library and lockfile are out of sync ℹ Use renv::restore() or renv::snapshot() to synchronise ℹ Or ignore the lockfile by adding to your .rscignore Backtrace: ▆ 1. └─rsconnect::deployApp(...) 2. └─rsconnect:::bundleApp(...) 3. └─rsconnect:::createAppManifest(...) 4. └─rsconnect:::bundlePackages(...) 5. └─rsconnect:::computePackageDependencies(...) 6. └─rsconnect:::parseRenvDependencies(bundleDir) 7. └─cli::cli_abort(...) 8. └─rlang::abort(...) Execution halted
2. 执行renv::restore()同步时DBI包安装失败
# Installing packages -------------------------------------------------------- - Installing DBI ... FAILED Error in if (cond) return(expr) : the condition has length > 1 In addition: Warning message: In system2(R(), args, stdout = TRUE, stderr = TRUE) : running command ''/Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/bin/R' CMD config CC 2>&1' had status 1
解决方法
方法一:修复编译器配置(针对macOS环境)
报错中R CMD config CC执行失败,说明R的编译器依赖缺失:
- 打开终端,执行
xcode-select --install安装或修复Xcode命令行工具 - 重启RStudio,重新执行
renv::restore()
方法二:确保DBI版本与R版本兼容
- 查看
renv.lock中DBI的指定版本,确认是否支持当前R 4.3版本(部分旧版DBI可能不兼容R 4.3+) - 手动安装兼容版本的DBI,例如:
install.packages("DBI", version = "1.1.3") # 选择适配R4.3的版本 - 执行
renv::snapshot()更新锁文件后,再尝试部署
方法三:重置renv环境
如果上述方法无效,彻底重置renv:
- 退出RStudio,删除项目目录下的
renv文件夹和renv.lock文件 - 重新打开项目,执行
renv::init()初始化新的renv环境 - 手动安装所有应用依赖包(确保DBI安装成功)
- 执行
renv::snapshot()生成新的锁文件 - 重新发起shiny.io部署
方法四:临时绕过renv部署(应急方案)
若需快速验证应用部署可行性,可忽略renv锁文件:
- 在项目根目录创建
.rscignore文件 - 添加以下内容:
renv/ renv.lock - 重新执行
rsconnect::deployApp(),让shiny.io自动检测依赖
内容的提问来源于stack exchange,提问作者GaB
相关产品推荐
相关产品推荐

