置Kerl一條命令搞定所有OTP版本)
Erlang版本管理終極指南用erlang.mk內(nèi)置Kerl一條命令搞定所有OTP版本【免費下載鏈接】erlang.mkA build tool for Erlang that just works.項目地址: https://gitcode.com/gh_mirrors/er/erlang.mkerlang.mk 是一款 開箱即用 的 Erlang 構(gòu)建工具其內(nèi)置的 Kerl 集成讓你可以一條命令管理所有 Erlang/OTP 版本自動下載、編譯并安裝指定的 OTP 版本讓團隊每一位成員的構(gòu)建環(huán)境完全一致。本教程將帶你快速掌握 OTP 版本鎖定、多版本并存以及 CI 多版本測試的完整玩法告別 在我機器上能跑 的經(jīng)典難題。為什么需要統(tǒng)一的 Erlang/OTP 版本管理寫 Erlang 代碼時幾乎每個團隊都會遇到這樣的場景開發(fā)環(huán)境是 OTP 27生產(chǎn)環(huán)境是 OTP 25行為不一致新同事裝錯 OTP 版本依賴編譯失敗CI 只測一個版本上線才發(fā)現(xiàn)兼容性問題。erlang.mk 內(nèi)置了 Kerl一個自動化構(gòu)建 Erlang/OTP 的腳本的支持把 下載 → 編譯 → 安裝 → 切換到指定版本 全部收斂到make一條命令里。核心實現(xiàn)位于 core/kerl.mk官方說明文檔在 doc/src/guide/kerl.asciidoc。一鍵鎖定 OTP 版本ERLANG_OTP 配置方法這是最常用也最簡單的一步在項目的 Makefile 中include erlang.mk之前設(shè)置ERLANG_OTP變量即可ERLANG_OTP OTP-20.0.4 include erlang.mk保存后再次運行makeerlang.mk 會自動拉取 Kerl 到臨時目錄_build/kerl用 Git tag 從 Erlang/OTP 官方倉庫檢出對應(yīng)版本并完整編譯安裝到~/erlang/OTP-20.0.4并把該版本的bin目錄注入PATH后續(xù)所有erlc、erl命令都走這個版本。整個過程只需等待編譯完成無需手動下載源碼、配置依賴或改環(huán)境變量。版本號怎么寫erlang.mk 使用 Erlang/OTP 的 Git tag 作為版本標識。新版本形如OTP-20.0.4.4是補丁發(fā)布更老的版本則形如OTP_R16B03甚至出現(xiàn)過修復關(guān)鍵問題的OTP_R16B03-1。寫 Makefile 前建議先確認官方發(fā)布列表。自動使用最新已安裝 OTPLATEST_ERLANG_OTP如果不想鎖死具體版本只想 用本機裝好的最新 OTP可以設(shè)置LATEST_ERLANG_OTP。其實現(xiàn)邏輯在 core/kerl.mk 第 45-50 行對安裝目錄下的版本做排序和過濾排除master和OTP_R%舊命名自動選出最新的一個作為ERLANG_OTP。這在持續(xù)構(gòu)建腳本中非常實用。CI 多版本測試一條命令跑遍所有 OTP開源庫往往要兼容多個 OTP 版本。erlang.mk 的 CI 插件plugins/ci.mk基于同一套 Kerl 機制讓你聲明式地跑遍所有目標版本CI_OTP OTP-19.0.7 OTP-19.3.6.2 OTP-20.0.4然后執(zhí)行make ci -kci目標會依次為每個版本構(gòu)建 OTP若尚未構(gòu)建、清理項目、注入對應(yīng)PATH并運行測試-k參數(shù)保證某個版本失敗時仍繼續(xù)測試其余版本。此外還可以擴展目標ci-setup每個版本測試前的鉤子例如ci-setup:: distclean可強制重新拉取依賴ci-extra每個版本測試后的鉤子例如ci:: dialyze可在 CI 末尾運行 Dialyzer。更多細節(jié)見 doc/src/guide/ci.asciidoc。自定義 Kerl 配置安裝目錄、源碼倉庫與編譯參數(shù)所有 Kerl 變量都可以通過在 Makefile 中導出變量來覆蓋常用的有變量作用默認值KERL_INSTALL_DIROTP 版本安裝根目錄$(HOME)/erlangKERL_GITKerl 腳本倉庫地址kerl 官方倉庫OTP_GITErlang/OTP 源碼倉庫erlang/otp 官方倉庫KERL_COMMITKerl 檢出的分支或提交masterKERL_MAKEFLAGS傳給 OTP 編譯的 make 參數(shù)空例如把版本裝到項目目錄內(nèi)注意必須寫絕對路徑erlang.mk 不會自動展開變量export KERL_INSTALL_DIR $(CURDIR)/erlang常見問題與注意事項構(gòu)建慢是正常的首次make需要完整編譯 Erlang/OTP耗時較長之后該版本已存在直接復用不會重復編譯判斷邏輯見 core/kerl.mk 第 61-65 行。與.ONESHELL不兼容有用戶報告版本鎖定功能與 GNU Make 的.ONESHELL特性存在兼容問題如遇到詭異報錯可先檢查這一點。多個版本可并存每個 OTP 版本安裝為獨立子目錄如~/erlang/OTP-20.0.4不同項目可各自指向不同版本互不干擾。清理 Kerl 緩存make distclean會觸發(fā)distclean-kerl目標移除臨時拉取的 Kerl 目錄。小結(jié)借助 erlang.mk 內(nèi)置的 Kerl 集成你只需一個變量就能鎖定 OTP 版本、一條命令就能完成多版本 CI 測試從 手動折騰環(huán)境 升級為 聲明式版本管理。建議現(xiàn)在就在項目的 Makefile 中加上ERLANG_OTP試試——這也是 Erlang 項目團隊協(xié)作的強烈推薦實踐?!久赓M下載鏈接】erlang.mkA build tool for Erlang that just works.項目地址: https://gitcode.com/gh_mirrors/er/erlang.mk創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考