macOS 开发环境搭建
macOS 是许多开发者最爱用的操作系统(这其中就包括了我自己)。本文将介绍 macOS 系统上的基础开发环境搭建。
如果你不使用 macOS,很显然,这篇文章不是为你准备的。
就我自己而言,我觉得 macOS 应该是最适合开发者使用的操作系统了。因为它不仅时尚,功能强大,而且包含了完整的 UNIX 体验。每次使用 Windows 的命令行,都让我厌恶至极。更不要说,M1 芯片的功耗要远胜 Windows 及 Intel 了(每当提到 Windows + Intel 这对组合,我的脑海中就不由的出现了呜呜的风扇声)。
本文不打算对比桌面操作系统的优劣性,也不打算写成一个万能通用的 macOS 开发者环境搭建百科全书(因为我不认为自己有这个能力)。
这篇文章的目的,仅仅是给最基础的开发者阅读,介绍几个最常用开发工具的安装方法。节省大家新拿到一台 Mac,或者重装系统的时间,仅此而已。
如果你是更换新的 Mac,使用 Time Machine 备份和恢复可能是最节省时间的方法。但是,对于有“洁癖”的人来说,不想继续背负旧电脑上各种隐藏的垃圾文件,重新设置一台电脑以保证干净整洁可能也是一个不错的选择。
考虑到国内的特殊环境,很多工具的官方服务器我们都无法正常访问。因此本文还隐含了一个目标就是:同时给出在国内网络下能够完成的开发环境构建方法。
本文写于 2021 年底,随着时间的流逝,有些内容可能会过期。考虑到一些国内镜像的稳定性,这个过期的速度可能会更快。另外一方面,随着我自己开发环境的变更,我所觉得的最常用开发工具的集合也会发生变化。
所以,这篇文章可能会是一次写完,后面不定期更新的文章。
本文测试所用的是最新的 macOS 系统: macOS Monterey 12.0.1
。使用别的版本可能会存在一些差异。
但事实上,Apple 的产品以及整个开源社区的版本兼容性做的还是相当好的。只要是最近的几个版本,几乎不会出现什么差异。
首先我们来说开发者最常用的工具:命令行工具。
单就 Terminal 这一点而言,Windows 就足以让我厌恶至极了:反人类的斜杠,反人类的 C 盘和 D 盘,反人类命令参数格式…庆幸的是,从我使用 Mac 这十多年以来,Windows 的命令行还是一样的丑陋和难用。
自 2019 年以来,从 macOS 10.15 Catalina 版本开始,Mac 已经将命令行工具从 bash 切换到 zsh。因此,本文仅仅讲解 zsh 的基本配置。
关于 zsh 的介绍可以自行查询 维基百科:zsh 。
之所以 Apple 将 Mac 的 shell 从 bash 换成 zsh,主要是 license 的原因 。
关于 zsh 好在哪,可以看一下知乎: 为什么说 zsh 是 shell 中的极品? 。
事实上,bash 并没有从 Mac 上消失。不过既然已经有了更好的工具,而且 Apple 已经帮我们设为默认,那我们也不必过于守旧。有更好的工具,花点时间适应,从长远来看,肯定是值得的。
如果你已经决定了使用 zsh,那么就一定不要错过 Oh My Zsh 。这是一个非常强大的扩展工具。它包含了非常多的主题以及插件。
通过下面这条命令就可以安装它:
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
如果你的网络访问不了 github 的服务器,可以考虑国内的版本:
步骤一、在命令行切换到一个临时目录(例如:下载目录),下载码云版本的镜像包:
cd ~/Downloads
wget https://gitee.com/mirrors/oh-my-zsh/raw/master/tools/install.sh
如果你还没有安装
wget
,可以先跳到下面 Homebrew 章节,先安装 Homebrew,然后通过brew install wget
安装。
步骤二、替换脚本中原始链接为码云版本:
将
REPO=${REPO:-ohmyzsh/ohmyzsh}
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
替换为:
REPO=${REPO:-mirrors/oh-my-zsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
步骤三、给予 install.sh
可执行权限,然后运行它:
chmod a+x install.sh
ZSH= sh install.sh
步骤四、安装完成之后便可以删除 install.sh
了。
oh-my-zsh 会被安装在 ~/.oh-my-zsh
目录下。一旦安装好之后我们就可以继续折腾了。
oh-my-zsh 包含了非常多的主题,你可以通过下面命令找到它们:
Githuh 上的这个网页 提供了预览。
通过修改 ~/.zshrc
中的 ZSH_THEM
就可以更换主题了,例如: ZSH_THEME=robbyrussell
。
不仅仅是美观,oh-my-zsh 还包含了很多实用功能,即: 几百个插件 。这些插件可以简化命令的使用。由于范围太广,请根据自己的需要使能。
除了自带的几百个插件,还有这两个自定义插件尤其值得推荐: Oh my zsh with autosuggestions & syntax-highlighting
如果你不想安装 oh-my-zsh,有兴趣自己配置 zsh,可以从这篇文章开始: Scripting OS X: Moving to zsh 。
当我们需要做 C/C++项目时(例如:当我们需要 clang
、 gcc
、 git
这些命令),Xcode 就是一个几乎必须的工具了。
Apple 为开发者提供了两个选择:
- Xcode Command Line Tools:一个比较小的软件包,你可以通过
xcode-select –install
命令安装它。 - Xcode App:一个完整 IDE,同时包含了命令行工具。你可以通过 Mac App Store 安装它。
当然,你还可以通过开发者网站手动下载和安装它们: https://developer.apple.com/download/all/ 。
对于大部分人来说,如果你不是 Apple 平台的开发者,通常体积更小的 Xcode Command Line Tools 更适合你。
为 Xcode 瘦身
作为本文的读者,如何安装 Xcode 我想不需要做过多的说明了。
如果你已经安装 Xcode App,那 Xcode Command Line Tools 就没有存在的必要了,它位于这个路径: /Library/Developer/CommandLineTools
。你可以考虑将其删除:
sudo rm -rf /Library/Developer/CommandLineTools
在你删除了这个目录之后,你可能发现 gcc
无法使用了。
这说明你的 gcc
绑定的就是 Command Line Tools 目录下的。
不过不要紧,接下来你可以通过下面这个命令切换 gcc
绑定到 Xcode App 目录下:
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
你可以通过 gcc --version
确认绑定的结果:
gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.3)
Target: x86_64-apple-darwin21.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
删除 Command Line Tools 这还不够,Xcode 单单一个应用就占用了几十个 G 的空间,很显然,这里面有很多内容不是我们所有人都需要的。
首先在 Finder 中右键选择“查看显示选项”,然后勾选“计算所有大小”:
然后通过下面这条命令打开 Xcode 所在的目录:
open /Applications/Xcode.app/Contents
这下可以直观的看到 Xcode 每个目录占用的空间了:
Platforms
下的各平台子目录占用太多空间了。如果你不做 TV 和 Watch 开发,这些目录就对你没太大用处了。
如果你删除了上面这两个目录,下次升级安装 Xcode 之后,它们可能还会回来。那只能再删一次了。好在 Xcode 的版本更新频度很低,基本上是和 macOS 以及 iOS 版本节奏一致的。
除了 Xcode App 中包含的内容,以下两个目录你可能也想把它们删除掉:
具体这两个目录的作用,可以点击链接查看。
接下来是一个强烈推荐的工具:Homebrew。
Homebrew 是一个包管理工具,它支持 Mac 和 Linux。用它我们可以方便的安装各种其他工具。
除了 Homebrew,Mac 上还有一个独占的包管理工具: MacPorts 。
官网安装
Homebrew 的官网是: https://brew.sh 。通过下面的命令可以一键安装它:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
当然,国内的网络环境可能无法正常访问上面的服务器。并且,就算你运气好安装上了,今后通过 brew
安装新的包时,还要再再次连接国外的服务器,这常常慢到让人无法接受。
所以更推荐下面这种方法:通过国内的源安装。
国内清华镜像安装
Homebrew 在国内 有不止一种源 。
我个人通常使用清华的镜像源,速度比较快,也比较稳定。你可以访问这里获取相关信息: Homebrew / Linuxbrew 镜像使用帮助 。这个文档中包含了详细的步骤,我就不拷贝粘贴了。
请确保将以下三个环境变量添加到你的 shell 环境中(例如, ~/.zshrc
或者是 ~/.bashrc
中):
export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git"
export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git"
export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"
这是确保今后使用国内源安装和更新的关键(这决定了使用的速度,因此也是使用体验的关键)。
你可以通过 brew config
确认配置是否生效:
brew config
HOMEBREW_VERSION: 3.3.4
ORIGIN: https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
HEAD: 819eea5669807c1cf29e0d29985fc765ad7a9597
Last commit: 5 days ago
Core tap ORIGIN: https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
Core tap HEAD: 4567f25b438ff644424f934d339f06688514e67b
Core tap last commit: 12 hours ago
Core tap branch: master
HOMEBREW_PREFIX: /usr/local
HOMEBREW_BOTTLE_DOMAIN: https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles
HOMEBREW_BREW_GIT_REMOTE: https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git
HOMEBREW_CASK_OPTS: []
HOMEBREW_CORE_GIT_REMOTE: https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git
HOMEBREW_MAKE_JOBS: 16
Homebrew Ruby: 2.6.8 => /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby
CPU: 16-core 64-bit skylake
Clang: 13.0.0 build 1300
Git: 2.30.1 => /Applications/Xcode.app/Contents/Developer/usr/bin/git
Curl: 7.77.0 => /usr/bin/curl
macOS: 12.0.1-x86_64
CLT: 11.0.0.33.16
Xcode: 13.1
有了 Homebrew 之后,安装其他工具就非常的方便了。下面这条命令便直接安装了 node
和 npm
。
npm 是 JavaScript 的包管理工具。很自然的,它的默认软件包源(npm 称之为 registry)也在国外,所以我们要继续使用国内的源代替。
国内源
同样的,npm 国内也有 好几个不同的镜像源 。
我个人通常使用的 taobao 的镜像 。你可以下面这条命令切换镜像源:
npm config set registry https://registry.npmmirror.com/
我通常是直接修改 ~/.npmrc
文件来设置源:
cat ~/.npmrc
registry=https://registry.npmmirror.com
你可以通过 npm config list
来确认源配置环境:
npm config list
; "builtin" config from /usr/local/lib/node_modules/npm/npmrc
prefix = "/usr/local"
; "user" config from /Users/paul/.npmrc
registry = "https://registry.npmmirror.com/"
; node bin location = /usr/local/Cellar/node/17.0.1/bin/node
; cwd = /Users/paul
; HOME = /Users/paul
; Run `npm config ls -l` to show all defaults.
Python
Mac 自带了 Python 2.7。但它其实已经 于 2020 年退休了 。
作为一个严肃的开发者,如果不是处理遗留项目,你更应该选择 Python 3。
如果你安装了最新版本的 Xcode,它已经自带了 Python 3。如果你没有,那你可以到 Python 的官网上下载自行安装: Python Releases for macOS 。
当然,如果你安装了 Homebrew,更好的方法是通过它来安装:
Python 通过 pip
来安装软件包。Python 3 对应的是 pip3
。为了彻底使用 Python 3 代替 Python 2,请将下面两个别名加到的 shell 配置文件中(例如: .zshrc
或者 .bashrc
):
alias python="python3"
alias pip="pip3"
在命令行环境下,我们常常要编辑文本文件,这个时候我通常会使用 Vim,其命令是 vi
。
如果你还没有听说过或者用过 Vim,那么你一定还是个新人,赶紧了解一下吧: 为什么不少程序员极度推崇 Vim 和 Emacs,却对 IDE 嗤之以鼻?
Mac 自带了 Vim,你通常不需要安装它。
开源世界的玩法是:官方版本只包含了基础功能,更多的功能是通过扩展和插件来完成的。所以如果你用 Vim 比较多,那么下面两个工具可能让你根据得心应手:
- The Ultimate vimrc :包含了 Vim 的配置。
- Maximum Awesome :包含了 Vim 的插件。
如果你无法访问 github,我已经将这两个包放在这里: vimrc-master.zip 、 maximum-awesome-master.zip 。这种方法你获取到的可能不是最新版的软件包,但好在这些工具都非常稳定,更新频率很低。
获取 The Ultimate vimrc 之后你可以通过下面的命令选择安装基础版,还是完全版。首先将它移动到需要的目录,然后安装:
mv vimrc-master ~/.vim_runtime sh ~/.vim_runtime/install_basic_vimrc.sh sh ~/.vim_runtime/install_awesome_vimrc.sh
安装 Maximum Awesome 的方法也很简单,切换的相应目录执行 rake
即可:
这一步需要连接 github 服务器,目前还没找到国内代替的方法。
cd ~/Downloads/maximum-awesome-master
rake
这一步会自动安装一系列的软件:
paul:/Users/paul/Downloads/maximum-awesome-master$ rake
-- Homebrew --------------------------------------------------------------------
-- the_silver_searcher ---------------------------------------------------------
-- iterm2 ----------------------------------------------------------------------
-- ctags -----------------------------------------------------------------------
-- reattach-to-user-namespace --------------------------------------------------
-- tmux ------------------------------------------------------------------------
-- MacVim ----------------------------------------------------------------------
Please add ~/bin to your PATH, e.g. run this command:
echo 'export PATH="~/bin:$PATH"' >> ~/.bashrc
The exact command and file will vary by your shell and configuration.
You may need to restart your shell.
-- symlink ---------------------------------------------------------------------
-- vundle ----------------------------------------------------------------------
~/bin/vim -c "PluginInstall!" -c "q" -c "q"
-- iterm2 colorschemes ---------------------------------------------------------
2021-11-23 13:58:27.444 defaults[22234:673936]
The domain/default pair of (com.googlecode.iterm2, Custom Color Presets) does not exist
open -a /Applications/iTerm.app /Users/paul/Downloads/maximum-awesome-master/iterm2-colors-solarized/Solarized Dark.itermcolors
open -a /Applications/iTerm.app /Users/paul/Downloads/maximum-awesome-master/iterm2-colors-solarized/Solarized Light.itermcolors
-- iterm2 profiles -------------------------------------------------------------
Your turn!
Go and manually set up Solarized Light and Dark profiles in iTerm2.
(You can do this in 'Preferences' -> 'Profiles' by adding a new profile,
then clicking the 'Colors' tab, 'Load Presets...' and choosing a Solarized option.)
Also be sure to set Terminal Type to 'xterm-256color' in the 'Terminal' tab.
Enjoy!
其中还包含了好多个 Vim 插件:
这样配置之后,你的 Vim 就会用起来更加顺手了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论