编程日记:安装本地编程环境(2022-08-19)

编程学习

我做了什么?

  1. 成功在 Windows 系统中安装 Node.JS 以及其附带的工具 Chocolaty 1.0.0 和 Python 10.6.0;

  2. 成功在 StackOverflow 上问出了第一个问题;

  3. 成功安装 WSL;

  4. 成功安装 VSCode 插件 Remote Development;

  5. 成功设置 WSL 的代理端口;

  6. 成功在 Ubuntu 系统中安装 NVM;

我解决了什么问题?

1. 利用NodeJS安装额外工具的问题

🔻第一次报错

在我尝试通过NodeJS安装额外工具的时候,进入到了1/3的进度时,发现出现了问题。

问题在于:在使用Chocolately脚本安装Python的时候,出现了安装失败,并且 exit with 1603.

经过查阅资料后发现,导致 exit 1603 的原因是:系统已经存在一个安装好过的应用了

于是我选择卸载Python,并尝试重新通过NodeJS来安装额外工具。

🔻第二次出错

在卸载完python,打算重新安装的时候,发现 power shell 处于蓝屏的状态,没有任何内容弹出来。

于是我觉得卸载并重装 NodeJS,试试看能否重新加载出工具下载界面。

结果:在等待了一段时间后,成功出现了安装内容。

推测之前不成功的原因:自己等待的时间不够,这次等待了好几分钟才出现了内容。

🔻第三次出错

问题:现在又卡在了安装 visualstudio2019-workload-victools 上,等待了一个多小时后,还是没有安装好。

原因 & 方案:可能是因为,电脑会在20分钟后自动动睡眠,所以可以尝试将电脑自动睡眠这条给关闭。

🔻第四次出错

![[Pasted image 20220819024016.png]]

报错一:

使用“1”个参数调用“DownloadString”时发生异常:“基础连接已经关闭: 发送时发生错误。”

Error retrieving packages from source 'https://community.chocolatey.org/api/v2/': 无法连接到远程服务器

原因:无法访问服务器,需要打开梯子才行。

方案:尝试打开梯子的全局模式,发现能够显示进入报错网址:https://community.chocolatey.org/api/v2/

报错二:

python was not found with the source(s) listed.

原因:关于这一点,StackOverflow上说也许是自己下载的软件没有添加到环境变量当中。

方案:尝试搜索了我的用户变量,发现里面有 Python 10 的环境变量,只不过位置指向的不是 Chocolatey 安装的 Python,而是使用安装包安装的 Python 时自动添加的环境变量。

![[Pasted image 20220819025152.png]]

问题:根据本地的\Log\来看,具体的错误信息如下:

2022-08-19 02:23:23,380 14868 [DEBUG] - Using 'https://community.chocolatey.org/api/v2/'.
2022-08-19 02:24:05,598 14868 [WARN ] - Error retrieving packages from source 'https://community.chocolatey.org/api/v2/':
 无法连接到远程服务器
2022-08-19 02:24:05,599 14868 [WARN ] - 
python was not found with the source(s) listed.
 If you specified a particular version and are receiving this message, it is possible that the package name exists but the version does not.
 Version: ""; Source(s): "https://community.chocolatey.org/api/v2/"

2. 单独升级Chocolatey的问题

今日成长:第一次尝试在 StackOverflow 上问问题。

问题:无法更新 Chocolatey

原因:Chocolatey 已经是最新版本,无需操作。

详细信息:https://stackoverflow.com/q/73408615/14640362

3. Node.JS 未添加到环境变量的问题

问题:

node : 无法将“node”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

解决方案:

  1. 删除原先在 /Software/nodejs 下的系统变量;

  2. 添加在 C:\Program Files\nodejs 下的系统变量;

问题解决!

4. 如何解决 WSL 的翻墙问题?

报错:

corror@CorrorCollins:~/folder$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

原因:

WSL 与 Windows 使用的不是同一个网络端口,因此当 VPN 代理Windows上的网络端口时,就无法去代理 WSL 上的网络端口,因此访问 Github 会出现翻墙之前才会出现的 DNS 域名污染问题。

解决方案:

根据参考资料可以知道,WSL 的网关和 DNS 服务器,全部指向 Windows,因此可以在 Unbuntu 子系统中,通过运行命令行 cat /etc/resolv.conf 来将 Windows 的 IP 读取出来。

我的运行结果如下:

corror@CorrorCollins:~/folder$ cat /etc/resolv.conf
# 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
nameserver 172.29.208.1

可以看到,WSL 指向的 Windows IP 地址为 172.29.208.1。

之后,我们需要将该 IP 地址和 Windows 的代理端口绑定。

![[Pasted image 20220819054732.png]]

打开 PandaVPN 的本地代理权限后,将 HTTP/HTTPS 代理端口 41091 和 WSL 指向的 Windows IP 172.29.208.1 绑定,命令行如下所示:

export ALL_PROXY="http://172.29.208.1:7890"

之后再执行 curl 命令就能够顺利访问 githubusercontent.com 了。