Ubuntu 20.04 LTS运行NVM安装脚本下载失败但单独wget正常如何解决?
问题原因
导致该问题的常见原因有3种:
- DNS解析波动:raw.githubusercontent.com的域名解析在国内网络环境下不稳定,官方安装脚本内部的下载请求重试次数少、超时时间短,刚好执行脚本时解析到不可用的IP就判定下载失败;你单独执行wget时刚好解析到了可用IP,所以可以下载成功。
- 环境变量传递异常:你执行
wget -qO- 脚本地址 | bash这种管道命令时,bash子进程可能不会继承当前终端的代理配置(HTTP_PROXY/HTTPS_PROXY等),如果你的网络需要走代理才能访问GitHub资源,就会出现脚本下载失败、单独执行wget走正常代理下载成功的情况。 - 脚本内部下载工具兼容问题:nvm安装脚本内部默认优先调用curl进行下载,如果你的curl工具存在配置异常(比如配置了不可用的代理、证书问题),也会出现脚本下载失败,用wget单独下载成功的情况。
解决方案
你可以根据自己的实际情况任选以下一种方案处理:
- 手动安装:把你已经单独下载好的三个文件(nvm-exec、nvm.sh、bash_completion)全部放到
~/.nvm目录下,然后执行安装脚本最后提示的三行命令即可直接使用:
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 加载nvm [ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # 加载nvm命令补全
执行完成后输入nvm -v验证,输出版本号即为安装成功。安装脚本已经自动把对应的加载语句写入~/.bashrc,后续重启终端会自动加载nvm,无需重复执行上述命令。
- 固定DNS解析避免波动:执行
sudo nano /etc/hosts编辑hosts文件,在末尾添加一行解析记录185.199.108.133 raw.githubusercontent.com,保存退出后重新执行官方安装脚本即可。 - 本地执行安装脚本:先把安装脚本下载到本地再执行,避免管道执行的环境变量传递问题,执行命令如下:
wget https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh chmod +x install.sh ./install.sh
内容的提问来源于stack exchange,提问作者Ole
相关产品推荐
相关产品推荐

