将 Erlang 和 Elixir 安装到 Apple Silicon Mac 的完美步骤

在本文中,我将展示使用 Homebrew 和 asdf 从头开始将 Erlang 和 Elixir 安装到 Apple Silicon Mac 的完美步骤。

1.升级macOS(如果是CPU芯片是M1)

对于 M1 Pro/Max,您可以跳过此步骤。

如果CPU芯片是 M1,预装的 macOS 是 Big Sur。 因此,首先,您需要将 macOS 升级到 Monterey 12.1。 但是,由于 Monterey 安装程序的缺陷,从预装的 macOS Big Sur 升级到 Monterey 会失败。 因此,您应该首先更新 Big Sur。 接下来,将其升级到 Monterey 12.0.1。 接下来,将其更新为 Monterey 12.1。

2.安装Xcode 13.2.1(可选)

如果您将使用 Homebrew 进行安装,也可以跳过此步骤。

通过 App Store 安装 Xcode 13.2.1。

3.安装Homebrew

  1. 启动终端。
  2. 根据官网安装 Homebrew。
  3. 安装后运行输出结果中显示的命令。

上面提到的命令如下(sudo命令需要你输入登录密码):

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ${ZDOTDIR:-~}/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"

请务必查看并使用官网的安装过程和安装后显示的命令。

4.通过 Homebrew 安装 Erlang 和 Elixir

在终端运行以下命令:

brew update
brew install elixir

这些命令安装最新版本的 Erlang 和 Elixir。 如果您只使用最新的版本,这些命令将是最简单的。

4′. 通过Homebrew 安装 Erlang

如果您只想安装 Erlang,请在终端运行以下命令:

brew update
brew install erlang

4”. 通过 asdf 安装 Erlang 和 Elixir

不幸的是,如果使用asdf进行安装,官网上的安装程序是不完整的:unlinked wx 和 odbc,缺少文件等。

4”-1. 通过 Homebrew 安装 asdf

根据官网通过 Homebrew 来安装 asdf。 运行的命令如下,但您应该查看官方网站确认:

brew install asdf
echo -e "
. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
source ${ZDOTDIR:-~}/.zshrc

4”-2. 通过 asdf 安装 Erlang

这一步是最重要的。 首先,安装事先准备好的必备库:

asdf plugin add erlang https://github.com/asdf-vm/asdf-erlang.git
brew install wxwidgets
brew install openjdk
echo 'export PATH="/opt/homebrew/opt/openjdk/bin:$PATH"' >> ${ZDOTDIR:-~}/.zshrc
source ${ZDOTDIR:-~}/.zshrc
brew install fop

然后,设置环境变量 KERL_CONFIGURE_OPTION、CC 和 LDFLAGS 如下:

export KERL_CONFIGURE_OPTIONS="--with-ssl=$(brew --prefix openssl@1.1) --with-odbc=$(brew --prefix unixodbc)"
export CC="/usr/bin/clang -I$(brew --prefix unixodbc)/include" 
export LDFLAGS=-L$(brew --prefix unixodbc)/lib

如果您将安装 Erlang/OTP 24.2+ 并使用 OpenSSL 3,请安装 OpenSSL 3 并重置 KERL_CONFIGURE_OPTION:

brew install openssl@3
export KERL_CONFIGURE_OPTIONS="--with-ssl=$(brew --prefix openssl@3) --with-odbc=$(brew --prefix unixodbc)"

我通过引用此问题获得了链接 odbc 的解决方案:https://github.com/asdf-vm/asdf-erlang/issues/191

接下来,如果您要安装最新版本,请运行以下命令:

asdf install erlang latest
asdf global erlang latest

您可以获得可以安装的版本,如下所示:

asdf list-all erlang

不幸的是,某些特定的旧版本无法安装到 Apple Silicon Mac 中。

如果您要安装 OTP 22,请遵循以下问题:https://github.com/asdf-vm/asdf-erlang/issues/221

安装后,取消设置 CC 和 LDFLAGS:

unset CC LDFLAGS

4”-3. 通过 asdf 安装 Elixir

按照官网通过 asdf 安装 Elixir 插件。

asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git

接下来,如果您要安装最新版本,请运行以下命令:

asdf install elixir latest
asdf global elixir latest

您可以获得可以安装的版本,如下所示:

asdf list-all elixir

结束语

按照上述步骤,您将在 Apple Silicon 上获得 Elixir 和 Erlang。

Related Posts

2021 年你需要知道的关于 Erlang 的一切

今天,我们将看一个相当古老且有些古怪的东西。 你们大多数人可能没有注意到的语言。 虽然 Erlang 不像某些现代编程语言那样流行,但它安静地运行着 WhatsApp 和微信等每天为大量用户提供服务的应用程序。 在这篇文章中,我将告诉你关于这门语言的更多事情、它的历史,以及你是否应该考虑自己学习它。 ## 什么是 Erlang,它在哪里使用? Erl

Read More

Elixir和Phoenix是2022年Web应用程序的绝佳选择

如何在 2022 年为应用选择最佳的 Web 编程语言和框架?这是可能吗?我相信是的,在这篇博文中,我将尝试说服您为什么 Elixir 和 Phoenix 是您正在寻找的完美组合。 ## Elixir: 生产力等于更少的成本 生产力仍然是编程语言的一个被大大低估的特性。一般来说,市场上的大多数应用程序都必须实现一些业务目标,众所周知,我们产生的成本越少

Read More

Erlang JIT中基于类型的优化

这篇文章探讨了 Erlang/OTP 25 中基于类型的新优化,其中编译器将类型信息嵌入到 BEAM 文件中,以帮助JIT(即时编译器)生成更好的代码。 ## 两全其美 OTP 22 中引入的基于SSA的编译器处理步骤进行了复杂的类型分析,允许进行更多优化和更好的生成代码。然而,Erlang 编译器可以做什么样的优化是有限制的,因为 BEAM 文件必须

Read More