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 clone
、pip
等)。
我真的不明白问题是什么,为什么添加 nameserver 1.1.1.1
可以解决它,或者为什么它很慢。有解决办法吗?
谢谢。
【问题讨论】:
真的是pip
问题(如您的标题中所示)还是这与在WSL 使用 pip
下安装/配置Anaconda 更相关? pip
是否适用于其他软件包?如果是这样,我建议编辑标题以尝试让更多人关注正确的问题。
感谢您的回复。这不是 Anaconda 问题。 Anaconda 只是一个虚拟环境,我用来分隔我的 Python 安装。这在我使用 WSL 1 之前运行良好。当时我也在使用 Anaconda。
有道理 - 感谢您的澄清。现在我想起来了,这敲响了警钟,但我不确定我是否还记得同样的问题——如果名称服务器更改改进了事情,可能不会。听起来这对您来说是 特定 到 pip
的,对吧?在 wget
或 sudo apt update && 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 DISPLAY
或 export -n DISPLAY
,但我只希望 pip
问题与 Github 问题中提到的密钥环有关。这听起来确实像现在的 DNS 解析问题。您是否有机会在 Windows 中运行 ***? (不要忘记在回复中@tag 我以确保我收到通知。作为答案所有者,您会自动收到通知,但我可能不会)。
啊,我记得(编辑前)你提到了 DirectAccess。你把它重新打开了吗?不确定 DCA 的工作原理——它会更改 Windows 名称服务器吗?
@NotTheDr01ds 在将nameserver 1.1.1.1
添加到我的/etc/resolv.conf
之后(并且没有让它在每个会话中重新生成),一切正常。但是git clone
和pip install
需要几秒钟才能启动该过程。 ping
(www.google.com
和 1.1.1.1
)正在即时工作。我同意你的看法。这个问题似乎有很多版本。我不确定是什么原因造成的,但我找到了一个临时解决方案,也许正如你所说,我们最终会得到一个更好的解决方案。感谢您的帮助!以上是关于WSL 2 Ubuntu 20.04 中的名称服务器问题的主要内容,如果未能解决你的问题,请参考以下文章
sleep()函数在Ubuntu 20.04+WSL1不起作用
sleep()函数在Ubuntu 20.04+WSL1不起作用
Windows 10专业版安装 WSL2 (Ubuntu 20.04)