在 WSL 上运行 Ubuntu 并尝试推送到 github 并使用 pip 下载新的 python 模块,但出现此错误。
Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f9d654fe0b8>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution',)': /simple/tensorflow/
我查看了 resolv.conf 文件,它可能已损坏,因为它只给出了几行 @@@。有人知道如何修复这个问题吗?
当我跑步的时候
ls -al /etc/resolv.conf
-rw-r--r-- 1 root root 261 Nov 28 12:54 /etc/resolv.conf
更新:
我设法解决了这个问题。需要编辑文件并添加如下一行:
nameserver 8.8.8.8
答案1
在 WSL2 内部,创建或附加文件:/etc/wsl.conf
在文件中放入以下几行以确保您的 DNS 更改不会被消除。(这将替换 wsl.conf 中可能存在的所有内容。您也可以在此处使用编辑器。)
sudo tee /etc/wsl.conf << EOF [network] generateResolvConf = false EOF
在一个
cmd
窗户(!!), 跑步wsl --shutdown
启动 WSL2
在 WSL2 中运行以下命令(行
search
是可选的)sudo rm -rf /etc/resolv.conf sudo tee /etc/resolv.conf << EOF search yourbase.domain.local nameserver 8.8.8.8 nameserver 1.1.1.1 EOF
答案2
我有同样的问题。这似乎也与 VPN 有关。我发现,只有在系统重启后启动 WSL-Ubuntu 之前首次连接 VPN 时,DNS 查找才会失败。首先启动 WSL-Ubuntu,然后连接 VPN 似乎可以正常工作。
答案3
对我来说这是一个简单的修复。从 powershell:
wsl --shutdown
然后重启wsl
,它就成功了。是的,我知道这个解决方案太简单了,如果你想避免重置到 WSL,它可能对你不太好。但如果你想找一些简单的东西,也许值得一试
答案4
当我运行的时候ls -lah /etc/resolv.conf
,我看到它是一个符号链接../run/resolvconf/resolv.conf
。
但后来我注意到它../run/resolvconf/resolv.conf
不存在,事实上,虽然/run/
目录存在,但实际上/run/resolvconf/
却不存在。
因此我创建了该目录并创建了一个空文件sudo vim /run/resolvconf/resolv.conf
。
然后我编辑该文件以包含:
nameserver 1.1.1.1
保存该文件后,ping google.com
成功了!
(看起来该文件是必需的。我不知道我的文件是怎么被删除的。)