MacOS环境搭建记录分享

去年六月中旬我买了自己人生中第一台苹果电脑「Mac Studio」。自认为我自己也算半个资深游戏玩家,我以前买电脑只会考虑电脑的游戏性能。这次的选择会有如此大的反差主要有以下原因,一、被种草,想尝新;二、玩游戏的欲望大幅度降低。

自己在机器刚到手那会被惊艳的同时也显得十分的不适应,这时自我安慰道,毕竟这么多年的 Windows 使用习惯要突然进行转变,不适应是很正常的,只要花点学习成本,相信 MacOS 这个系统是不会让我失望的。结果亦是如此,在适应一段时间后,我个人已经喜欢上 MacOS 这个系统了。

喜欢归喜欢,在适应的过程中还是踩了不少的坑。当然啦,这也是个不错的经历,面对问题,解决问题,也是一种享受。

Xcode

苹果自家的开发工具,就算不是做 MacOS 和 IOS 应用程序开发的,我也建议安装一下,因为 Xcode 是苹果为开发人员提供的集成开发环境,比如 git 就集成在里面,下面的安装顺序有意为之,要不然安装过程会中断或者直接报错。

安装方法:

直接在 App Store 上安装,安装完成后便可简单配置一下 git,毕竟下面的安装很多时候都需要使用 git 去拉取远程的仓库。

将系统默认的 shell 改为 zsh,相比 bash,个人觉得它的功能会多一点,同时也好用一些。

# 切换shell
chsh -s /bin/zsh

# 配置git
git config --global user.name "用户名"
git config --global user.email "邮箱地址"

# 生成SSH
ssh-keygen -t rsa -C "自定义名称/标识"

创建钥匙时保持默认(回车)即可,创建成功后钥匙文件保存在 ~/.ssh 目录下,id_rsa 是私钥,id_rsa.pub 是公钥。

将公钥里的内容复制到 github 里,头像 ☞Settings☞SSH and GPG keys☞New SSH key。

iTerm2

安装

苹果自带的终端虽然也很好用,但是 iTerm2 相比自带的终端更强大,美化后也很符合我个人对终端的审美,所以个人强烈推荐安装。

iTerm2 官网:

https://iterm2.com/

安装方法:

直接下载后安装即可以。

配置

颜色方案

https://github.com/mbadolato/iTerm2-Color-Schemes

将上面的仓库直接下载到本地,然后在 iTerm2 上使用快捷键 command+i(⌘+i) 呼出个性设置,选择 ColorsColor PresetsImport ☞ 刚下载目录下的 schemes 目录里选择一个你喜欢的方案即可。

其他设置

对客户端的审美每个人都有他自己的见解,比如窗口的大小、背景、透明度等等,以下为简单的参考,使用快捷键 command+,(⌘+,) 呼出主设置。

截屏2023-02-08 12.59.29.png

截屏2023-02-08 13.03.35.png

勾选上  Status bar enabled,开启导航栏。

截屏2023-02-08 13.04.58.png

截屏2023-02-08 13.05.08.png

云端备份

将 iTerm2 的设置备份到 iCloud 云盘里,以后就算做系统也可以第一时间将使用习惯了的设置第一时间导入回来。

截屏2023-02-08 13.01.00.png

安装 Oh My Zsh

一个 zsh 命令行的扩展工具集。

官网地址:

https://ohmyz.sh/

在官网上点击 install oh-my-zsh 按钮会提示以下命令,选择一种安装即可。

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

Oh My Zsh 的默认安装在 ~/.oh-my-zsh 目录里,相关的配置在 ~/.zshrc 这个文件里,每次对配置文件进行更改后都必须重新加载配置文件才能生效。

source ~/.zshrc

主题美化

Oh My Zsh 有很多主题供用户选择,主题预览地址为:

https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

个人选择 agnoster 这个主题,打开 ~/.zshrc 找到 ZSH_THEME ,将值设置成你选择的主题的名称即可,比如:

