vfox (version fox) 是一款跨平臺(tái)东且、可拓展的通用版本管理器. 支持原生 Windows 以及 Unix-like 系統(tǒng)! 通過(guò)它, 可以快速安裝和切換開(kāi)發(fā)環(huán)境的軟件版本. 最近給 vfox 水了幾個(gè)插件, 其中就有管理多個(gè) Erlang/OTP 版本的, 很喜歡他的插件管理機(jī)制. 之前也有使用過(guò)類(lèi)似的工具 asdf, 不過(guò) asdf 之前的使用體驗(yàn)不怎么好 (木有拉踩的意思~, asdf 的生態(tài)是非常強(qiáng)大的), vfox 現(xiàn)在支持的插件已經(jīng)非常之多了, 已經(jīng)可以管理大多數(shù)常見(jiàn)主流語(yǔ)言的版本.
vfox 的版本管理工作流大體上是和 asdf 類(lèi)似的, 不過(guò)性能要好一點(diǎn) (5 倍左右), 畢竟 asdf 核心是 shell 寫(xiě)的. 官方文檔也給出了一份基準(zhǔn)測(cè)試, 參見(jiàn) 《Comparison with asdf-vm》:
vfox 和 asdf 一樣, 可以通過(guò) .tool-version
配置文件設(shè)置全局和項(xiàng)目級(jí)使用到的版本, 這意味著如果你從 asdf 切換到 vfox, 相當(dāng)?shù)姆奖?
vfox-erlang 的使用
本篇文章主要介紹怎么使用 vfox-erlang 插件, 在同一臺(tái)機(jī)器上管理多個(gè) Erlang/OTP 的版本. 一般在開(kāi)發(fā)環(huán)境擁有多個(gè)版本的 Erlang/OTP 供測(cè)試比對(duì)也是常見(jiàn)的需求.
目前插件的實(shí)現(xiàn)上實(shí)際的安裝過(guò)程是通過(guò)從源碼進(jìn)行編譯安裝 Erlang/OTP 的, 所以暫時(shí)只支持在 Unix-like 系統(tǒng) (比如 ubuntu剃毒、macos darwin 等) 上安裝管理 Erlang/OTP 的版本 (官方其實(shí)提供了 exe 安裝器在 windows, 還沒(méi)時(shí)間去研究加上去 2333~, 不過(guò)在 windows 使用 Erlang 的場(chǎng)景一般也比較少)豹芯。
Erlang 是一種編程語(yǔ)言, 用于構(gòu)建具有高可用性要求的大規(guī)慕е希可擴(kuò)展軟實(shí)時(shí)系統(tǒng)得糜。它的一些用途是電信、銀行症概、電子商務(wù)育勺、計(jì)算機(jī)電話(huà)和即時(shí)通訊但荤。Erlang 的運(yùn)行時(shí)系統(tǒng)內(nèi)置了對(duì)并發(fā)、分布和容錯(cuò)的支持涧至。
OTP 是一組 Erlang 庫(kù)和設(shè)計(jì)原則, 提供中間件來(lái)開(kāi)發(fā)這些系統(tǒng)腹躁。它包括自己的分布式數(shù)據(jù)庫(kù)、用于連接其他語(yǔ)言的應(yīng)用程序南蓬、調(diào)試和發(fā)布處理工具纺非。
安裝 vfox 和 vfox-erlang 插件
在使用 vfox-erlang 管理 Erlang/OTP 版本之前, 請(qǐng)確保你已經(jīng)在你的機(jī)器上安裝好了 vfox, 可以參考官方的文檔 Quick Start, 本文以 Ubuntu 為例.
# 安裝 vfox
echo "deb [trusted=yes] https://apt.fury.io/versionfox/ /" | sudo tee /etc/apt/sources.list.d/versionfox.list
sudo apt-get update -y
sudo apt-get install vfox -y
# 讓 vfox hook 你的 shell, 偏于 vfox 識(shí)別使用的 Erlang/OTP 版本
echo 'eval "$(vfox activate bash)"' >> ~/.bashrc
# 添加 vfox-erlang 插件
vfox add erlang
安裝使用指定版本 Erlang/OTP
由于是是從源碼編譯安裝的 Erlang/OTP, 所以我們需要有對(duì)應(yīng)的構(gòu)建工具鏈和依賴(lài)軟件, 這里以 Ubuntu 20.04 下安裝為例:
# “無(wú)腦”安裝依賴(lài)的軟件
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
然后我們即可通過(guò) vfox 管理安裝多個(gè) Erlang/OTP 版本了。
# 可以使用 search 命令查找可供安裝的版本
? vfox search erlang
Please select a version of erlang [type to search]:
-> v25.3.2.5
v24.0-rc3
v24.3
v23.3.4.18
v24.0.6
v24.3.2
v25.3
v24.1.4
v26.0.2
# 或者直接指定一個(gè)版本安裝
> vfox install erlang@26.2.2
...
Install erlang@26.2.2 success!
Please use vfox use erlang@26.2.2 to use it.
當(dāng)你看到類(lèi)似 Install erlang@xxx success! 的信息, 就意味著安裝完成了赘方。接下來(lái)可以通過(guò) vfox use
命令切換版本, 即可讓當(dāng)前 shell 會(huì)話(huà)可以使用對(duì)應(yīng)的 Erlang/OTP 版本了.
vfox use erlang@26.2.2
vfox 提供了三種視角的版本管理方法: shell 會(huì)話(huà)烧颖、項(xiàng)目級(jí)、全局, 通過(guò)一個(gè) .tool-versions
, 可以靈活的為不同的項(xiàng)目目錄分配使用不同的 Erlang/OTP 版本, 跟多信息可以查看官方文檔的介紹: vfox-Switch runtime.
本篇文章的使用示例主要以 Linux 系統(tǒng)為主, 但是 vfox-erlang 的使用文檔上也給出了在 MacOS Darwin 系統(tǒng)下的使用指南 install-in-darwin-macos-13, 并提供了在 Linux 和 MacOS 下持續(xù)集成測(cè)試供參考: vfox-erlang E2E testing.
Happy and funny~
本文由博客群發(fā)一文多發(fā)等運(yùn)營(yíng)工具平臺(tái) OpenWrite 發(fā)布