常見問題
什麼是 lip.toml?
lip.toml 是 lip 包的包文件:它給出包 ID、版本,以及針對每個變體、運行端和平臺的依賴、要放置的文件、要安裝的 mod 和要運行的命令。參見 lip.toml。
還能安裝帶有 tooth.json 的 lip v0.x 包嗎?
可以。 lip 仍會讀取格式版本 1 到 3 的 tooth.json:它針對工作區的運行端和平臺把每個文件讀取為包文件,並像其他包一樣安裝,放置的文件與以前相同,因此已有的包仍可使用。lip 不再寫入 tooth.json;請使用 lip pkg migrate 把你的包轉換為 lip.toml。lip v0.x 的工作區(帶有 tooth_lock.json)和 liprc.json 會被自動遷移。
lip install 會更新 lip.toml 嗎?
不會。 運行 lip install <package> 會把包安裝到工作區,並更新狀態文件來記錄狀態,但不會修改任何 lip.toml。如果你希望依賴長期保留在包的要求中,需要手動把它加入你的 lip.toml 的 deps。
lip 能安裝客戶端 mod 嗎?
不能。lip 只管理服務端工作區。客戶端工作區由 LeviLauncher 等啟動器管理,它們讀取同樣的包。
可以在 Linux 上運行服務器嗎?
可以。 在任何系統上,lip 都安裝平臺 win-x64 的包,在 Linux 和 macOS 上通過 Wine 運行其鉤子命令和服務器,Wine 由 lip 自行下載並配置。Linux 版服務器 github.com/LiteLDev/bds#linux 無需 Wine 即可運行,但也不能帶 LeviLamina:用 lip setup --game <version> --build linux 設置它,lip run 會在 x64 的 Linux 上啟動它。參見運行服務器。
為什麼我倉庫的某個標籤不是版本?
只有名稱恰為 v 加 SemVer 2.0.0 版本號的標籤(例如 v1.2.3)才是版本。v1.2 或 1.2.3 這樣的標籤會被忽略。不過,仍可用 git 引用安裝任意標籤、分支或提交,例如 lip install github.com/user/repo@tag:1.2.3 或 @branch:main;此時包的版本是其 lip.toml 聲明的 version。參見 git 引用。
如何安裝磁盤上的包?
用根部帶有 lip.toml 的目錄或 ZIP 文件的路徑運行 lip install,例如 lip install ../MyTool 或 lip install ./package.zip。狀態文件會記錄該路徑:卸載不需要它,lip update 會重新讀取它。
如何升級 lip 自身?
運行 lip self-update。它在 GitHub 上找到最新的 Release,並按 lip 的安裝方式安裝:使用新版 .msi(Windows 會請求你的允許),或在原地替換便攜壓縮包的文件。lip self-update --check 只打印新版本號。如果你是通過舊的 futrime.lip winget 包或 npm 安裝的 lip,請先卸載,再按安裝中的方式重新安裝。
lip 需要安裝 git 嗎?
不需要。lip 使用內置客戶端通過 HTTPS 訪問 git 倉庫,無需安裝 git 命令行工具。詳見內部機制。
lip 支持私有倉庫嗎?
目前不支持。lip 通過 HTTPS 匿名獲取包,不使用 git 命令行工具或其憑據管理器,因此只能從公開倉庫安裝。
lip 會把安裝的包放在哪裡?
lip 會將包文件直接安裝到你的工作區。mod 安裝到 mods/<name>/,<name> 為其 LeviLamina manifest.json 中的 name;文件包按其 lip.toml 的規定放置文件。
工作區的狀態文件是其中的 .lip/state.json;操作鎖(.lip/lock)和日誌(.lip/journal)位於它旁邊。lip 自己的其他文件保存在遵循平臺慣例的用戶目錄中:
| 內容 | Windows | Linux / macOS |
|---|---|---|
配置(config.toml) | %APPDATA%\lip | $XDG_CONFIG_HOME/lip(默認 ~/.config/lip) |
| 緩存 | %LOCALAPPDATA%\lip\Cache | $XDG_CACHE_HOME/lip(默認 ~/.cache/lip) |
| 數據(Linux 和 macOS 上的 Wine) | %LOCALAPPDATA%\lip\Data | $XDG_DATA_HOME/lip(默認 ~/.local/share/lip) |
狀態(未設置 XDG_RUNTIME_DIR 時守護進程的套接字) | %LOCALAPPDATA%\lip\State | $XDG_STATE_HOME/lip(默認 ~/.local/state/lip) |
在 Linux 和 macOS 上,設置了 XDG_RUNTIME_DIR 時,守護進程監聽 $XDG_RUNTIME_DIR/lip/daemon.sock。緩存可以隨時刪除,例如使用 lip cache clean。數據目錄存放 lip 運行服務器所用的 Wine;請僅在沒有 lip 命令運行時刪除它,lip 在需要時會重新安裝 Wine。正在進行的下載會寫入緩存中的 .tmp 文件,完成後再重命名到位;lip 不向系統臨時目錄寫入任何內容。
安裝到一半失敗會怎樣?
什麼都不會改變。lip setup、lip install、lip uninstall 和 lip update 要麼全部完成,要麼全部不做,其安裝或移除的依賴也包含在內:lip 在改動工作區之前先完成所有檢查和下載;若文件無法寫入、鉤子命令失敗或按下 Ctrl+C,它會撤銷已做的全部修改,狀態文件保持原樣。只有包的鉤子命令所做的事無法撤銷。若 lip 在中途被終止,下一次在該工作區中運行的 lip setup、install、uninstall、update 或 run 會先處理被中斷的操作:若它已保存狀態文件,則將其完成,否則將其撤銷,並告知你。參見內部機制。
可以同時運行兩個 lip 命令嗎?
不能作用於同一個工作區:一個 lip setup、install、uninstall 或 update 正在修改某個工作區時,對該工作區的另一個此類命令會立即失敗,並提示另一個 lip 命令正在修改該工作區。作用於不同工作區的命令,以及只讀取的命令(如 lip list 或 lip pkg view),隨時都可以運行。lip run 啟動的服務器不會佔用工作區:服務器運行期間你可以安裝、更新和卸載包,這些改動在服務器下次啟動時生效。
命令失敗了,如何查明原因?
lip 會輸出出了什麼問題、每一層原因,以及你可以怎麼做。除非錯誤出在命令行本身,它還會在當前目錄的 .lip/logs/ 中寫入一份失敗報告,並輸出其路徑。報告包含 lip 關於這次失敗所知的一切:lip 版本、命令、系統、工作區狀態、包含每一層原因和堆棧跟蹤的完整錯誤,以及本次運行的跟蹤記錄(網絡請求、git 操作、緩存使用、版本解析、文件改動和鉤子命令的輸出)。URL 中的憑據會被隱去。lip 保留最新的 20 份報告。報告問題時請附上該報告。