答疑-是否软件源问题都必须更换为国内呢-

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

问题如下:

部分智能大模型给出的方案如下:

问题分析

这条 apt update 报错核心:

Temporary failure resolving 'xxx'

翻译:域名解析失败(DNS问题)

  • 正常软件源(ubuntu官方源)更新成功
  • 两个第三方源失败:
    1. packages.microsoft.com(Edge浏览器源)
    2. packages.ros.org(ROS软件源)

⚠️ 不是网络完全断网,只是DNS解析不到这两个域名,apt会临时用旧缓存,不影响已经装好的软件使用;15个可升级包是正常提示。


方案1:先测试能不能解析域名(排查根源)

bash 复制代码
ping packages.microsoft.com
ping packages.ros.org

如果 ping 报 Name or service not knownDNS问题

快速修复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 在国内经常解析/下载失败,换成清华镜像源

  1. 查看你的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:只想消除警告,暂时禁用两个出问题的源

  1. 关闭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会被覆盖

  1. 先查看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)终极修复

  1. 关闭虚拟机
  2. 虚拟机网络设置:把 NAT模式改成桥接模式
  3. 重启虚拟机,再执行sudo apt update

NAT模式在部分校园网、公司网环境,极易出现DNS转发故障,改DNS怎么改都无效。


做完还是报错?

把下面两条命令输出发给我,我就能精准定位:

bash 复制代码
resolvectl status
cat /etc/netplan/*.yaml

另外告诉我你是:实体机 / VMware虚拟机 / WSL2

相关推荐
zhangrelay1 小时前
《ROS 机器人程序设计》课程教学大纲-2026- kinetic-lyrical
linux·笔记·学习·ubuntu·机器人
KFCgrandpahhh1 小时前
rk3576点灯
linux·驱动开发
拂拉氏1 小时前
【知识讲解】 Linux进程认识及深度理解
linux·进程
具身AGI2 小时前
物理AI人类学习路线的答案
人工智能·学习
码农小韩2 小时前
Linux应用开发(一)——Linux的标准IO
linux·运维·服务器
路弥行至2 小时前
Linux (ARM64 / Jetson) 挂载 exFAT 移动硬盘排障与离线安装指南
linux·运维·服务器·经验分享·笔记·jetson·exfat
那年窗外下的雪.2 小时前
AIDC 学习日志|第 21 天|EVPN 多归属故障演练与中断窗口定位
网络·git·学习
wuyk5552 小时前
从零吃透 MQTT 通信|第 5 章 MQTT 心跳保活机制深度优化,断线检测与智能自动重连
c语言·开发语言·stm32·学习
幼儿园蛋小黄2 小时前
基于 TCP 的嵌入式网络通信学习总结
网络协议·学习·tcp/ip