ZSH_THEME="agnoster"

修改 agnoster 主题:

vim ~/.oh-my-zsh/themes/agnoster.zsh-theme

只显示一层路径的名字:

# Dir: current working directory
prompt_dir() {
	#prompt_segment blue $CURRENT_FG '%~'
	prompt_segment blue $CURRENT_FG '%1d'
}

设置命令行前名称:

prompt_context() {
	if [ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]( "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" .md); then
		#prompt_segment black default "%(!.%{%F{yellow}%}.)%n@%m"
		prompt_segment black default "✨"
	fi
}

保存并重新加载配置文件即可。

使用某些主题要安装特定的字体才能有最好的体验,对应的字体下载地址为:

https://github.com/powerline/fonts

# clone
git clone https://github.com/powerline/fonts.git --depth=1
# install
cd fonts
./install.sh
# clean-up a bit
cd ..
rm -rf fonts

回到 iTerm2 设置选择刚安装的字体。在 iTerm2 使用快捷键 command+i(⌘+i) 呼出个性设置选项。

截屏2023-02-08 11.13.32.png

安装插件

当我们进入 ~/.oh-my-zsh 目录下可以发现此目录里有一个 plugins 目录,这是官方自带的插件目录,下面我们安装的插件是一些定制的插件,所以插件目录为:

.oh-my-zsh/custom/plugins/

命令提示插件:

# 进入插件目录
cd ~/.oh-my-zsh/custom/plugins/
# 下载插件文件
git clone https://github.com/zsh-users/zsh-autosuggestions.git
# 编辑配置文件
vim ~/.zshrc
# 添加插件
plugins=(其他的插件 zsh-autosuggestions)
# 重启配置环境
source ~/.zshrc

高亮语法插件:

输入正确语法会显示绿色,错误的会显示红色,使得我们无需运行该命令即可知道此命令语法是否正确。

# 进入插件目录
cd ~/.oh-my-zsh/custom/plugins/
# 下载插件文件
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
# 编辑配置文件
vim ~/.zshrc
# 添加插件
plugins=(其他的插件 zsh-syntax-highlighting)
# 重启配置环境
source ~/.zshrc

Homebrew

IOS 上的 App Store 内容很丰富,但 Mac 上的 App Store 内容就只能说一般般了。这时就可以用到一款第三方的包管理工具,Homebrew,人称 Mac 神器,可以方便地对 Mac 上的应用软件进行管理。

Homebrew 官网:

https://brew.sh/index_zh-cn

安装

安装方法很简单,只需在终端上使用下面这条命令即可。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果你身处国内,此时你的 curl 应该会报错。

curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused

这时可以使用魔法上网或者使用国内镜像的网站进行安装,同样也是一条命令即可。

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

接下来就是跟着命令提示一步步安装即可,注意的是其中有一步,如果系统之前没有安装 git,这时 Homebrew 会终止安装,弹出 git 的安装提示,git 安装成功后再次在终端上执行一次 Homebrew 的安装命令即可。

使用

与 Linux 上其他常见的包管理工具一样,Homebrew 的使用一样很是简单。

brew help

