Homebrew 装软件失败
发现问题
都说什么 M4 单核性能很强,一提到单核性能我就想起了 Minecraft 只吃单核性能,所以想着测试一下这个游戏在 M4 上的运行表现。
首先当然是要安装 Java 了。
打开终端用 brew 来安装 jdk,结果出现了一堆报错。
报错内容无非就是无法访问到 formulae.brew.sh 罢了。
因为此前那啥都是装在路由器里的,所以用 brew 的官方源没有出现过什么网络问题,这次是用的别的 Wi-Fi,出现这种网络报错也不是什么新鲜事。
电脑本地开了个那啥,浏览器可以正常访问那啥了,但终端 brew 仍然无法正常搜索到 jdk,尝试 ping 那啥,结果超时。
那啥开了全局也不行(理论上是行了的,但我不知道为什么我开全局不行),总之感觉就像终端窗口跟系统不在一台电脑上似的。
于是打开了搜索引擎,开始了折腾。
解决办法
为什么终端无法使用那啥,网上说法挺多的,我摘选了两段:
可以确定的是在mac下(其实win也是不会)使用那啥后不管是开全局还是按照规则在终端都不会生效,但是关于原因众说纷纭,大家都比较认可的理由是那啥类软件默认是代理socket5,而终端是http。
终端使用的网络配置与系统的全局那啥设置是分开的。
上面摘选的出处链接里已经写清楚解决办法了。
但我这里还是贴出我实测有用的方式,参考自:链接3
首先第一步是找到那啥软件的 http 端口或“混合”端口,不同的软件设置项也不一样,就不细写了,我这里是 7890。
然后确定本机 ip,理所当然是 127.0.0.1。
那么组合起来就是 127.0.0.1:7890。
接下来进入终端,在当前用户目录下的 .zshrc 中添加如下内容:
https_proxy=http://127.0.0.1:7890
http_proxy=http://127.0.0.1:7890
all_proxy=socks5://127.0.0.1:7890里面的 127.0.0.1:7890 就是上面找到的 http 地址了。
如果没有 .zshrc 就先创建一个,但还是需要确认用的 shell 是什么,输入 echo $SHELL 查看,macOS 一般来讲默认是 /bin/zsh ,除非主动更改了。如果不是 zsh,是 bash 的话,就写进 .bashrc 。
然后 source 一下:source ~/.zshrc 就行了。
执行 curl ipinfo.io 可以看到 IP 地址变了。
要关闭就在 .zshrc 里把那三行注释掉,然后 source ~/.zshrc 。为什么会需要关闭呢?主要是如果那啥被关了的话,你的终端就连不上网了……
两个更好的办法
如果觉得改配置文件麻烦的话,有两个更简单的办法。
1.临时使用
如果端口变了,或者那啥关掉了,是不是还得重新改 .zshrc 文件呢?这很麻烦。
其实 macOS 上的那啥自带一个“复制终端代理命令”的选项的,在那啥的主界面按快捷键 command+c 就行了,然后你就会得到类似这样一个命令:
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890然后在终端执行,就能临时生效了。终端关闭后就会失效,防止出现我上面说的那啥被关掉了,导致终端连不上网的问题。
2.TUN 模式
这个模式在那啥软件里一般叫“TUN 模式”或者“全局模式”,只要开启了这个模式,那啥软件就会创建一个或者几个虚拟网卡,然后整个系统的流量都会从这些虚拟网卡进出,所以也就包括了终端的流量。
这样做整等于是让那啥软件接管了整个系统的出入流量,用这个模式比较简单粗暴,我听说很多 Linux 用户都是这么干的。
结
终端和系统的网络是分开的,这件事我还真没想到,不知道 Windows 系统是不是也是这样,没留意过。
这篇文章只是个记录,没有写得很详细,不知道以后遇到这种问题的时候再翻看这篇文章还看不看得懂。