vfox (version-fox) 是最近比較熱門的一個通用版本管理工具,使用 Go 語言進行編寫,插件機制使用了 Lua 去實現(xiàn)擴展性. 目前 vfox 已經(jīng)支持管理大多數(shù)主流編程語言的版本,生態(tài)還算強大嚼蚀。在這里你可以看到目前 vfox 所支持管理的編程語言版本和工具 -> vfox-Available Plugins
Elixir 和 Erlang 社區(qū)一直以來都比較流行通過 asdf 去安裝和管理多版本環(huán)境德绿。asdf 也是一個通用的版本管理工具,生態(tài)非常的豐富睦霎。
vfox 的版本管理上和 asdf 很像,均通過 .tool-versions
文件去管理項目級和全局的版本信息走诞。這意味著如果你之前使用了 asdf副女,那么切換到 vfox,不會很困難蚣旱。因為 vfox 和 asdf 的核心實現(xiàn)有有點不一樣碑幅,vfox 的執(zhí)行速度比 asdf 快了將近 5 倍~,官方文檔也給出了基準測試結果:version-fox Comparison with asdf-vm
如果你之前使用 asdf 去管理維護多個 Erlang 和 Elixir 的版本塞绿,那么 vfox 也是一個不錯的選擇沟涨,值的一試。
本篇文章將會介紹如果通過 vfox 去安裝和管理多個 Erlang 和 Elixir 的版本异吻。
安裝 vfox
vfox (version-fox) 的跨操作系統(tǒng)支持上很友好拷窜,這意味可以 Windows 和 Unix-like 系統(tǒng)上使用它。本篇文章的核心是通過 vfox 去安裝和管理多個 Erlang 和 Elixir 語言的版本涧黄。因為目前 vfox 的兩個管理 Erlang 和 Elixir 版本的插件實現(xiàn)上還沒有去支持在 Windows 操作系統(tǒng)下的管理篮昧,所以本篇文章的示例環(huán)境主要是 Ubuntu 20.04 Linux 環(huán)境。讓我們開始吧~
先安裝下 vfox (version fox):
echo "deb [trusted=yes] https://apt.fury.io/versionfox/ /" | sudo tee /etc/apt/sources.list.d/versionfox.list
sudo apt-get update
sudo apt-get install vfox
為了能讓 vfox 找到已經(jīng)安裝的 Elixir 和 Erlang 版本笋妥,需要將 vfox 默認掛載到 shell 中懊昨。接下來修改下 shell 的配置 (以 Bash 為例):
echo 'eval "$(vfox activate bash)"' >> ~/.bashrc
你也可以參考這個官方文檔安裝 vfox -> https://vfox.lhan.me/guides/quick-start.html。安裝好 vfox 之后春宣,我們再安裝下插件:
# 添加 vfox-erlang 插件
vfox add erlang
# 添加 vfox-elixir 插件
vfox add elixir
接下來我們就可以通過上面安裝好的兩個 vfox 插件 vfox-erlang 和 vfox-elixir 去安裝管理多個 Erlang 和 Elixir 的版本了酵颁。
通過 vfox-erlang 插件安裝 Erlang/OTP
因為 Elixir 依賴于 Erlang嫉你,所以在安裝 Elixir 之前,我們需要先安裝下 Erlang躏惋。Erlang 的安裝是通過對應版本的源碼進行安裝的幽污,所以我們需要有對應的編譯工具鏈,這里以 Ubuntu 20.04 為例:
sudo apt-get -y install build-essential autoconf m4 libncurses5-dev libwxgtk3.0-gtk3-dev libwxgtk-webview3.0-gtk3-dev libgl1-mesa-dev libglu1-mesa-dev libpng-dev libssh-dev unixodbc-dev xsltproc fop libxml2-utils libncurses-dev openjdk-11-jdk
接下來可以安裝 Erlang 了簿姨。
# 通過 vfox search 找到你想要安裝的版本
? vfox search erlang
Please select a version of erlang [type to search]:
-> v25.0.4
v24.3.4.16
v24.1.3
v24.0
v24.3
v24.3.2
v25.2
v27.0-rc2
v24.3.4.1
Press ↑/↓ to select and press ←/→ to page, and press Enter to confirm
# 當然你也可以指定安裝一個版本距误,比如
vfox install erlang@26.2.2
理論上,你可以安裝任何一個出現(xiàn)在 https://github.com/erlang/otp/releases 的版本扁位。因為是從源碼編譯安裝的, 所以安裝過程會花費點時間准潭。當你看到如下信息,就表明安裝完成了域仇。
compile info.......
...
Install erlang@26.2.2 success!
Please use vfox use erlang@26.2.2 to use it.
我們使用 vfox 切換下到剛才安裝好的 Erlang/OTP 版本來驗證下安裝是否成功:
? vfox use erlang@26.2.2
Now using erlang@26.2.2.
? erl
Erlang/OTP 26 [erts-14.2.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Eshell V14.2.2 (press Ctrl+G to abort, type help(). for help)
1>
如果能正確喚醒 REPL刑然,那么安裝就好啦~。接下來開始安裝 Elixir 吧~
安裝 Elixir
因為安裝 Elixir 也是從對應版本的源碼進行編譯安裝的暇务,Elixir 的編譯需要依賴到 Erlang泼掠,我們先讓當前使用的 shell 能找到剛才安裝好的 Erlang。
# 切換 Erlang 版本
? vfox use erlang@26.2.2
Now using erlang@26.2.2.
# 安裝 Elixir垦细,將會使用對應的 erlc 編譯器
> vfox install elixir@1.15.2
.........
.........
Generated ex_unit app
==> logger (compile)
Generated logger app
Generated eex app
==> iex (compile)
Generated iex app
Install elixir@1.15.2 success!
Please use vfox use elixir@1.15.2 to use it.
當你看到 Install elixir@1.15.2 success!择镇,也就意味著安裝成功了◎鸺欤可以通過 iex 確認下安裝徹底成功:
? vfox use elixir@1.15.2
Now using elixir@1.15.2.
? iex
Erlang/OTP 26 [erts-14.2.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.15.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
如果你想要安裝其他版本的 Elixir沐鼠,請確保當前使用的 Erlang/OTP 版本和 Elixir 版本是兼容的挚瘟,可以查看這個文檔去確認兼容性: 《compatibility-and-deprecations.html#between-elixir-and-erlang-otp》叹谁。
設置全局使用版本
我們可以使用 vfox use -g xxx
設置默認使用的 Erlang 和 Elixir 版本。
> vfox use -g erlang@26.2.2
> vfox use -g elixir@1.15.2
# 可以查看 .tool-versions 確認設置是否完成
> cat ~/.version-fox/.tool-versions
erlang 26.2.2
elixir 1.15.2
最后
vfox 的兩個安裝管理 Erlang/OTP 和 Elixir 版本的插件同時也支持在 MacOS Darwin 下管理多個版本乘盖。你可以查看這個文檔去了解更多信息: https://github.com/version-fox/vfox-elixir?tab=readme-ov-file#install-in-darwin-macos-13.
Happy & funny!
本文由博客群發(fā)一文多發(fā)等運營工具平臺 OpenWrite 發(fā)布