Temporary failure resolving——Ubuntu DNS未配置报错与解决记录
环境信息:
WSL Ubuntu 18.04 LTS
安装unzip命令所需的工具包
sudo apt-get install unzip
出现报错:
Temporary failure resolving 'archive.ubuntu.com'
报错信息
思考
- 该网址有问题–换用镜像,或者本地安装(先下载到本地,再导入安装)
- Ubuntu无法解析IP域名–配置DNS
报错原因确定
为判断是哪种情况,采用ping 操作进一步检查:
ping www.google.com
考虑到google无法ping通,可能是windows上的VPN无法共享给WSL使用,进一步尝试ping 国内网址:
ping www.baidu.com
进一步发现,是WSL中的 DNS未配置。
解决方法
参考网上官方与非官方相关教程,得出两种解决办法:
1. 修改/etc/resolv.conf 文件
(1) 在/etc/resolv.conf 中添加
nameserver 8.8.8.8
或者
nameserver 114.114.114.114
(2) 保存并退出文件; (3) *选择性操作:重启WSL;
但是,我个人觉得这种方法是无效的。
因为用vim打开该文件时,可以看到:文件头清清楚楚地标出:
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
resolv_conf文件提示
也就是说,这个文件是系统每次启动时自动生成,修改没用。
2. 修改 /etc/wsl.config 文件
(1) 在/etc/wsl.config 中添加:
[network]
generateResolvConf = false
(2) 保存并退出文件。
上述两种方法,博主尝试后,第二种方法针对本人WSL环境是可行的;而理论上第一种方法其实是无效的。
若还未解决你的DNS配置问题,可以直接拖到文章最后,使用进阶版操作(会比前两种方法麻烦一点)。
深入分析
为何第一种方法无法有效解决问题?
→
\to
→ 因为它是系统每次启动都会更新的文件;
→
\to
→ 查阅资料得知:在之前版本的Ubuntu系统中,该文件打开时,会有如下提示:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
→
\to
→ 进一步观察Ubuntu 18.04-LTS中该文件信息:
resolv_conf文件属性
可以看出,WSL中 /etc/resolv.conf 文件是有着指向 ../run/resolvconf/resolv.conf 文件的软链接。因此,每当系统启动,都会更新其文件内容为系统设置。而,由于两个文件是由系统的resolvconf生成并在每次系统启动时更新,因此无法通过手动修改其(上述两个文件)内容来达到修改DNS配置的效果。
进阶版解决办法
如若上述提出的方法未解决你的系统DNS配置问题,可以参考references列表中的博客[4]、[5]、[6]中的方法,也许可以帮到你。
最后,希望大家配环境的时候,都一帆风顺~~~
References
[1]https://github.com/microsoft/WSL/issues/5971. [2]https://github.com/microsoft/WSL/issues/5867. [3]https://gist.github.com/danvy/9486bf730371436131cb888ff4c2ceb6.
[4]https://blog.csdn.net/shahuhu000/article/details/84991515.
[5]https://blog.csdn.net/qq_38491310/article/details/86494635.
[6]https://blog.csdn.net/n_fly/article/details/118710179.
|