简单问题没必要复杂化,过会再次试一试就好了。

问题如下:
部分智能大模型给出的方案如下:
问题分析
这条 apt update 报错核心:
Temporary failure resolving 'xxx'
翻译:域名解析失败(DNS问题)
- 正常软件源(ubuntu官方源)更新成功
- 两个第三方源失败:
packages.microsoft.com(Edge浏览器源)packages.ros.org(ROS软件源)
⚠️ 不是网络完全断网,只是DNS解析不到这两个域名,apt会临时用旧缓存,不影响已经装好的软件使用;15个可升级包是正常提示。
方案1:先测试能不能解析域名(排查根源)
bash
ping packages.microsoft.com
ping packages.ros.org
如果 ping 报 Name or service not known → DNS问题
快速修复DNS(最有效)
编辑 resolv.conf(临时生效,重启失效)
bash
sudo nano /etc/resolv.conf
在最上方添加公共DNS服务器:
nameserver 223.5.5.5
nameserver 114.114.114.114
nameserver 8.8.8.8
Ctrl+O保存,Ctrl+X退出,再执行更新:
bash
sudo apt update
如果是Ubuntu 20.04(focal),resolv.conf由systemd‑resolved托管,临时改会被覆盖,用下面永久方案:
永久修改DNS(Ubuntu20.04)
bash
sudo nano /etc/systemd/resolved.conf
取消DNS那一行注释,改成:
ini
[Resolve]
DNS=223.5.5.5 114.114.114.114
#FallbackDNS=
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
重启服务:
bash
sudo systemctl restart systemd-resolved
sudo apt update
方案2:国内镜像替换ROS源(推荐,根治ROS源超时)
packages.ros.org 在国内经常解析/下载失败,换成清华镜像源
- 查看你的ros源文件
bash
ls /etc/apt/sources.list.d/
一般文件名类似 ros-latest.list
bash
sudo nano /etc/apt/sources.list.d/ros-latest.list
把原来
deb http://packages.ros.org/ros/ubuntu focal main
替换为清华源:
deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main
保存退出,再更新。
方案3:暂时禁用报错的源(不想修DNS,快速消除警告)
如果你暂时不需要Microsoft Edge,可以注释掉微软源:
bash
sudo nano /etc/apt/sources.list.d/microsoft-edge-dev.list
在行首加 # 注释掉那条deb地址,保存后 sudo apt update 警告就消失。
补充说明
15 packages can be upgraded. Run 'apt list --upgradable' to see them.这条不是错误,只是告诉你有15个软件包可以升级,想看列表执行:
bash
apt list --upgradable
需要升级全部软件:
bash
sudo apt upgrade -y
完整一步一步解决方案(Ubuntu 20.04 focal + ROS)
报错根源:DNS解析失败,国外源访问慢
W: Temporary failure resolving
方案A(推荐根治):更换ROS清华镜像 + 修复DNS
步骤1:修改ROS源为清华源
bash
sudo nano /etc/apt/sources.list.d/ros-latest.list
删除原有内容,粘贴下面一行:
deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main
快捷键:Ctrl+O →回车保存 →Ctrl+X退出
步骤2:永久修改DNS
bash
sudo nano /etc/systemd/resolved.conf
改成下面内容(删掉前面#号)
ini
[Resolve]
DNS=223.5.5.5 114.114.114.114
保存退出,重启DNS服务
bash
sudo systemctl restart systemd-resolved
步骤3:注释掉微软报错源(不需要Edge就关掉)
bash
sudo nano /etc/apt/sources.list.d/microsoft-edge.list
在deb那一行最前面加 #
示例:
#deb https://packages.microsoft.com/repos/edge stable main
保存退出
步骤4:更新软件列表
bash
sudo apt update
✅警告消失就成功了。
方案B:不想改源,临时快速修复(重启后失效)
bash
sudo echo "nameserver 223.5.5.5" > /etc/resolv.conf
sudo apt update
方案C:只想消除警告,暂时禁用两个出问题的源
- 关闭ROS源
bash
sudo nano /etc/apt/sources.list.d/ros-latest.list
行首加#注释
2.关闭微软edge源
bash
sudo nano /etc/apt/sources.list.d/microsoft-edge.list
行首加#注释
bash
sudo apt update
缺点:以后装ROS包时,需要再把注释去掉
更新那15个可升级包(可选)
bash
sudo apt upgrade -y
如果做完方案A依然报解析错误
执行这条命令测试网络:
bash
nslookup packages.ros.org
把输出发给我,可以再进一步定位问题。
进阶全套方案(修改DNS无效专用,Ubuntu20.04)
先说明:如果你是 VMware/VirtualBox虚拟机 / WSL2,普通改resolved.conf经常不生效,下面按顺序一步步执行。
第一步:先执行诊断,定位根源
bash
#1 测试外网IP通不通
ping -c 4 223.5.5.5
#2 指定阿里云DNS,直接解析ROS域名(跳过系统DNS)
nslookup packages.ros.org 223.5.5.5
#3 查看当前系统真正在用的DNS
resolvectl status
- 如果
ping 223.5.5.5失败 → 虚拟机网络本身不通,DNS修改没用,需要改虚拟机网络模式(NAT→桥接) - 如果
nslookup packages.ros.org 223.5.5.5能返回IP → 问题就是本地systemd‑resolved不生效,往下看方案1
方案1:修复systemd‑resolved软链接(最高概率解决)
很多人改完DNS没生效,是因为resolv.conf软链接不对
bash
sudo nano /etc/systemd/resolved.conf
完整复制下面全部内容(#号必须删掉)
ini
[Resolve]
DNS=223.5.5.5 114.114.114.114
FallbackDNS=1.1.1.1
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=no
#LLMNR=no
#Cache=no-negative
保存退出,依次运行:
bash
#重启DNS服务
sudo systemctl restart systemd-resolved
#刷新DNS缓存
sudo resolvectl flush-caches
#修复软链接(关键一步!)
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
然后再更新
bash
sudo apt update
方案2:Netplan永久设置DNS(图形/虚拟机强烈推荐)
Ubuntu20.04最终DNS由netplan接管,只改resolved.conf会被覆盖
- 先查看netplan文件名
bash
ls /etc/netplan/
一般文件名:00-installer-config.yaml
bash
sudo nano /etc/netplan/00-installer-config.yaml
⚠️ yaml缩进必须严格,空格缩进,不能用Tab键
yaml
network:
ethernets:
ens33:
dhcp4: true
nameservers:
addresses: [223.5.5.5,114.114.114.114]
version: 2
ens33是网卡名,如果你用wifi就改成wlan0。
保存退出,应用配置:
bash
sudo netplan apply
sudo apt update
方案3:彻底关掉报错的两个源(最快根治,不用折腾网络)
如果你不想装Edge浏览器,直接删除微软源,一劳永逸消除警告
bash
sudo rm /etc/apt/sources.list.d/microsoft-edge.list
ROS源如果你暂时不用,也可以注释掉:
bash
sudo nano /etc/apt/sources.list.d/ros-latest.list
在行首添加#
#deb https://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ focal main
保存
bash
sudo apt update
⚠️ 以后安装ROS的时候再把#删掉即可,ubuntu官方源不受影响,系统升级完全正常。
方案4:虚拟机专属(VMware / VirtualBox)终极修复
- 关闭虚拟机
- 虚拟机网络设置:把 NAT模式改成桥接模式
- 重启虚拟机,再执行
sudo apt update
NAT模式在部分校园网、公司网环境,极易出现DNS转发故障,改DNS怎么改都无效。
做完还是报错?
把下面两条命令输出发给我,我就能精准定位:
bash
resolvectl status
cat /etc/netplan/*.yaml
另外告诉我你是:实体机 / VMware虚拟机 / WSL2。