在 M1 Mac 上使用 Air Tracker | Jim Zhang's blog
在 M1 Mac 上使用 Air Tracker2023-01-10

如果要是有人想让 Jim 列出最喜欢的十首电音,Alesso 混过的《Pressure》绝对在列。这首歌的 drop 处理的格外聪明,用几个锯齿波就能把人带到另一个世界👍。

前言

Air Tracker 是

安装 R

首先,我们需要安装 R。在 M1 Mac 上,我们可以使用 Homebrew 来安装 R。

$ brew install R

等一会儿,R 就安装好了。然后我们可以使用 R 命令来启动 R。

$ R
R version 4.2.2 (2022-10-31) -- "Innocent and Trusting"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: aarch64-apple-darwin21.6.0 (64-bit)

安装 x86 架构下的 Homebrew

因为 Air Tracker 只能支持 x86 架构的 gfortran。所以我们需要安装一个 x86 架构的 gcc,但是这之前我们得先安装一个 x86 架构的 Homebrew。

在 Intel 芯片的 Mac 上,Homebrew 默认安装在 /usr/local 目录下,这不同于 M1 芯片的 Mac 的 Homebrew 默认安装在 /opt/homebrew 目录。所以为了方便,我们的 x86 Homebrew 也安装在 /usr/local 目录下。

首先我们先创建一个 ~/Downloads/homebrew 目录,然后下载已经编译好的 Homebrew。

cd ~/downloads
mkdir homebrew
curl -L https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C homebrew

然后再把它移动到 /usr/local 目录下。

downloads$ sudo mv homebrew /usr/local/homebrew

接下来我们需要把 /usr/local/homebrew/bin 添加到 PATH 环境变量中。

$ echo 'export PATH="/usr/local/homebrew/bin:$PATH"' >> ~/.zshrc

现在,我们就可以使用 x86 架构的 Homebrew 来安装软件了,命令如下:

$ arch -x86_64 brew install something

但是这未免有点麻烦,我们可以使用 alias 来简化这个命令。

$ echo 'alias axbrew="arch -x86_64 /usr/local/homebrew/bin/brew"' >> ~/.zshrc

现在,我们就可以使用 axbrew 来安装软件了:

$ axbrew install something

安装 x86 架构的 gcc

我们使用 x86 架构的 Homebrew 来安装 gcc。

$ axbrew install gcc

在我的设备上(Mac mini 2020),gcc 默认编译需要 40 分钟(在 stackoverflow 上逛了一圈,大家差不多都是 45 分钟左右),这是因为 gcc 在默认设置下会 bootstrap 自己,也就是说,gcc 会使用自己来编译自己,这个过程会花费很长时间。

安装 Air Tracker

路径配置

首先,我们要为 R 配置好 gfortran 的路径,Air Tracker 会在 /usr/local/bin 目录下寻找 gfortran(尤其是 lib),但是我们安装的 gfortran (gcc) 是在 /usr/local/homebrew/bin 目录下的,所以我们可以为 lib 做一个符号连接。

$ cd /usr/local
$ sudo ln -s /usr/local/homebrew/Cellar/gcc/12.2.0/lib/gcc/12 lib

OK,这样就搞定了。

安装 R 包

现在,我们可以安装 Air Tracker 了。根据文档的说明,我们要通过 R 包 devtools 来安装 Air Tracker。

$ R
> install.packages("devtools")
> devtools::install_github("uataq/uataq")

当然,这一步也可以直接用 Rscript 来执行。

$ Rscript -e "install.packages('devtools'); devtools::install_github('uataq/uataq')"

如果编译没有问题,就安装成功了。

使用 Air Tracker

我们可以从最基本的样例代码来试一试。

来自犹他大学的 Benjamin Fasoli 提供了很多样例代码,参见 https://github.com/uataq/stilt-tutorials。该 repo 提供了三个例子:犹他大学 William Browning Building 的观测、盐湖城地区列车的温室气体(CO2)排放以及 Air Tracker 和 WRF 模型的耦合。

01-wbb

02-train

03-wrf

参考资料