MacOS 的安装与配置

1 MacOS 的安装

MacOS 一般有两种安装方式,一种是联网安装,一种是离线安装,本质都一样。我这里采用的是联网安装。

  • 首先,开机启动时,按住 alt,直到出现了 Mac OS X Utilities 界面才松手。
  • 选择第四个 Disk Utility。然后选择第一个磁盘(第二个磁盘是一个恢复区),然后点击 抹掉,然后格式选项里,选择 日志式 区分大小写(对于程序开发来说,尽量选择区分大小写,在很多时候会显得非常方便)。然后在高级选项里,选择 最快,然后开始抹掉。
  • 抹掉结束后,关闭这个界面,会回到最开始的那个图形界面。然后选择第二个 Reinstall Mac OS X。然后根据一系列提示进行操作即可。在此过程中,尽量不要断网。
  • 安装结束后,进行一系列的配置。

2 MacOS 快捷键

详见官网: https://support.apple.com/zh-cn/HT201236

3 安装命令行工具

苹果开发者网站 下载 Command Line Tools。然后进行安装即可。

也可以通过如下命令进行安装: xcode-select --install

4 防火墙的配置

打开 System Preferences -> Security & Privacy -> Turn On Firewall

MacOS 过去通过 ipfw 来配置防火墙,而现在提供了 pf 工具集,完全替代了 ipfw。

pf 有一个相关的配置文件,为 /etc/pf.conf,可在其中定义规则 (anchor),或者 load 一个含有规则的文件,系统启动时也会对其进行加载。还有一个 /etc/pf.anchors/ 目录,下面可以自定义一些规则文件。例如:

新建一个规则集文件 /etc/pf.anchors/custom,编辑如下:

1
2
block drop quick on en0 inet proto {tcp, udp} from any to any port {135, 137, 139, 445}
block drop quick on en0 inet6 proto {tcp, udp} from any to any port {135, 137, 139, 445}

表示屏蔽本地主机与所有远程主机的 {135, 137, 139, 445} 端口之间连接的进出本地主机的包。

其中,

  • block drop 后面本来还有一个关于流量方向的字段 in 或者 out,如果不写则代表两个方向。
  • inet 代表 ipv4 协议,inet6 代表 ipv6 协议。
  • on en0 表示本地主机的 en0 物理接口 (interface)。当然也可以指定一个接口组,接口组可用 ifconfig 命令定义。

规则定义的具体语法可查看手册 pf.conf(5) 中的 PACKET FILTERING 一节。

然后在 /etc/pf.conf 中 load 该文件中定义的所有 anchor。

1
2
3
4
5
6
7
8
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"
# load /etc/pf.anchors/custom
load anchor "custom" from "/etc/pf.anchors/custom"

最后执行如下命令使改动立即生效: sudo pfctl -evf /etc/pf.conf

关于 pf 的更多内容详见:

5 安装 Homebrew

根据 homebrew官网 的提示进行安装。

提示:如果要卸载 homebrew,可以先卸载掉所有通过 homebrew 安装的 app,然后参考官方文章:FAQ

homebrew 常用操作:

  • 查看版本: brew -v
  • 用 brew 安装某个软件 brew install package

    用 brew 安装,卸载等其他所有操作时,不需要在前面加上 sudo 命令。 另外,用 brew 成功安装某个软件后,需要退出终端,然后再打开,这时就可以应用最新版的软件了。

  • 卸载用 brew 安装的软件 brew uninstall package --force
  • 列出用 brew 安装的所有软件 brew list
  • 列出所有安装的软件里可以升级的那些软件 brew outdated
  • 更新 Homebrew brew update
  • 更新指定的软件 brew upgrade xxx
  • 更新所有可更新的软件 brew upgrade --all
  • 清理不需要的版本极其安装包缓存 brew cleanup
  • brew 检测 brew doctor
  • 安装 tap: brew tap tap名
  • 显示所有安装的 taps: brew tap

6 安装 Homebrew Cask

homebrew cask 也是个安装管理工具。不同于 homebrew 的是,homebrew cask 是安装的一些 google chrome 等的二进制文件,它们是已经被编译好了的,安装过程中无需编译。而 homebrew 是下载源码包,然后再进行编译,最后再进行安装的。

安装方法见 官网

常用的操作如下:

  • 搜索指定软件 brew cask search xxx
  • 搜索所有可用的软件 brew cask search
  • 安装软件 brew cask install xxx
  • 卸载软件 brew cask uninstall xxx
  • 列出安装的软件 brew cask list
  • 清除下载的文件 brew cask cleanup
  • 更新 homebrew cask brew update

    在更新 Homebrew 的同时可以更新 Homebrew cask。

7 使用 Homebrew Cask 安装常用 APP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 终端
brew cask install iterm2

# 翻墙
brew cask install shadowsocksx

# 浏览器
brew cask install google-chrome
brew cask install firefox

# 办公相关
brew cask install sogouinput
brew cask install evernote
brew cask install mactex
brew cask install filezilla
brew cask install tunnelblick

# 影音娱乐相关
brew cask install qq
brew cask install neteasemusic
brew cask install iina
brew cask install aliwangwang
brew cask install thunder

# 开发相关
brew cask install sublime-text
brew cask install dash
brew cask install sourcetree
brew cask install p4merge
brew cask install java
brew cask install intellij-idea
brew cask install pycharm
brew cask install clion
brew cask install postman
brew cask install cheatsheet

