通過 vfox 安裝管理多版本 Erlang 和 Elixir

https://upload-images.jianshu.io/upload_images/14206039-0a271179a8758c1e.png

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

https://upload-images.jianshu.io/upload_images/14206039-d44fb34fa1daf030.png

如果你之前使用 asdf 去管理維護多個 ErlangElixir 的版本塞绿,那么 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-erlangvfox-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ā)布

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末焰檩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子订框,更是在濱河造成了極大的恐慌析苫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穿扳,死亡現(xiàn)場離奇詭異衩侥,居然都是意外死亡,警方通過查閱死者的電腦和手機矛物,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門茫死,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人履羞,你說我怎么就攤上這事峦萎÷啪茫” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵爱榔,是天一觀的道長被环。 經(jīng)常有香客問我,道長详幽,這世上最難降的妖魔是什么筛欢? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮妒潭,結果婚禮上悴能,老公的妹妹穿的比我還像新娘。我一直安慰自己雳灾,他們只是感情好漠酿,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著谎亩,像睡著了一般炒嘲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上匈庭,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天夫凸,我揣著相機與錄音,去河邊找鬼阱持。 笑死夭拌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的衷咽。 我是一名探鬼主播鸽扁,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼镶骗!你這毒婦竟也來了桶现?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤鼎姊,失蹤者是張志新(化名)和其女友劉穎骡和,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體相寇,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡慰于,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了唤衫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婆赠。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖战授,靈堂內(nèi)的尸體忽然破棺而出页藻,到底是詐尸還是另有隱情桨嫁,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布份帐,位于F島的核電站璃吧,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏废境。R本人自食惡果不足惜畜挨,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望噩凹。 院中可真熱鬧巴元,春花似錦、人聲如沸驮宴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堵泽。三九已至修己,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間迎罗,已是汗流浹背睬愤。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留纹安,地道東北人尤辱。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像厢岂,于是被迫代替她去往敵國和親光督。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容