用途
debug-r-env 是一个专门用于排查和修复 R 环境问题的子技能,主要解决导致脚本无法正常运行的常见 R 环境故障。它会分析 R 安装、包依赖和系统配置,帮助用户定位并修复缺失包、版本冲突和配置问题。
主要能力
当被调用时,该子技能会执行以下工作:
- 分析 R 环境:检查 R 版本与平台、列出已安装包及其版本、检查库路径、验证包依赖。
- 识别缺失包:扫描脚本中的 library() 和 require() 调用,检查 Bioconductor 包,检测 GitHub 包依赖,识别版本不匹配。
- 诊断冲突:发现包遮蔽(masking)问题、检测不兼容版本、识别系统依赖、检查编译要求。
- 提供解决方案:生成安装命令、建议版本更新、推荐初始化 renv、提供故障排查步骤。
使用方式
该子技能可通过参数进行配置:
- script_path:要分析的 R 脚本路径,默认为当前目录。
- required_packages:要验证的包列表,默认从脚本自动检测。
- check_bioc:是否检查 Bioconductor 包,默认 true。
- check_updates:是否检查可用更新,默认 false。
- fix_issues:是否尝试安装缺失包,默认 false。
它会生成诊断报告,包含 R 版本、平台、库路径、已安装包、缺失包、安装命令和警告信息。安装命令按包来源区分:
CRAN 包: install.packages("package_name")
Bioconductor 包: if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("package_name")
GitHub 包: remotes::install_github("username/package")
或
devtools::install_github("username/package")
多个包: packages <- c("tidyverse", "ggplot2", "dplyr") install.packages(packages)
适用场景
当用户遇到以下情况时适合使用该子技能:
- 检查所需包是否已安装
- 解决包版本冲突
- 修复“package not found”错误
- 验证 R 版本兼容性
- 调试库路径问题
- 排查编译失败
示例用户请求包括:“我的 R 脚本提示 'package not found'”、“检查 RNA-seq 分析所需的所有包是否已安装”、“修复我的 R 环境——ggplot2 无法加载”、“为什么 DESeq2 报错?”、“调试我项目中的包依赖”、“为我的分析安装所有必需的包”。
常见问题与解决方案
- “there is no package called”:包未安装,使用 install.packages("pkgname")。
- Bioconductor 包未找到:Bioconductor 未配置,使用 BiocManager::install("pkgname")。
- 包被另一个包遮蔽:命名空间冲突,显式使用 library(pkgname)。
- 编译错误:缺少系统依赖,安装系统构建工具。
- 版本不匹配:包需要更新的 R,更新 R 或使用旧版包。
- renv 激活失败:锁文件损坏,删除并恢复 renv.lock。
限制与注意事项
- 始终同时检查 CRAN 和 Bioconductor 来源。
- 如果项目中存在 renv.lock,会遵循该文件。
- 提供安全的安装命令(运行前需人工审查)。
- 检测编译所需的系统依赖。
- 检查包遮蔽冲突。
相关子技能:create-project(使用合适环境设置新项目)、run-analysis(在修复环境问题后执行脚本)。