执行上面的命令就可以看到 Homebrew 常用的命令也就以下这些:

Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...
  brew update
  brew upgrade [FORMULA|CASK...]
  brew uninstall FORMULA|CASK...
  brew list [FORMULA|CASK...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA|CASK

Contributing:
  brew create URL [--no-fetch]
  brew edit [FORMULA|CASK...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  https://docs.brew.sh

截屏2023-02-09 01.00.05.png

如图所示,搜索 qq 时的模糊结果分了两类,==> Formulae 与 ==> Casks,前者为命令行工具、开发库、字体、插件,共性是不提供界面,提供给终端或者是开发者使用;后者则为用户软件,比如 Chrome、QQ 这些提供用户交互界面的软件。

当搜索 wget 时,已经安装的后面会打勾提示。

当搜索 docker 时,在 ==> Formulae 与 ==> Casks 里都有对应的结果,所以这时如果我们想要安装提供用户交互界面的 docker 时就要加上相应的参数。

brew install --cask docker

环境搭建

Golang

直接安装

go1.2.0 为例,直接下载对应操作系统的版本进行安装。

https://dl.google.com/go/go1.20.darwin-arm64.pkg

手动安装

因为有时候会在虚拟机或者远程服务器上安装 go 环境,所以我一直都是使用这种模式安装。

下载系统对应的版本:

https://dl.google.com/go/go1.20.darwin-arm64.tar.gz

解压后将 go 目录整个移动到 /usr/local/ 目录下,然后配置一下变量即可。

# 编辑配置文件
vim ~/.zshrc

# 在适当的位置添加
export PATH="/usr/local/go/bin:$PATH"

# 保存退出后重新加载配置文件
source ~/.zshrc

相关问题

因为https://proxy.golang.org一般网络无法访问,直接导致timeout。

go env -w GOPROXY=https://goproxy.io,direct

Python

现在很多系统都自带 python,看得出这门语言的厉害之处。

python --version
zsh: command not found: python

这是因为 python 这个命令没有指定相应的版本。可用下面指令进行软链接绑定安装的 python 版本。如:

# 查看
ls -l /usr/bin/python*

# 这里可以看到python3绑定的版本是python3.9
lrwxrwxrwx 1 root root       9 Apr  5  2021 /usr/bin/python3 -> python3.9
-rwxr-xr-x 1 root root 5280744 Feb 28  2021 /usr/bin/python3.9

# 进入变量目录
cd /usr/bin

# 添加新的绑定,这里选择将python这个指令也绑定到python3.9这个版本上
ln -s python3.9 python

# 删除绑定
rm python

NVM

nvm 是一个 nodejs 的版本控制器,在开发环境里经常要用到各种版本的 nodejs,这时我们就可以使用 nvm 快速地切换 nodejs 的版本。

# 脚本安装nvm
curl https://raw.githubusercontent.com/creationix/nvm/master/install.sh | zsh
# 更新配置文件
source ~/.zshrc
# 查看版本号
nvm --version
# 查看相关命令
nvm --help
# 安装nodejs
nvm install node
# 查看node版本
node -v
# 查看npm版本
npm -v
# 全局安装yarn
npm install -g yarn
# 安装pnpm
npm install -g pnpm
# 安装nrm
npm install -g nrm

pnpm 最近很多人使用,总有一些人在那里吹捧多好多好,我暂时还是习惯用 npm。nrm 是用来快速切换 npm 源的。

# 查看源列表
nrm ls

# 前面带*号的就是当前选择的源
  npm ---------- https://registry.npmjs.org/
  yarn --------- https://registry.yarnpkg.com/
* tencent ------ https://mirrors.cloud.tencent.com/npm/
  cnpm --------- https://r.cnpmjs.org/
  taobao ------- https://registry.npmmirror.com/
  npmMirror ---- https://skimdb.npmjs.com/registry/

相关问题:

internal/bootstrap/switches/does_own_process_state.js:129
     cachedCwd = rawMethods.cwd();

Error: EPERM: operation not permitted, uv_cwd npm
....

更新笔记时正好碰到类似于以上的问题,使用 NVM 切换 node 版本 npm 依然报错,其实只要重启 iTerm2 就能解决问题。

https://www.jianshu.com/p/f3c5d49d6301

Docker

在 Mac 上强烈建议直接到官网上下载并安装有图形界面的最新版 Docker Desktop,如果是虚拟机或者云服务器可以用以下脚本命令安装。

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

参考资料

https://juejin.cn/post/6994453537690222599

https://www.jianshu.com/p/0ef044ac661e

https://segmentfault.com/a/1190000039860436

https://juejin.cn/post/7000652162950758431