跳到正文
本頁目錄

lip install

安裝包。

概要

shell
lip install <PACKAGES> [options]

參數

參數說明
<PACKAGES>要安裝的包。

每個包參數可以是以下形式之一:

  1. 倉庫 — <path> 或 <path>#<variant>(例如 github.com/user/repo):git 倉庫 https://<path>.git,最新版本優先。
  2. 帶版本的倉庫 — <path>@<version> 或 <path>#<variant>@<version>(例如 github.com/user/repo#lua@1.0.0):恰好該版本,即標籤 v<version> 所指的提交。版本為不帶前導 v 的 SemVer 2.0.0 版本。它與 git 引用一樣會固定該包:參見 git 引用。
  3. 帶 git 引用的倉庫 — <path>[#<variant>]@branch:<branch>、@tag:<tag> 或 @rev:<commit>(例如 github.com/user/repo@branch:main):分支頭、標籤或提交 ID 所指的提交,無論其版本為何。接受任意分支名或標籤名,而不僅是 v<SemVer> 標籤;提交 ID 必須是完整的 40 位十六進制數字。參見 git 引用。
  4. URL — ZIP 文件的 https:// URL(例如 https://example.com/package.zip),後面可跟 #<variant>。不接受 http:// 和 file:// 等其他協議。
  5. 本地路徑 — 磁盤上的 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 設置:

shell
lip install github.com/LiteLDev/bds#linux

Linux 版服務器的 bedrock_server 由 lip 自己設為可執行。lip run 在 x64 的 Linux 上啟動 Linux 版服務器;參見運行服務器。

選項

選項說明
--accept-eula當 lip install 設置遊戲時,不經詢問,接受 Minecraft EULA 和 Microsoft 隱私聲明;其他情況下不起作用。
-n, --dry-run僅模擬執行,不做實際更改。

示例

shell
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