WSL 2 Ubuntu 20.04 中的名称服务器问题

Posted

技术标签:

【中文标题】WSL 2 Ubuntu 20.04 中的名称服务器问题【英文标题】:Nameserver problems in WSL 2 Ubuntu 20.04 【发布时间】:2021-10-26 21:24:34 【问题描述】:
Windows Version: 10 Pro, Version 20H2 (OS Build 19042.1165)
WSL Version: 2
Ubuntu Version: 20.04

我正在我的 Windows 笔记本电脑上使用 WSL 2,并尝试使用 pip 安装一些 Python 包 (pytest)。具体来说,我使用 Python=3.7 创建了一个 Anaconda 环境,并尝试在该环境中安装该软件包。但是,该命令会挂起一段时间,然后我收到此警告:

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<pip._vendor.urllib3.connection.HTTPSConnection object at 0x7f608eadaf90>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution')': /simple/pytest/

同样的事情一直重复,直到我按下 Ctrl-C。我最初安装了 WSL 版本 1 并升级到 WSL 版本 2。当我使用 WSL 版本 1 时,我没有这个问题。当我在网上搜索时,似乎有几个人遇到了类似(但在实际异常方面略有不同)的问题,但我没有找到适合我的解决方案。

我还发现这不仅限于pip。我也无法克隆gitlab(工作)存储库。它导致无法找到存储库的致命错误。我从here 找到了一个潜在的修复方法。它说要在我的/etc/resolv.conf 中添加nameserver。这是我目前的/etc/resolv.conf

nameserver 1.1.1.1

我手动添加了最后一行。如文件所示,我创建了/etc/wsl.conf 以阻止此文件自动重新生成:

[network]
generateResolvConf = false

这可行,但是,我发出的命令需要一段时间才能执行(git clonepip 等)。

我真的不明白问题是什么,为什么添加 nameserver 1.1.1.1 可以解决它,或者为什么它很慢。有解决办法吗?

谢谢。

【问题讨论】:

真的是pip 问题(如您的标题中所示)还是这与在WSL 使用 pip 下安装/配置Anaconda 更相关? pip 是否适用于其他软件包?如果是这样,我建议编辑标题以尝试让更多人关注正确的问题。 感谢您的回复。这不是 Anaconda 问题。 Anaconda 只是一个虚拟环境,我用来分隔我的 Python 安装。这在我使用 WSL 1 之前运行良好。当时我也在使用 Anaconda。 有道理 - 感谢您的澄清。现在我想起来了,这敲响了警钟,但我不确定我是否还记得同样的问题——如果名称服务器更改改进了事情,可能不会。听起来这对您来说是 特定pip 的,对吧?在 wgetsudo apt update &amp;&amp; sudo apt upgrade 等其他方面没有减速(在 1.1.1.1 名称服务器更改之后)? 【参考方案1】:

我最终解决了这个问题,只需按照建议的here 将nameserver 1.1.1.1 添加到我的/etc/resolv.conf。虽然它可以正常工作并按预期安装,但开始下载需要很长时间。

【讨论】:

域名服务器修复可能会在一个问题上解除对您的阻止,结果却遇到了另一个问题。尝试export PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring 并确保您没有设置DISPLAY。见this Github issue。 谢谢。如何确保我没有DISPLAY。这不再是 pip 唯一的问题,如果没有在 /etc/resolv.conf 添加的 nameserver 1.1.1.1,我实际上无法克隆 repos。即使这样,也需要一段时间才能开始,对/etc/resolv.conf 的更改不会延续会话。 好吧,unset DISPLAYexport -n DISPLAY,但我只希望 pip 问题与 Github 问题中提到的密钥环有关。这听起来确实像现在的 DNS 解析问题。您是否有机会在 Windows 中运行 ***? (不要忘记在回复中@tag 我以确保我收到通知。作为答案所有者,您会自动收到通知,但我可能不会)。 啊,我记得(编辑前)你提到了 DirectAccess。你把它重新打开了吗?不确定 DCA 的工作原理——它会更改 Windows 名称服务器吗? @NotTheDr01ds 在将nameserver 1.1.1.1 添加到我的/etc/resolv.conf 之后(并且没有让它在每个会话中重新生成),一切正常。但是git clonepip install 需要几秒钟才能启动该过程。 pingwww.google.com1.1.1.1)正在即时工作。我同意你的看法。这个问题似乎有很多版本。我不确定是什么原因造成的,但我找到了一个临时解决方案,也许正如你所说,我们最终会得到一个更好的解决方案。感谢您的帮助!

以上是关于WSL 2 Ubuntu 20.04 中的名称服务器问题的主要内容,如果未能解决你的问题,请参考以下文章

sleep()函数在Ubuntu 20.04+WSL1不起作用

sleep()函数在Ubuntu 20.04+WSL1不起作用

wsl ubuntu20.04 libpng12-0

Windows 10专业版安装 WSL2 (Ubuntu 20.04)

Windows 10专业版安装 WSL2 (Ubuntu 20.04)

windows11系统WSL2安装ubuntu20.04桌面