win11安装WSL后,进入linux子系统卡死问题解决

  • 时间:2025-11-21 21:58 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:发生原因 (modelscope) user@hostname:~$ conda env list ^C^Z

发生原因



(modelscope) user@hostname:~$ conda env list                                                                     
^C^Z                                                                                                                    
[4]+  Stopped                 ( if [ -n "${_CE_M:+x}" ] && [ -n "${_CE_CONDA:+x}" ]; then                               
    "$CONDA_EXE" $_CE_M $_CE_CONDA "$@";                                                                                
else                                                                                                                    
    "$CONDA_EXE" "$@";                                                                                                  
fi ) 

如上图所示,通过WSL命令进入虚拟机后,一直卡住没有反应。经查询分析,发现最可能的原因是:

🔥 根本原因:Conda 正在尝试连接 repo.anaconda.com,但被网络策略/防火墙/地区限制阻塞(不是慢,是完全卡住)

Anaconda 自 2024 年起对 repo.anaconda.com 强制执行 Terms of Service (ToS) 验证:

首次访问或定期刷新时,conda 会尝试发起 HTTPS 请求到 https://repo.anaconda.com;如果你的网络环境无法访问该域名(或被中间防火墙静默丢弃包),conda 会一直阻塞等待响应,而不是快速失败;这就是为什么 Ctrl+C 无效 —— 底层网络调用处于不可中断的等待状态。

✅ 你之前提到过遇到 ToS 问题,这正是同一类问题。

解决方案

🔍 但为什么 `conda env list` 还是卡住?

可能原因:
1. **你虽然移除了 `defaults`,但某些环境或包缓存仍在触发 channel 检查**;
2. **某些插件(如 `anaconda_telemetry`)仍在后台尝试连接 Anaconda 服务**;
3. **`custom_multichannels` 仍然绑定到 `repo.anaconda.com`(见你的 config 输出)**。

 ✅ 终极解决方案:**在 `~/.condarc` 中显式覆盖 `default_channels` 为空或清华源**

步骤 1:编辑 `~/.condarc` 手动覆盖
```bash
cat > ~/.condarc <<EOF
channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
default_channels: []
custom_channels: {}
custom_multichannels: {}
channel_priority: strict
ssl_verify: true
anaconda_anon_usage: false
report_errors: false
auto_update_conda: false
notify_outdated_conda: false
EOF
```

> 💡 这样做会**彻底切断 conda 与 `repo.anaconda.com` 的所有关联**,包括 `defaults` 的后备行为。

---

步骤 2:验证配置是否生效
```bash
conda config --show channels
# 应只有清华源

conda config --show default_channels
# 应显示空列表 []
```

---

步骤 3:清除可能的缓存(可选)
```bash
# 清除 repodata 缓存(可能包含旧 channel 信息)
conda clean --repodata --force-pkgs-dirs -y
```

---

步骤 4:测试 `conda env list`
```bash
conda env list
```
现在应该**不再卡住**。

> 💡 如果仍卡,说明有某个插件在联网。你可以临时禁用插件:
> ```bash
> CONDA_NO_PLUGINS=1 conda env list
> ```

---

📌 补充说明

- `default_channels` 是 conda 编译时写死的 fallback,**只有在你不在 `.condarc` 中定义它时才生效**;
- 一旦你在 `.condarc` 中显式写 `default_channels: []`,conda 就会**完全忽略内置默认值**;
- `custom_multichannels`(如你配置中的 `defaults` → `repo.anaconda.com`)也会被 `custom_multichannels: {}` 覆盖。

---

### ✅ 验证是否彻底断连

你可以用 `strace` 或 `tcpdump` 观察是否有连接 `repo.anaconda.com`,但更简单的方法是:

```bash
# 临时断网测试(在 WSL 中)
sudo ip route del default
conda env list   # 应该秒出,不报错
sudo dhclient    # 恢复网络
```

如果断网下能正常列出环境,说明已彻底离线。

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】UV vs pyenv:谁才是更强的 Python 管理工具?(2025-11-21 23:07)
【系统环境|】7种 Python 虚拟环境工具全面对比:新手应该选择哪种(2025-11-21 23:06)
【系统环境|】Python pyQt5 适于新手上路(第一篇 环境和配置)(2025-11-21 23:06)
【系统环境|】pyhon基础-(一)开发环境搭建(2025-11-21 23:05)
【系统环境|】Markdown简洁高效的文本标记语言,技术人的写作利器之扩展语法(2025-11-21 23:05)
【系统环境|】html开发笔记06- 字体标签和文字标签(2025-11-21 23:04)
【系统环境|】jQuery HTML代码/文本(2025-11-21 23:04)
【系统环境|】QT5.9.9生成并调用自己的DLL(2025-11-21 23:03)
【系统环境|】C#调用C++常用的两种方式(2025-11-21 23:03)
【系统环境|】科普 | 聊聊COD吃鸡之余,发现个强力清理注册表软件(2025-11-21 23:02)
手机二维码手机访问领取大礼包
返回顶部