Skip to main content

Command Palette

Search for a command to run...

安裝 Elixir 環境

Published
3 min read

本文介紹幾種在電腦上安裝 Elixir / Erlang 環境的方法。

Mac

A. 使用 asdf (推薦)

asdf 是類 unix 作業系統上類似 rvm, rbenv 或 nvm 的語言版本管理套件。特別之處在於它可以安裝不同的 plugin 來管理多種不同的語言

pre request

  • homebrew

  • git

Install

  1. 安裝 asdf 及 erlang 需要的元件
$ brew install \
  coreutils automake autoconf openssl \
  libyaml readline libxslt libtool unixodbc \
  unzip curl wxmac asdf
  1. 將 asdf init script 加到 zshrc 中,若你用的是 bash 或 fish 請參考官方說明這步之後需要重啟 shell
$ echo -e '\n. /opt/homebrew/opt/asdf/libexec/asdf.sh' >> ~/.zshrc
$ echo -e '\n. /opt/homebrew/share/zsh/site-functions' >> ~/.zshrc
  1. 安裝 asdf 的 elixir 及 erlang plugin
$ asdf plugin-add erlang
$ asdf plugin-add elixir
  1. 用 asdf 安裝最新版的 Erlang。這一步一般來說需要很久,可以去聽個兩首歌再回來。
asdf install erlang latest
asdf global erlang latest
  1. 用 asdf 安裝最新版的 Elixir。由於 Elixir 是預編譯版本,所以可以選擇用符合自己 Erlang 版本編譯的版本。
asdf install elixir latest
asdf global elixir latest

Postgresql 及 NodeJs

如果想試試 phoenix,那麼需要安裝 postgresql 及 nodejs 5.5 以上的版本。這裡一樣使用 asdf 來安裝 nodejs,若你的系統中已存在其它 nodejs 版本,可以省略後面兩步。

# 1. 安裝 postgresql
$ brew install postgresql

# 2. 安裝 asdf 的 nodejs plugin
$ brew install gpg
$ asdf plugin-add nodejs


# 3. 用 asdf 安裝 nodejs
$ asdf install nodejs lts

完工

試一下會不會動:

$ elixir -v
$ which erl

## 如果有裝 phoenix 的話
$ mix phx.new --version

B. 使用 homebrew

由於這個方法會跟著 homebrew upgrade 一起更新版本,所以比較適合下載來玩一下的情況。長時間的正式專案開發可能會遇到一些雷。

$ brew install erlang elixir

C. 使用 Docker

  1. 安裝 docker
$ brew cask install docker
  1. 拉官方 image。
$ docker pull elixir
  1. 跑起來試試看。按兩次 Ctrl+C 結束
$ docker run -it --rm elixir iex
  1. 執行本機上的 elixir 檔案
$ docker run -it --rm -v $(pwd):/tmp elixir elixir /tmp/my_elixir_file.ex

Ubuntu/Debian

A. 使用 asdf

  1. 安裝 asdf 及 erlang 需要的元件
$ apt-get -y install build-essential autoconf m4 \
libncurses5-dev libwxgtk3.0-dev libgl1-mesa-dev libglu1-mesa-dev \
libpng-dev libssh-dev unixodbc-dev

接著參考 Mac 的 2 ~ 6 步


CentOS 7

wget --no-verbose -P /tmp https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

yum install -q -y /tmp/epel-release-latest-7.noarch.rpm

yum update -y -q

yum upgrade -y -q --enablerepo=epel

yum install -y -q wget curl unzip make git

yum install -y -q automake autoconf readline-devel ncurses-devel openssl-devel libyaml-devel libxslt-devel libffi-devel libtool unixODBC-devel

groupinstall -y 'Development Tools' 'C Development Tools and Libraries'

yum install -y -q wxGTK3-devel wxBase3 openssl-devel libxslt \
    java-1.8.0-openjdk-devel libiodbc unixODBC erlang-odbc

yum install -y -q install gpg perl perl-Digest-SHA

接著參考 Mac 的 2 ~ 6 步


Windows

A. 使用 Linux Sub System (推薦)

  1. 參考微軟官方說明,安裝 Linux 子系統。若不知道要用什麼的話,那就選 Ubuntu 吧。

  2. 啟動 Linux 子系統後,照著 Ubuntu/Debian 小節操作。

B. 使用 scoop

參考 Scoop 官網說明

  1. 用系統管理者權限打開 powershell

  2. 貼上以下指令並按 [Enter] 執行

iwr -useb get.scoop.sh | iex
  1. 安裝 elixir
scoop install elixir
  1. 執行看看
iex.bat

C. 使用 chocolatey

參考 chocolatey 官網說明

  1. 用系統管理者權限打開 powershell

  2. 貼上以下指令並按 [Enter] 執行 (從官網 copy 會比較方便)

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
  1. 安裝 elixir
choco install elixir
  1. 執行看看
iex.bat

D. 使用 Docker

同 Mac -> C. 使用 Docker

More from this blog

聊聊 Elixir 中的 type

最近有幾位朋友分別來問 Elixir 的 type 的問題,想說中文世界好像沒有比較完整的東西,就把知道的東西整理出來。 (目前) Elixir 的 type 能做什麼? tl;dr: 最主要是文件,然後在某種程度下防止錯誤。 我覺得這應該是在研究 Elixir 的 type 時最需要知道的事情了。不像 Haskell 及 F# 這種以型別著稱的 ML 系語言,Elixir / Erlang 本質上是個動態語言,所有與型別有關的標註都會被編譯器忽略。而 Erlang 內建的型別檢查工具 dia...

Oct 18, 20222 min read

Steam 上的程式教學類遊戲

農曆年期間比較有空,玩了一些之前買的遊戲。這次特別試了幾個標榜讓不會寫程式的人學寫程式的遊戲。分享一下試玩的心得。 1. 7 Billion Humans 考慮到劇情的話我最喜歡的是 7 Billion Humans。它用拖拉語法的方式下指令,一開始還蠻好上手的,但是因為只有 goto 那樣的結構,而操作的時候又是一次對所有的 worker 下指令,所以常常要想一下執行後每個人運作的順序。但是介面有正體中文,以「想要體驗一下寫程式大概是怎麼一回事」來說還蠻適合的。 2. while Tru...

Feb 24, 20201 min read

Let's (re)start from here.

最近的時間大半都花在這上面了。 算算應該是第五次弄部落格系統。算一下扣除上古時期用現成的之外,每個系統平均各寫六篇文章,也都撐不過兩年。前幾個分別用了 Refinery CMS -> jekyll -> middleman -> jekyll。想來架系統的總時數應該超過寫文章的時間 XD 而這次用上了 Gatsby + tailwindcss,除了恢復一下 GraphQL 的手感之外,這次還挑戰了不套別人做的版型,自己把類似上一個部落格的 style 刻出來。想說來分享一下這些技術的感想: G...

Jan 11, 20201 min read

Mostly Functional

31 posts

/.(ex|jsx?|rb|hs|rs|py)/, A father, a bookworm, a pluviophile. Co-organizer of http://Elixir.tw. Learning Satir, coaching & mediation.