Mac M2环境下R 4.2.2加载affy包失败问题求助
加载affy包失败的原因及解决方法(Mac M2 + R 4.2.2)
报错信息
> library(affy) Error: package or namespace load failed for ‘affy’ in dyn.load(file, DLLpath = DLLpath, ...): unable to load shared object '/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/preprocessCore/libs/preprocessCore.so': dlopen(/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/preprocessCore/libs/preprocessCore.so, 0x0006): Library not loaded: '/opt/R/arm64/gfortran/lib/libgfortran.5.dylib' Referenced from: '/Library/Frameworks/R.framework/Versions/4.2-arm64/Resources/library/preprocessCore/libs/preprocessCore.so' Reason: tried: '/opt/R/arm64/gfortran/lib/libgfortran.5.dylib' (no such file), '/usr/local/lib/libgfortran.5.dylib' (no such file), '/usr/lib/libgfortran.5.dylib' (no such file)
正常加载的包日志
> library(BiocManager) Bioconductor version 3.16 (BiocManager 1.30.19), R 4.2.2 (2022-10-31) > library('limma') > library('GEOquery') Loading required package: Biobase Loading required package: BiocGenerics Attaching package: ‘BiocGenerics’ The following object is masked from ‘package:limma’: plotMA The following objects are masked from ‘package:stats’: IQR, mad, sd, var, xtabs The following objects are masked from ‘package:base’: anyDuplicated, aperm, append, as.data.frame, basename, cbind, colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find, get, grep, grepl, intersect, is.unsorted, lapply, Map, mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank, rbind, Reduce, rownames, sapply, setdiff, sort, table, tapply, union, unique, unsplit, which.max, which.min Welcome to Bioconductor Vignettes contain introductory material; view with 'browseVignettes()'. To cite Bioconductor, see 'citation("Biobase")', and for packages 'citation("pkgname")'. Setting options('download.file.method.GEOquery'='auto') Setting options('GEOquery.inmemory.gpl'=FALSE)
环境与已执行操作
- 环境:Mac M2芯片,R版本4.2.2
- 已执行操作:
- 删除
/Library/Frameworks/R.framework/Resources/library路径下的affy文件夹后重装,仍报错;BiocManager、limma、GEOquery可正常加载。 - 检查并更新所有包至最新版本。
- 成功安装haven包。
- 删除
原因分析
加载失败的核心问题是系统缺少适配arm64架构的gfortran运行库libgfortran.5.dylib。affy包依赖preprocessCore包,而preprocessCore编译时需要链接该库,但你的M2芯片系统在指定路径中找不到这个库,导致无法加载对应的共享对象文件。
解决步骤
- 安装适配arm64的gfortran库
打开终端,通过Homebrew安装gcc套件(包含所需gfortran库):brew install gcc - 重建preprocessCore包
先卸载现有包,再重新安装以确保链接到新库:remove.packages("preprocessCore") BiocManager::install("preprocessCore") - 重新加载affy包
library(affy)
若上述步骤无效,可尝试:
- 用
sessionInfo()确认R是arm64版本,避免混用x86_64架构的包。 - 强制清理缓存并重装affy及依赖:
BiocManager::install("affy", force = TRUE, clean = TRUE)
内容的提问来源于stack exchange,提问作者nikkikki
相关产品推荐
相关产品推荐

