admin管理员组

文章数量:1618735

Temporary failure resolving——Ubuntu DNS未配置报错与解决记录

环境信息:

WSL Ubuntu 18.04 LTS

安装unzip命令所需的工具包

sudo apt-get install unzip

出现报错:

Temporary failure resolving 'archive.ubuntu'

报错信息

思考

  • 该网址有问题–换用镜像,或者本地安装(先下载到本地,再导入安装)
  • Ubuntu无法解析IP域名–配置DNS
报错原因确定
为判断是哪种情况,采用ping 操作进一步检查:
ping www.google

考虑到google无法ping通,可能是windows上的VPN无法共享给WSL使用,进一步尝试ping 国内网址:

ping www.baidu
进一步发现,是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/microsoft/WSL/issues/5971.
[2]https://github/microsoft/WSL/issues/5867.
[3]https://gist.github/danvy/9486bf730371436131cb888ff4c2ceb6.

[4]https://blog.csdn/shahuhu000/article/details/84991515. [5]https://blog.csdn/qq_38491310/article/details/86494635. [6]https://blog.csdn/n_fly/article/details/118710179.

本文标签: 报错failureTemporaryresolvingdns