macOS更新后Samtools报libcrypto.1.0.0.dylib缺失问题咨询
问题现象
Apple Silicon M1芯片Mac升级到macOS Monterey 12.4后,Conda环境安装的Samtools启动报错:
dyld[29136]: Library not loaded: @rpath/libcrypto.1.0.0.dylib Referenced from: /Users/atnik/opt/anaconda3/bin/samtools Reason: tried: '/Users/atnik/opt/anaconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/Users/atnik/opt/anaconda3/bin/../lib/libcrypto.1.0.0.dylib' (no such file), '/usr/local/lib/libcrypto.1.0.0.dylib' (no such file), '/usr/lib/libcrypto.1.0.0.dylib' (no such file) zsh: abort samtools
本地库目录仅存在libcrypto.1.1.dylib,无1.0.0版本库文件,重装Anaconda、重装/升级Samtools均无法解决问题,当前默认安装版本为samtools-1.4.1-0,升级1.9、1.11版本失败。
根因说明
- 旧版Samtools依赖OpenSSL 1.0版本动态库,macOS Monterey已经在系统路径中移除了这个老旧版本的库文件
- Conda默认源的Samtools包没有做Apple Silicon arm64架构适配,实际拉取的是x86架构打包的版本,它依赖的
libcrypto.1.0.0.dylib在arm64架构的conda源中没有对应安装包,所以不管是重装Anaconda还是重装、升级Samtools,都拉不到匹配的依赖,持续报找不到文件的错误。
解决方法
优先选择第一种方案,稳定性最高。
方案1:通过conda-forge源安装适配arm64架构的Samtools
conda-forge源已经完成Apple Silicon全系列、Monterey系统的适配,会自动匹配对应版本的OpenSSL依赖,不会出现动态链接错误。- 清理当前环境中残留的冲突包:
conda remove -y samtools openssl - 指定conda-forge源安装最新稳定版Samtools:
conda install -y -c conda-forge samtools - 安装完成后执行
samtools --version验证,正常输出版本信息即修复完成。
- 清理当前环境中残留的冲突包:
方案2:新建纯净arm64专属环境(适合旧环境混装x86包导致依赖混乱的场景)
如果旧环境之前装过Rosetta转译的x86包,会出现架构冲突,直接新建纯净环境即可:
# 指定架构为osx-arm64新建环境,直接从conda-forge安装samtools CONDA_SUBDIR=osx-arm64 conda create -n seqenv -y -c conda-forge samtools # 激活环境 conda activate seqenv # 验证功能 samtools --version
- 方案3:软链接兼容(仅适合必须使用1.4.x等老旧版本Samtools的临时场景,不推荐长期使用)
通过软链接将现有高版本libcrypto映射为程序需要的1.0.0版本,注意替换路径为自己本地的conda安装路径:ln -s /Users/atnik/opt/anaconda3/lib/libcrypto.1.1.dylib /Users/atnik/opt/anaconda3/lib/libcrypto.1.0.0.dylib
注意:该方法属于版本兼容hack,部分依赖OpenSSL 1.0专属API的功能可能出现运行异常,仅作临时应急使用。
内容的提问来源于stack exchange,提问作者Atsathe
相关产品推荐
相关产品推荐

