### 🔍 诊断与解决步骤
1. **检查当前使用的源格式**
在容器内执行:
ls -la /etc/apt/sources.list.d/ **重点关注是否有名为 debian.sources 的文件**。如果存在(例如显示 -rw-r--r-- 1 root root ... debian.sources),则说明你的容器使用的是新的**DEB822格式**,而不是传统的`sources.list`单文件格式。
2. **根据格式进行更换**
* **情况A:如果存在 debian.sources 文件(DEB822格式)**
这就是你报错的原因。请使用以下命令更换中科大源:
sed -i 's|http://deb.debian.org|https://mirrors.ustc.edu.cn|g; s|http://security.debian.org|https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources * **情况B:如果 sources.list.d/ 目录为空或没有 debian.sources 文件,且 /etc/apt/sources.list 也不存在**
这可能是一个极简容器,初始未包含源文件。我们需要**创建**一个传统的`sources.list`文件。请执行以下命令(适用于Debian 13 Trixie):
echo "deb https://mirrors.ustc.edu.cn/debian/ trixie main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-updates main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian/ trixie-backports main contrib non-free non-free-firmware
deb https://mirrors.ustc.edu.cn/debian-security trixie-security main contrib non-free non-free-firmware" > /etc/apt/sources.list3. **更新软件列表**
无论执行了情况A或B,最后都请运行以下命令来验证换源是否成功:
apt update 观察命令输出中拉取的链接是否都已变为 mirrors.ustc.edu.cn。
### 📌 补充说明
* **关于DEB822格式**:这是Debian自11版(bullseye)后引入的一种更结构化、可读性更好的源文件格式,通常位于 /etc/apt/sources.list.d/debian.sources。如果你的容器是较新的Debian版本,使用这种格式的可能性很大。
* **如果上述方法均无效**:请检查你是否在正确的环境里操作(确保已通过 pct enter 进入目标容器),并可以使用 cat /etc/os-release 再次确认系统版本。
评论区