本来conda安装软件运行良好,接着安装blast,不知道哪个软件触发了什么,报错
Error while loading conda entry point: conda-libmamba-solver (libarchive.so.19: can not open shared object file: No such file or directory)
CondaValueError: You have chosen a non-default solver backend (libmamba) but it was not recognized. Choose one of: classic
安装别的软件也是报错。后来只要涉及到conda命令都会在一开始列出该错误。
第一个行错误表示conda在加载conda-libmamba-solver时找不到libarchive.so.19这个共享库文件。
conda-libmamba-solver是conda安装的一个包,可能是安装别的软件时依赖安装的。
[root@BK-machine] conda list |grep conda-libmamba*
conda-libmamba-solver 24.1.0 pyhd3eb1b0_0 defaults
造成第一个error的可能原因:
- libarchive版本不匹配,依赖的libarchive版本高于当前系统中的版本。
- libarchive共享库文件没有正确安装或目录结构失配
- conda环境中的依赖关系错误,导致找不到对应的文件。
使用conda list | grep libarchive
查看了libarchive版本
[root@BK-machine] conda list | grep libarchive
libarchive 3.6.2 h039dbb9_1 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
libarchive 3.7.4 hfca40fe_0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
#查看/usr/lib 或/usr/local/lib等路径下是否真的存在libarchive.so.19文件。
[root@BK-machine]ls /usr/lib |grep libarchive #不存在
[root@BK-machine]ls /usr/local/lib |grep libarchive #不存在
[root@BK-machine] ls /usr/lib64/libarch*
/usr/lib64/libarcher.so /usr/lib64/libarchive.so.13.3.3
/usr/lib64/libarchive.so.13
但版本不一致。
看起来libarchive.so.19在系统中不存在。可能是在conda的依赖包里面
使用find / -name 'libarchive.so.*' 2>/dev/null
查找整个系统中是否存在。未果。
尝试conda update --all
升级conda和依赖版本,但error依然存在,阻止更新。
从第二个问题入手:
网络查询解决方案:
1. 临时解决办法
conda update conda --solver=classic
2. 一劳永逸解决方法
conda config --set solver classic
运行完后报错消失,连第一个错误也没有了。神奇~ 又可以愉快的安装软件了。
其实上面这条命令是在.condarc文件(/root/.condarc)最后添加了一行:
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- defaults
show_channel_urls: true
solver: classic