miniconda换目录

如果把conda/miniconda换一个目录,会出现一些脚本bash bang等硬编码写死路径的问题,需要修复

可以执行以下脚本修复

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

#!/bin/bash
set -ex

OLD_PATH="/nfs/ofs-llm-ssd/user/gogongxt/miniconda3"
NEW_PATH="/nfs/gogongxt/miniconda3"

# 1. 修复 base 环境的 bin 目录
if [ -d "$NEW_PATH/bin" ]; then
    cd "$NEW_PATH/bin"
    # -r 参数表示如果 grep 没有输出,xargs 不会执行后面的 sed
    grep -rIl "$OLD_PATH" . | xargs -r sed -i "s|$OLD_PATH|$NEW_PATH|g"
fi

# 2. 修复 Conda 自带的配置和环境激活脚本
if [ -d "$NEW_PATH/etc/profile.d" ]; then
    cd "$NEW_PATH/etc/profile.d"
    grep -rIl "$OLD_PATH" . | xargs -r sed -i "s|$OLD_PATH|$NEW_PATH|g"
fi

# 3. 修复 base 环境的激活钩子脚本
if [ -d "$NEW_PATH/etc/conda/activate.d" ]; then
    cd "$NEW_PATH/etc/conda/activate.d"
    grep -rIl "$OLD_PATH" . | xargs -r sed -i "s|$OLD_PATH|$NEW_PATH|g"
fi

# 4. 修复所有虚拟环境的 bin 目录(pip 和 python 路径的关键)
if [ -d "$NEW_PATH/envs" ]; then
    cd "$NEW_PATH/envs"
    # 递归匹配所有虚拟环境 bin 目录下的脚本
    grep -rIl "$OLD_PATH" ./*/bin/ 2>/dev/null | xargs -r sed -i "s|$OLD_PATH|$NEW_PATH|g"
    # 递归匹配所有虚拟环境的激活钩子脚本
    grep -rIl "$OLD_PATH" ./*/etc/conda/activate.d/ 2>/dev/null | xargs -r sed -i "s|$OLD_PATH|$NEW_PATH|g"
fi

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh .
bash Miniconda3-latest-Linux-x86_64.sh -b -u -p $NEW_PATH

echo "🎉 修复完成!请重新开启终端检查效果。"

注意修改: OLD_PATHNEW_PATH

另外最后会有一步下载miniconda,然后-u -p刷新覆盖,解决ssl证书问题,这部分可以自己手动代理执行

修复完成后就应该可以正确使用了