ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【环境】M1 Mac 安装Homebrew

2021-02-03 16:33:03  阅读:204  来源: 互联网

标签:opt Mac M1 https brew Homebrew 安装


## 序言

近期入手了M1 Macbook Air;本来买前只是为了修图用途,买后发现轻薄不烫,续航5~6个小时问题不大(我看好像VSCode是吃电大户)
于是还是决定搞一些基本的开发配置。

其实像git这些都是属于安装很简单的,按照官方的Mac安装指南,只需要执行

```
brew install git
```
即可,那么首先就需要安装 Homebrew了。

## Step1 踩坑

官方的Unix系统安装命令简单明了:
```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```

当然作为国内用户,能在不出国的情况下执行成功,那就根本用不着专门写篇文章了。
访问以上url,根本访问不到对不对?

于是有了第一个要解决的问题:
> 下载Homebrew


在搞定下载源的问题后,立马再次被 M1 教做人了。

**再次吐槽M1吹们,各个都说跑分牛逼适配牛逼,Rosetta转译效率高,程序兼容牛逼**,然而呢?PS 至今没有正式版适配吧,折腾版各种小问题吧;MySQL Workbench装了就崩溃;iPad OS、iOS应用并不是全都能在M1 Mac上使用吧。

Homebrew 安装也是一样的问题,直接的安装脚本会将程序默认装至/usr/local/Homebrew,这是个Intel芯片架构上的路径,在M1芯片上则需要安装到/opt/Homebrew/下。【其实具体理由不太清楚,当然在目前的使用下,考虑需要支持x86与M1软件包的共存,这样做对系统环境比较安全。】

所以第二个要解决的问题:
> 安装到指定路径,实现x86与arm双版本共存。

以上问题踩过后,还遇到第三个问题,就是下载贼慢,1000M光网下做 brew update 居然居然出现了100K/s的下载速度。

> 解决下载慢的问题

## 下载和安装

其实下载慢问题好说,所有Linux用户都知道,换个镜像的事情而已,所以拜过各路博客后,有了第一个收获:

```
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
```

国内镜像源、中文安装过程提示,各种友好有木有!
执行完后发现,用不了!毕竟咱是M1受害者。

然后又找到了第二个方案,需要手动执行目录切换【原因见踩坑部分】,所以:

```
cd /opt # 切换到 /opt 目录
mkdir homebrew # 创建 homebrew 目录
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew
```
可用,当然因为下载源是github,所以也比较慢。

安装完成的话,需要再调整下环境变量,以确保执行 brew时可以工作:
```
vi ~/.zshrc
```

添加(或更新)以下信息:
```
path=('/opt/homebrew/bin' $path)
export PATH
```

重启终端之后,brew操作生效可用。

### **可能的问题**

> /opt/ 路径权限不够导致安装报错

由于Mac 系统默认的用户并不是Root,同时Homebrew是自己不允许以sudo权限安装的(真正的高风亮节啊);所以由本地账户操作/opt/可能权限不足。

解决方案:
```
sudo chown -R $(whoami) /opt/homebrew
```

## 双版本共存

前边有提到,M1 版本的Homebrew官方适配了,但是要求装在/opt/下,并且主要的问题是Homebrew上很多程序包还没有适配M1。
因此,HomeBrew官方的建议是,通过转译模式运行x86版本。

所以其实安装的时候,那套国内脚本是可用的,但是为什么安装后无法使用呢?

> **命令行使用转译模式执行x86程序**

在任何命令前增加 arch -x86_64,就可以以 X86 模式运行该命令。

因此,对于x86版本的Homebrew,在安装结束后,需要做的事情是:
1. 编辑环境变量;
2. 指定x86版本运行命令的别名,如ibrew。

环境变量操作参见前文,编辑后我的环境变量如下:
```
# HomeBrew
export HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles
export PATH="/opt/homebrew/bin:/usr/local/bin:$PATH"
export PATH="/usr/local/sbin:$PATH"
alias ibrew='arch -x86_64 /usr/local/bin/brew'
# HomeBrew END
```

### 测试安装

执行以下命令:
```
brew --repo
ibrew --repo
```
如果返回路径是正确的安装地址,则安装成功。

## 更换镜像源

执行以下命令:
```
# 修改brew镜像源
git -C "$(brew --repo)" remote set-url origin https://mirrors.ustc.edu.cn/brew.git
# 修改homebrew-core镜像源
git -C "$(brew --repo homebrew/core)" remote set-url origin https://mirrors.ustc.edu.cn/homebrew-core.git
# 更新
brew update
```

即可。

注意,由于设置了x86版本的别名,对x86版本的换源操作自行替换即可。

### 国内镜像源列表

```

```


## 补充

> **为什么 ARM 版 Mac 要使用 /opt 路径?**

以下为参考博文摘录:

根据《文件系统层次结构标准》(Filesystem Hierarchy Standard,主要为 Linux 系统制定,但对具有共同 UNIX 基因的 macOS 也有参考价值):

/usr/local 目录用于系统管理员在本地安装软件。系统软件更新时,该目录应免于被覆盖。
/opt 目录留作附加应用程序(add-on application)软件包的安装。安装在该目录下的软件包必须将其静态文件放置在单独的 /opt/<package> 或 /opt/<provider> 路径下。
历史上,/usr/local 主要用于放置在本地编译并另行安装的程序,避免和 /usr 下的系统自带版本冲突;而 /opt 则用于安装非系统自带的、第三方预先编译并发行的独立软件包。

显然,在如今的 macOS 使用场景下,用户很少会需要自行编译软件包,/usr/local 和 /opt 的区分一定程度上已经成为名义上的了。Homebrew 启用 /opt 作为 ARM 版的安装路径,可能更多是出于确保与 X86 版相互区隔的考虑。


## 相关资料

> https://soffes.blog/homebrew-on-apple-silicon
> https://docs.brew.sh/Installation#untar-anywhere

感谢以下博文作者:

> https://zhuanlan.zhihu.com/p/111014448 《Homebrew国内如何自动安装》
> https://sspai.com/post/63935#! 《在M1芯片上使用Homebrew》
> https://blog.csdn.net/qq_41437512/article/details/112435816 《m1 MBA配置Homebrew环境+国内源配置》

标签:opt,Mac,M1,https,brew,Homebrew,安装
来源: https://www.cnblogs.com/DannielZhang/p/14367714.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有