mamba下载安装使用
前言
之前,习惯性用conda
来管理环境,安装软件。大多时候都还不错,但是就是喜欢转圈圈,下载不动,最后给出些不清晰的信息~
最近服务器出问题,重新配置了一遍工作环境,换用mamba
试试~
mamba
mamba
是使用C++ 对conda
包管理器的重实现。
- 使用多线程来并行下载仓库数据和包文件
- 采用
libsolv
来更快的解决包依赖关联,这是Red Hat,Fedora和OpenSuse的RPM 包管理器中使用的先进的库 - mamba核心部分使用C++来获取最大效率
最重要的是mamba
有着和conda
一样的命令, 没啥学习成本就可以迁移到mamba
。
The mamba-org
组织有多个Mamba 支持:
mamba
基于Pyhton命令行实现,替换conda, 提供高速,更可靠的环境管理micromamba
纯C++实现,单个可执行文件libmamba
一个C++库,为mamba
和micromamba
提供低层级和高层级的API接口。
下载安装
这里我们下载安装micromamba。可以使用以下命令进行自动安装
## Linux 默认shell 使用bash
curl micro.mamba.pm/install.sh | bash
## Linux 默认shell 使用zsh
curl micro.mamba.pm/install.sh | zsh
这里我根据我个人环境,进行手动安装演示
下载micromamba
$ curl -Ls https://micro.mamba.pm/api/micromamba/linux-64/latest | tar -xvj bin/micromamba
$ ls bin/micromamba
bin/micromamba
配置shell环境变量
./bin/micromamba shell init -s bash -p ~/micromamba
-p 可以设置自己想要的路径,创建的环境,配置文件等都在这个目录下。
$ micromamba
__
__ ______ ___ ____ _____ ___ / /_ ____ _
/ / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/
/ /_/ / / / / / / /_/ / / / / / / /_/ / /_/ /
/ .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/
/_/
Version: 1.0.0
这个标志和mamba不一样,不过没关系,命令功能都一样。
当前调用是通过命令micromamba, 名字稍长,我们可以在~/.bashrc里加上这句来通过mamba调用
alias mamba=micromamba
配置
rc 文件表示run commands或者runtime configuration, 命令运行时的一些配置文件或命令。我们最常见就是.bashrc文件。mamba可以读取.condarc文件和.mambarc文件配置。
mamba可以读取多个rc文件,然后合并它们的内容,不过我们也不需要配置多个,配置一个就行。mamba读取rc文件有一个优先级:
// on_unix
{
"/etc/conda/.condarc",
"/etc/conda/condarc",
"/etc/conda/condarc.d/",
"/etc/conda/.mambarc",
"/var/lib/conda/.condarc",
"/var/lib/conda/condarc",
"/var/lib/conda/condarc.d/",
"/var/lib/conda/.mambarc"
}
{ root_prefix }/.condarc
{ root_prefix }/condarc
{ root_prefix }/condarc.d
{ root_prefix }/.mambarc
~/.conda/.condarc
~/.conda/condarc
~/.conda/condarc.d
~/.condarc
~/.mambarc
{ target_prefix }/.condarc
{ target_prefix }/condarc
{ target_prefix }/condarc.d
{ target_prefix }/.mambarc
$CONDARC,
$MAMBARC;
root_prefix 为之前设置的-p 参数值, 我们就在root_prefix 添加一个.mambarc文件。
$ vim ~/micromamba/.mambarc
## 添加以下内容,并保存
channels:
- defaults
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda
custom_channels:
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
always_yes: true
auto_activate_base: false
上述配置中,将 conda-forge, bioconda, r这三个设为了默认channel, 所以以后安装这3个channel时,不用在命令行通过-c CHANNEL 来指定这三个channel了。同时always_yes设为true, 也不用每次加-y参数或者每次手动输入y确认安装包了。
新体验
mamba/micromamba使用和conda用法一样,不多介绍了。除了速度更快些,貌似软件兼容性也解决的更好。
安装包,某个依赖不存在时、而且不能自动安装时,最后会明确指出某个包没有,这样,我们就把那个依赖包安装了,再重新安装就好了~
安装时,进度条更加动感,能感觉它是在下载东西,而不像conda那再那一直转啊转。
还有,查看按照包时,它会将你的手动安装的包,用颜色字体来展示,这个小细节做得不错~
此外,mamba还有个新功能,用于查询软件依赖。
$ mamba repoquery depends -t salmon
__
__ ______ ___ ____ _____ ___ / /_ ____ _
/ / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/
/ /_/ / / / / / / /_/ / / / / / / /_/ / /_/ /
/ .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/
/_/
Loaded current active prefix: "/home/huangsh/software/micromamba/envs/rna"
salmon[1.9.0]
├─ boost-cpp[1.74.0]
│ ├─ bzip2[1.0.8]
│ │ └─ libgcc-ng[12.2.0]
│ │ ├─ _libgcc_mutex[0.1]
│ │ └─ _openmp_mutex[4.5]
│ │ ├─ _libgcc_mutex already visited
│ │ └─ libgomp[12.2.0]
│ │ └─ _libgcc_mutex already visited
│ ├─ libgcc-ng already visited
│ ├─ icu[69.1]
│ │ ├─ libgcc-ng already visited
│ │ └─ libstdcxx-ng[12.2.0]
│ ├─ libstdcxx-ng already visited
│ ├─ libzlib[1.2.13]
│ │ └─ libgcc-ng already visited
│ ├─ xz[5.2.6]
│ │ └─ libgcc-ng already visited
│ └─ zstd[1.5.2]
│ ├─ libgcc-ng already visited
│ ├─ libstdcxx-ng already visited
│ └─ libzlib already visited
├─ bzip2 already visited
├─ libgcc-ng already visited
├─ icu already visited
├─ libstdcxx-ng already visited
├─ libzlib already visited
├─ libjemalloc[5.2.1]
│ ├─ libgcc-ng already visited
│ └─ libstdcxx-ng already visited
└─ tbb[2021.6.0]
├─ libgcc-ng already visited
└─ libstdcxx-ng already visited
更可以查询有哪些包依赖于这个包!
$ mamba repoquery whoneeds libgcc-ng
__
__ ______ ___ ____ _____ ___ / /_ ____ _
/ / / / __ `__ \/ __ `/ __ `__ \/ __ \/ __ `/
/ /_/ / / / / / / /_/ / / / / / / /_/ / /_/ /
/ .___/_/ /_/ /_/\__,_/_/ /_/ /_/_.___/\__,_/
/_/
Loaded current active prefix: "/home/huangsh/software/micromamba/envs/rna"
Name Version Build Depends Channel
──────────────────────────────────────────────────────────────────────────────
boost-cpp 1.74.0 h6cacc03_7 libgcc-ng >=9.4.0 anaconda/cloud/conda-forge
bzip2 1.0.8 h7f98852_4 libgcc-ng >=9.3.0 anaconda/cloud/conda-forge
icu 69.1 h9c3ff4c_0 libgcc-ng >=9.4.0 anaconda/cloud/conda-forge
libjemalloc 5.2.1 h9c3ff4c_6 libgcc-ng >=9.4.0 anaconda/cloud/conda-forge
libzlib 1.2.13 h166bdaf_4 libgcc-ng >=12 anaconda/cloud/conda-forge
salmon 1.9.0 h7e5ed60_1 libgcc-ng >=12 anaconda/cloud/bioconda
tbb 2021.6.0 h924138e_1 libgcc-ng >=12 anaconda/cloud/conda-forge
xz 5.2.6 h166bdaf_0 libgcc-ng >=12 anaconda/cloud/conda-forge
zstd 1.5.2 h6239696_4 libgcc-ng >=12 anaconda/cloud/conda-forge
参考
https://github.com/mamba-org/mamba
https://mamba.readthedocs.io/en/latest/