這不是刷鍵盤 - asdf 多語言版本管理工具
Why
系統上安裝的程式語言太多,每一種又有各自的版本管理工具(nvm, gvm, rvm, phpbrew…),對我來說一直都有相同的兩點困擾:
不統一 :每個不同語言的版本管理工具都有各自的安裝、用法。一樣的語言版本管理卻要學習好幾種不同工具的用法,雖然每一個單獨來看都不難,但分開學習的成本也提高了。
啟動很慢 :因為用了
傳說中很慢的oh-my-zsh ,再加上每個語言的套件管理工具之後,每次重新啟動一個新的 shell 的速度就真的慢到突破天際了。
直到 asdf 的出現解決了這個問題。
Extendable version manager with support for Ruby, Node.js, Elixir, Erlang & more
首頁一句簡單的介紹,說明了一切。asdf 提供了一個可擴充的版本管理框架,再透過插件的形式去支援各種語言,甚至是軟體(MongoDB、Postgres、Redis)。
Install
它的安裝很簡單,首先要先安裝一些依賴的工具:
For Ubuntu
1 | $ sudo apt-get install automake autoconf libreadline-dev libncurses-dev libssl-dev libyaml-dev libxslt-dev libffi-dev libtool unixodbc-dev |
For Mac
1 | $ brew install coreutils automake autoconf openssl libyaml readline libxslt libtool unixodbc |
然後把 asdf 專案 clone 到家目錄下
1 | git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.3.0 |
然後把它加到 .bashrc
or .bash_profile
裡面
1 | # For Ubuntu or other linux distros |
Usage
使用也非常簡單,通常只要三個步驟就可以完成
- 安裝插件
- 安裝想要的指定版本
- 設定為預設值
這裡以安裝 golang 為例,其他語言其實大同小異。(部分的插件可能需要額外的依賴套件,可以參考各個插件的 README
說明)
步驟
先安裝想要的插件
1 | # asdf plugin-add <name> <git-url> |
完成後安裝指定版本
1 | # asdf install <name> <version> |
最後指定預設要用的版本
1 | # asdf global <name> <version> |
然後就可以開心的用 go version
檢查看看對不對囉!
補充
除了版本的安裝與切換以外, asdf 還支援在不同的目錄裏設定各自的語言版本,相信這對於各個不同專案之間的語言版本管理很有幫助。
如果想了解更多詳細用法,可以參考 asdf 的 github 專案 https://github.com/asdf-vm/asdf ,裡面有更多詳細說明。