為 system 回退到系統(tǒng)自帶版本)
asdf 如何把工具版本設(shè)為 system 回退到系統(tǒng)自帶版本【免費(fèi)下載鏈接】asdfExtendable version manager with support for Ruby, Node.js, Elixir, Erlang more項(xiàng)目地址: https://gitcode.com/GitHub_Trending/as/asdf在 asdf可擴(kuò)展的工具版本管理器中項(xiàng)目目錄下的.tool-versions文件聲明各個(gè)工具使用 asdf 安裝的哪個(gè)版本。但有些工具系統(tǒng)本身已經(jīng)安裝過(guò)——python是文檔中給出的常見(jiàn)例子。當(dāng)你不希望在某個(gè)目錄或家目錄下所有目錄讓 asdf 接管某個(gè)工具而是直接用系統(tǒng)自帶的那一份時(shí)可以把該工具的版本設(shè)為特殊值systemasdf 就會(huì)把執(zhí)行 passthrough 給系統(tǒng)上不由 asdf 管理的版本。前提條件getting-started 指南asdf 核心已安裝shims 目錄默認(rèn)~/.asdf/shims已在$PATH中對(duì)應(yīng)的工具插件已通過(guò)asdf plugin add添加因?yàn)?asdf 通過(guò)插件管理具體工具。下面以python為例說(shuō)明設(shè)置system的三種方式和驗(yàn)證方法。system在 asdf 中的含義docs/manage/configuration.md 說(shuō)明.tool-versions的版本字段支持以下格式10.15.0— 具體版本號(hào)ref:v1.0.2-a或ref:39cb398vb39— 從 GitHub 下載并編譯的 tag/commit/branchpath:~/src/elixir— 指向自定義編譯版本的路徑system— 讓 asdf passthrough 到系統(tǒng)上不由 asdf 管理的工具版本多個(gè)版本可以空格分隔寫(xiě)在同一行按順序依次嘗試。configuration 文檔給出的示例python 3.7.2 2.7.15 system含義是優(yōu)先用 Python3.7.2回退到2.7.15最后回退到系統(tǒng)的 Python。FAQ 還補(bǔ)充了兩點(diǎn)system是允許出現(xiàn)在.tool-versions文件中的特殊值它實(shí)際上等于在給定目錄里為這個(gè)工具禁用了 asdf同一個(gè)system在不同機(jī)器上可能解析到不同版本。用asdf set設(shè)置 system 版本主路徑在希望生效的目錄下執(zhí)行asdf set name system # asdf set python systemasdf set會(huì)把版本寫(xiě)入當(dāng)前目錄的.tool-versions文件文件不存在時(shí)自動(dòng)創(chuàng)建。versions 文檔說(shuō)它純粹是方便起見(jiàn)等價(jià)于執(zhí)行echo tool version .tool-versions。兩個(gè)位置參數(shù)控制寫(xiě)入位置命令寫(xiě)入位置asdf set python system當(dāng)前目錄的.tool-versions不存在則創(chuàng)建asdf set -u python system$HOME/.tool-versions-u/--home不存在則創(chuàng)建asdf set -p python system最近的父目錄中已存在的.tool-versions-p/--parent-p要求父目錄里已經(jīng)有.tool-versions文件文檔原文是 set in existing.tool-versionsfile in a parent dir沒(méi)有該文件時(shí)會(huì)報(bào)錯(cuò)。想讓家目錄下所有目錄默認(rèn)使用系統(tǒng)版本時(shí)用-u寫(xiě)入$HOME/.tool-versionsasdf set -u python system按 getting-started 指南家目錄下的任意目錄都會(huì)使用這個(gè)版本除非某個(gè)目錄在自己的.tool-versions里另設(shè)了其他版本。直接編輯.tool-versions等效方式.tool-versions是純文本文件每行一個(gè)工具支持注釋。直接加入或修改對(duì)應(yīng)行即可python system聲明版本的.tool-versions文件對(duì)其所在目錄及所有子目錄生效。項(xiàng)目里如果已經(jīng)聲明了其他工具只需改動(dòng)python這一行不要?jiǎng)悠渌ぞ叩男小0姹窘馕鰰r(shí)機(jī)asdf 在執(zhí)行它管理的工具時(shí)才做查找從當(dāng)前目錄開(kāi)始逐級(jí)向上到$HOME尋找.tool-versions。getting-started 指南同時(shí)警告如果某個(gè)受管工具在任何.tool-versions中都未列出執(zhí)行該工具會(huì)報(bào)錯(cuò)可以用asdf current觀察哪些工具解析不到。用環(huán)境變量在當(dāng)前會(huì)話臨時(shí)回退到 system可選分支不想改文件、只在當(dāng)前 shell 會(huì)話試用的話使用ASDF_${TOOL}_VERSION模式的環(huán)境變量。它的取值格式與.tool-versions相同一旦設(shè)置會(huì)覆蓋該工具在任何.tool-versions文件中聲明的版本。文檔示例Elixirexport ASDF_ELIXIR_VERSION1.18.1讓當(dāng)前 shell 會(huì)話使用 Elixir1.18.1。同樣地回退到系統(tǒng)版本可以寫(xiě)export ASDF_PYTHON_VERSIONsystem也可以只在單條命令前綴中臨時(shí)生效文檔示例ASDF_ELIXIR_VERSION1.4.0 mix test文檔明確提醒因?yàn)檫@是環(huán)境變量它只在設(shè)置它的會(huì)話中生效其他正在運(yùn)行的 shell 會(huì)話仍然使用.tool-versions里的版本。驗(yàn)證切換是否生效先運(yùn)行asdf current # 或 asdf current python它會(huì)顯示每個(gè)工具當(dāng)前解析到的版本以及決定該版本的.tool-versions文件位置。versions 文檔中的示例輸出文檔示例非固定預(yù)期結(jié)果# asdf current # erlang 17.3 /Users/kim/.tool-versions # nodejs 6.11.5 /Users/kim/cool-node-project/.tool-versions再直接執(zhí)行該工具本身system的定義就是 passthrough 到系統(tǒng)上不由 asdf 管理的版本因此此時(shí)運(yùn)行python應(yīng)執(zhí)行系統(tǒng)自帶的那一份。限制與如何改回system是特殊值它允許寫(xiě)在.tool-versions里但可能在不同機(jī)器上解析到不同版本FAQ。目錄作用域某目錄的.tool-versions只影響該目錄及其子目錄$HOME/.tool-versions是家目錄下所有目錄的默認(rèn)值會(huì)被更深層目錄的聲明覆蓋。改回 asdf 管理的版本用asdf set寫(xiě)回一個(gè)具體版本例如asdf set python 3.7.2或直接編輯.tool-versions中對(duì)應(yīng)行。確認(rèn)不再需要某個(gè) asdf 安裝版本后可以用asdf uninstall name version如asdf uninstall erlang 17.3清理該命令會(huì)移除 asdf 安裝的對(duì)應(yīng)版本versions 文檔執(zhí)行前確認(rèn)該版本確實(shí)不再被使用。相關(guān)文檔docs/manage/versions.md、docs/manage/configuration.md、docs/guide/getting-started.md、docs/more/faq.md。【免費(fèi)下載鏈接】asdfExtendable version manager with support for Ruby, Node.js, Elixir, Erlang more項(xiàng)目地址: https://gitcode.com/GitHub_Trending/as/asdf創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考