8 安装与配置 Git

安装 Git: brew install git

配置 Git: git config --global user.name "you name" git config --global user.email "you email" git config --global core.editor "vim"

为 git log 配置参数并添加别名: git config --global alias.lg "git log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

9 安装并配置 Vim

安装 Vim: brew install vim --with-lua

由于一些插件需要 lua 支持,所以这里在编译 vim 的时候加入 lua。

使用 SpaceVim 配置 Vim: curl -sLf https://spacevim.org/install.sh | bash -s -- --install vim

SpaceVim 需要安装一些额外的字体才能让状态栏正常显示。假设这里安装 DejaVuSansMono 字体: 先到 https://nerdfonts.com/ 上下载 DejaVuSansMono.zip 文件,解压后运行 DejaVu Sans Mono for Powerline Nerd Font Complete.ttf 字体文件即可。 安装完成后,在 iterm2 中将 Non-ASCII Font 设置为该字体。

SpaceVim 安装完成后,可以在 ~/.SpaceVim.d/init.vim 中进行自定义。

另外,可以通过如下命令更新 SpaceVim: :SPUpdate SpaceVim

10 安装并配置 Oh My Zsh

oh-my-zsh 基于 zsh,因此首先需要安装 zsh。

MacOS 自带 zsh,但是版本较旧。可以通过 homebrew 安装最新版: brew instal zsh

然后查看该版本的 zsh 可执行文件的路径: which zsh 假设为 /usr/local/bin/zsh。接着将该打印内容添加到 /etc/shells 尾部。

最后设置 zsh 为登录 shell: chsh -s /usr/local/bin/zsh sudo reboot

然后访问官网根据提示安装 oh my zsh。安装完成后重启终端,即可看到变化。

然后配置 .zshrc。主要包含如下几个基本项:

1
2
3
4
5
6
7
8
9
10
11
12
13
ZSH_THEME="muse"
plugins=(git)

# 指定所有 locale 类的字符集.
export LC_ALL=en_US.UTF-8

export LSCOLORS="Gxfxcxdxdxegedabagacad"
alias ls="ls -G"

# 删除时打印提示信息
alias rm="rm -i"
# 设置 Vim 为终端下的默认编辑器
export EDITOR="vim"

11 安装 GNU Grep

自身自带 grep 命令,但是去掉了很多 linux 版本 grep 中的特性,因此安装 gnu 版本的 grep: brew install grep

安装得到命令名为 ggrepgegrep

添加常用配置至 .zshrc

1
2
3
export GREP_COLOR="1;31"
alias grep="ggrep --color=always"
alias egrep="eggrep --color=always"

12 安装并配置 Tmux

安装 Tmux: brew install tmux

配置 Tmux: cd git clone https://github.com/gpakosz/.tmux.git ln -s -f .tmux/.tmux.conf cp .tmux/.tmux.conf.local .

编辑 ~/.tmux.conf.local,在末尾添加:

1
2
3
4
5
6
7
set -g status-keys vi
set -g mode-keys vi

unbind C-b
unbind C-a
set -g prefix C-g
bind C-g send-prefix

13 如何使用 SSH 远程连接到其他计算机上

首先要保证,连接的目的计算机需要安装 ssh 的 server 的相应软件包。

连接: ssh target_name@target_ip

断开: ctrl + d 或者 exit

更为详细的配置见:Ubuntu 的安装与配置

14 安装 Python2 和 Python3

python2: brew install python2

python3: brew install python

现在,由于 Python2 在渐渐被废弃,因此 Python 默认为 python3 了。

安装成功后,重启终端。

用这种方法安装 python2 和 python3 的过程中,会自动安装 pip。

15 安装 Python3 的相关包

安装 numpy: python3 -m pip install numpy

安装 scipy: python3 -m pip install scipy

安装 matplotlib: python3 -m pip install matplotlib

如果安装出错,可能是因为没有安装 freetypelibpngbrew install libpng brew install freetype

安装 scikit-learn: python3 -m pip install scikit-learn

安装 scikit-image: python3 -m pip install scikit-image

如果安装出错,可能是因为没有安装 libjpegbrew install libjpeg

16 安装 Autojump 与 Trash

autojump 可以用来跳转到某常用的目录。trash 可以用来替代 rm 将文件或目录移动到回收站中。

安装 autojump: brew install autojump 然后编辑 ./zshrc 将如下字段添加到末尾: [ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh

安装 trash: brew install trash

17 安装 Mitmproxy

mitmproxy 是一个交互式的且支持 ssl 的 http/https 代理工具,在分析移动端包时非常有用。

首先安装 protobuf: brew install protobuf --without-python --with-python3

然后安装 mitmproxy: brew install mitmproxy

18 安装 Graphviz

Graphviz 是画流程图,思维导图等图的首选。它可根据 dot 语言编写的绘图脚本生成指定格式的图片。

安装: brew install graphviz

生成图片: dot -Teps input.dot -o out.eps 其中,通过 -T 指定格式。

除此之外,还可以通过 Python 来生成 dot 代码。安装如下: python -m pip install -U graphviz

该 package 的实质是通过 Python 生成 dot 代码,然后执行 dot 命令来生成图片。因此一定要保证之前已安装了 graphviz。