lip install
安裝包。
概要
lip install <PACKAGES> [options]參數
| 參數 | 說明 |
|---|---|
<PACKAGES> | 要安裝的包。 |
每個包參數可以是以下形式之一:
- 倉庫 —
<path>或<path>#<variant>(例如github.com/user/repo):git 倉庫https://<path>.git,最新版本優先。 - 帶版本的倉庫 —
<path>@<version>或<path>#<variant>@<version>(例如github.com/user/repo#lua@1.0.0):恰好該版本,即標籤v<version>所指的提交。版本為不帶前導v的 SemVer 2.0.0 版本。它與 git 引用一樣會固定該包:參見 git 引用。 - 帶 git 引用的倉庫 —
<path>[#<variant>]@branch:<branch>、@tag:<tag>或@rev:<commit>(例如github.com/user/repo@branch:main):分支頭、標籤或提交 ID 所指的提交,無論其版本為何。接受任意分支名或標籤名,而不僅是v<SemVer>標籤;提交 ID 必須是完整的 40 位十六進制數字。參見 git 引用。 - URL — ZIP 文件的
https://URL(例如https://example.com/package.zip),後面可跟#<variant>。不接受http://和file://等其他協議。 - 本地路徑 — 磁盤上的 ZIP 文件或目錄,使用絕對路徑或相對於當前目錄的路徑(例如
./package.zip、C:\Downloads\package.zip或../MyTool),後面可跟#<variant>。以./、../、.\或..\開頭、為.或..、為絕對路徑,或不含@且以.zip結尾(不區分大小寫)或指向已存在的文件或目錄的參數,都按本地處理。本地文件必須是 ZIP 歸檔,與文件名無關;本地目錄以其內容作為歸檔。
不含 / 的倉庫路徑表示 LiteLDev 的倉庫:LeviLamina@26.60.6 是 github.com/LiteLDev/LeviLamina@26.60.6 的簡寫,LegacyScriptEngine#lua 是 github.com/LiteLDev/LegacyScriptEngine#lua 的簡寫。
每個包的根部都必須有 lip.toml(參見 lip.toml),且其所請求的變體有對應工作區運行端和平臺的條目。
在還沒有遊戲的工作區中,請先用 lip setup 設置服務器,或者安裝 LeviLamina 或服務器本身,這同樣會設置服務器(參見遊戲與加載器)。
包的依賴也會一併安裝。安裝一個已被顯式安裝的包會報錯;如需改變其版本,請使用 lip update。兩個參數指向同一身份同樣會報錯。作為依賴安裝的包會變為顯式安裝;若其版本滿足該參數,則保持該版本不變。
git 引用
git 引用把倉庫固定到某個提交:
@<version>取標籤v<version>所指的提交。lip update會保持該版本。@branch:<branch>取分支當前的頭。lip update會跟隨分支到新的頭。@tag:<tag>取標籤所指的提交;任意標籤名均可,例如@tag:nightly。lip update會重新解析該標籤。@rev:<commit>恰好取該提交,它永遠不會變化。不接受縮寫的提交 ID,因為解析縮寫需要倉庫的全部歷史。
以這種方式安裝的包,其版本為該提交處 lip.toml 聲明的 version。只有名為 v<SemVer> 的標籤(例如 @tag:v1.2.0)會讓包取標籤的版本,與普通版本相同:該處的 lip.toml 必須聲明該版本(早期格式的 tooth.json 則取標籤版本)。狀態文件會記錄來源、其解析到的提交及其包文件,因此在你更新之前,工作區始終保持該提交。
從 git 引用安裝的包,也能滿足對其不帶 git 引用的包 ID 和變體的依賴,只要其版本在依賴的範圍內,且該倉庫有 lip 可為該依賴安裝的版本標籤:要求 github.com/user/lib >=1.5.0 的 mod,會接受從 @branch:main 安裝且聲明 1.6.0 的 github.com/user/lib;若其聲明 1.4.0,或 github.com/user/lib 沒有 1.5.0 及以上的版本標籤,則失敗。
平臺
lip 安裝的是運行端 server 和平臺 win-x64 所對應的條目,win-x64 是每個工作區環境的平臺,無論 lip 運行在什麼系統上:在 Linux 和 macOS 上,lip 同樣安裝 Windows 版服務器的包,並通過 Wine 運行它及其包的鉤子,除非你設置的是 Linux 版服務器(參見運行服務器)。
遊戲與加載器
工作區的服務器就是它的遊戲,即 github.com/LiteLDev/bds 的已安裝包,帶上其加載器,即 github.com/LiteLDev/LeviLamina 的已安裝包,或不帶加載器。由 lip setup 選擇它們。
在沒有遊戲的工作區中,安裝 mod,或安裝會把 LeviLamina 或服務器作為依賴安裝的包,會失敗並提示使用 lip setup。
指向 LeviLamina(不帶 git 引用或帶 @<version> 的 github.com/LiteLDev/LeviLamina)或服務器(不帶 git 引用或帶 @<version> 的 github.com/LiteLDev/bds 或 github.com/LiteLDev/bds#linux)的參數,會讓 lip install 作為一次 lip setup 執行,並與其他參數在同一個操作中完成:
- 構建:以
github.com/LiteLDev/bds#linux指向服務器時為linux,否則為windows。 - 加載器:有參數指向 LeviLamina 時為 LeviLamina,取該參數給出的版本;不帶版本時,取支持服務器參數所給遊戲版本的最新 LeviLamina,若沒有參數給出遊戲版本,則取最新的 LeviLamina。沒有參數指向 LeviLamina 時沒有加載器。
- 遊戲版本:服務器參數給出的版本;未給出時,取該 LeviLamina 對
github.com/LiteLDev/bds的依賴所接受的最新服務器版本,若沒有參數指向 LeviLamina,則取最新的服務器版本。
因此,lip install LeviLamina 設置最新的 LeviLamina 及其支持的最新遊戲,lip install LeviLamina@<version> 設置該版本的 LeviLamina 及其支持的最新遊戲,lip install github.com/LiteLDev/bds#linux@<version> 設置該版本的 Linux 版服務器,不帶加載器。兩個參數都指向服務器,或兩個參數都指向 LeviLamina,會報錯。與 lip setup 一樣,lip 在下載遊戲之前會請你接受 Minecraft EULA(參見 Minecraft EULA);在腳本中請加上 --accept-eula。
除此之外,lip install 從不安裝、卸載或替換遊戲或加載器。若這些包無法在遊戲和加載器保持不變的情況下安裝,例如某個 mod 需要更新的 LeviLamina,命令會失敗,並指明遊戲版本、LeviLamina 的版本以及 lip setup:請先用 lip setup 設置該 mod 支持的遊戲和加載器,再安裝該 mod。
服務器
基岩版專用服務器 github.com/LiteLDev/bds 有三個變體:默認變體和 windows 安裝 Windows 版服務器,linux 安裝 Linux 版服務器。一個工作區只能裝其中一個,即它的遊戲,由 lip setup 設置(Linux 版服務器用 --build linux),或按上文所述由 lip install 設置:
lip install github.com/LiteLDev/bds#linuxLinux 版服務器的 bedrock_server 由 lip 自己設為可執行。lip run 在 x64 的 Linux 上啟動 Linux 版服務器;參見運行服務器。
選項
| 選項 | 說明 |
|---|---|
--accept-eula | 當 lip install 設置遊戲時,不經詢問,接受 Minecraft EULA 和 Microsoft 隱私聲明;其他情況下不起作用。 |
-n, --dry-run | 僅模擬執行,不做實際更改。 |
示例
lip install LeviLamina
lip install LeviLamina@26.60.6 --accept-eula
lip install github.com/LiteLDev/bds#linux
lip install github.com/LiteLDev/LegacyScriptEngine#lua
lip install github.com/user/repo@1.0.0
lip install github.com/user/repo@branch:main
lip install github.com/user/repo@tag:v1.0.0
lip install https://example.com/package.zip
lip install ./package.zip
lip install ../MyTool