GCP新TPU VM执行apt-get update报错:sources.list条目格式错误
解决GCP TPU VM上
apt-get update的源列表解析错误 问题原因
你的TPU VM初始化时,cloud-init未正确渲染/etc/apt/sources.list模板文件,导致文件中残留{{mirror}}、{{codename}}这类未替换的变量,apt无法解析这些无效的源地址,从而抛出"Malformed entry"错误。
解决方案
1. 临时快速修复(立即生效)
先备份原文件避免误操作:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
获取当前系统的版本代号(比如Ubuntu 22.04对应jammy,20.04对应focal):
lsb_release -c
用sed命令批量替换文件中的变量为实际值,假设版本代号是jammy:
sudo sed -i 's/{{mirror}}/http:\/\/archive.ubuntu.com\/ubuntu/g; s/{{codename}}/jammy/g' /etc/apt/sources.list
执行更新测试:
sudo apt-get update
2. 永久修复(避免重启后被覆盖)
如果希望修改后的源列表在VM重启后不被cloud-init重置,按以下操作:
编辑cloud配置文件:
sudo nano /etc/cloud/cloud.cfg找到
apt_preserve_sources_list字段,将其值改为true;如果没有该字段,直接添加一行:apt_preserve_sources_list: true保存退出(Ctrl+O,回车,Ctrl+X)。
或者直接修改cloud-init的源模板文件,确保后续初始化能正确生成源列表:
sudo nano /etc/cloud/templates/sources.list.tmpl将模板中的
{{mirror}}替换为实际镜像地址,比如http://archive.ubuntu.com/ubuntu,保存后重启VM即可生效。
3. 替代方案:使用独立源文件
无需修改原sources.list,直接在sources.list.d目录添加新的源配置:
- 创建新的源文件:
sudo nano /etc/apt/sources.list.d/ubuntu-official.list - 写入以下内容(根据你的系统版本替换
jammy):deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse deb http://security.ubuntu.com/ubuntu jammy-security main restricted universe multiverse - 保存后执行更新:
sudo apt-get update
内容的提问来源于stack exchange,提问作者BioGeek
相关产品推荐
相关产品推荐

