跳到正文
本頁目錄

檔案

本頁列出 lip 讀寫的每一個檔案和目錄,讓你知道哪些可以刪除、備份或編輯,以及這樣做會失去什麼。

lip 只向四個地方寫入:它操作的工作區、它的使用者級目錄、你在參數中給出的路徑,以及更新自身時的安裝目錄。它從不向系統臨時目錄寫入。它執行的程式(伺服器、鉤子命令、安裝程式和 Wine)寫到哪裡不受此限。

工作區

工作區是一個伺服器所在的目錄。它是命令的目前目錄,或者介面中的目前工作區。

路徑是什麼由誰寫入
.lip/lip 關於這個工作區的記錄。參見 .lip 目錄。lip
mods/LeviLamina 載入模組的目錄。每個模組位於 mods/<模组名>/。lip,以及模組自己
bedrock_server_mod.exe、bedrock_server.exe、bedrock_serverlip run 啟動的伺服器。參見伺服器檔案。lip
其餘的一切遊戲和檔案套件的檔案,以及伺服器執行時建立的內容,例如 worlds/。lip 和伺服器
tooth_lock.jsonlip v0.x 工作區的狀態。參見狀態檔。lip v0.x

在操作變更工作區之前,lip 會建立 mods/。mods 必須是真正的目錄:如果它是連結,操作失敗。

工作區不相依它之外的任何東西。只要沒有 lip 命令和伺服器在使用它,你可以移動、重命名或複製這個目錄,已安裝的套件都會保留。

.lip 目錄

在 Windows 上,.lip 帶有隱藏屬性。

條目是什麼刪除的後果
state.json狀態檔:已安裝的套件,以及每個套件擁有的檔案。lip 不再知道安裝了什麼。檔案還在,但 lip 無法解除安裝或更新它們。不要刪除。
state.json.tmp正在寫入的狀態檔。命令執行期間不要動它。
journal進行中的操作的記錄,lip 靠它完成或復原被中斷的操作。只在操作進行期間或操作被中斷之後存在。lip 無法再復原被中斷的操作。不要刪除;執行 install、uninstall、update、setup 或 run 即可恢復。
lock工作區鎖的檔案。處理程序在執行操作期間持有它,這樣兩個操作不會同時變更工作區。它的內容沒有意義。沒有命令執行時刪除無妨。有命令執行時,絕不要刪除、重命名或取代它。
server.lock伺服器鎖的檔案。執行伺服器的處理程序持有它,這樣一個工作區最多隻有一個伺服器在執行。沒有伺服器執行時刪除無妨。有伺服器執行時,絕不要刪除、重命名或取代它。
config.toml工作區設定。restart 回到 never。
logs/失敗報告。失去這些報告。隨時可以刪除。
wine/在 Linux 和 macOS 上:Windows 版伺服器和鉤子命令執行所用的 Wine 前綴。Wine 會重新建立它,lip 會重新向其中安裝 Visual C++ 執行庫。請先停止伺服器。

lip 可能在 .lip 中儲存其他條目。不要相依它們。

.lip 是保留目錄:套件不能向其中安裝檔案,purge 的 glob 也永遠不會符合它。

兩把鎖互相獨立。操作不取得伺服器鎖,伺服器執行期間也不持有工作區鎖,所以 lip run 執行時仍然可以執行 lip install。介面更嚴格,會要求你先停止伺服器。

伺服器檔案

遊戲就是套件 github.com/LiteLDev/bds。安裝它時,lip 把從 www.minecraft.net 下載的 Bedrock Dedicated Server 歸檔的全部內容寫到工作區根目錄。

工作區有伺服器檔案
載入器(LeviLamina)bedrock_server_mod.exe
沒有載入器,組建為 windowsbedrock_server.exe
沒有載入器,組建為 linuxbedrock_server

在 Linux 和 macOS 上,lip 寫入 bedrock_server 時把它的權限設為 0755。

安裝、取代或解除安裝遊戲時,兩個清單決定它的檔案如何處理:

清單路徑作用
保留server.properties、allowlist.json、permissions.json安裝遊戲時保留已存在的檔案,解除安裝遊戲時也不刪除。
清除bedrock_server.exe.bak(僅組建 windows)、packet-statistics.txt、valid_known_packs.json、behavior_packs/、config/、definitions/、development_behavior_packs/、development_resource_packs/、development_skin_packs/、resource_packs/、world_templates/解除安裝遊戲時連同其下的所有內容一起刪除,包括不是遊戲安裝的檔案。其他已安裝的套件擁有的路徑會保留。

更換遊戲後保留什麼

用 lip setup 更換遊戲版本時,會解除安裝舊遊戲並安裝新遊戲:

保留被取代或刪除
server.properties、allowlist.json、permissions.json舊遊戲安裝的其他所有檔案
worlds/,以及伺服器或你在清除路徑之外建立的其他檔案上面的清除路徑,連同你放進去的內容
mods/,以及仍然安裝著的套件的檔案這次設定解除安裝的套件的檔案
.lip/

WARNING

你複製到 behavior_packs/、resource_packs/ 或某個 development_* 目錄中的套件會隨這些目錄一起被刪除。更換遊戲之前,請在工作區之外留一份副本。

檔案名稱

如果路徑中某一段包含 :,或者以 . 或空格結尾,lip 拒絕把這個檔案寫入工作區,因為 Windows 無法儲存這樣的名字。操作失敗。

在 Linux 和 macOS 上,lip 像 Wine 一樣把工作區中的路徑視為不區分大小寫:Mods/a.dll 和 mods/A.DLL 是同一個檔案。如果已有一個只是大小寫不同的檔案,新檔案會寫到它的位置上。如果一個路徑這樣對應了不止一個已有的檔案,操作失敗。

使用者級目錄

目錄WindowsLinux 和 macOSLinux 和 macOS 上的預設值
設定%APPDATA%\lip$XDG_CONFIG_HOME/lip~/.config/lip
快取%LOCALAPPDATA%\lip\Cache$XDG_CACHE_HOME/lip~/.cache/lip
資料%LOCALAPPDATA%\lip\Data$XDG_DATA_HOME/lip~/.local/share/lip
狀態%LOCALAPPDATA%\lip\State$XDG_STATE_HOME/lip~/.local/state/lip

未設定、為空或不是絕對路徑的 XDG_* 變數取其預設值。

設定目錄

條目是什麼
config.toml使用者設定。
liprc.jsonlip v0.x 的設定。lip 會把它轉換為 config.toml 並刪除它。

刪除設定目錄會重置 github_proxy 和 language。

快取目錄

快取裡是 lip 下載過、並且可以重新下載的內容。lip cache clean 刪除整個目錄。

條目是什麼
http-<H>一個檔案:對某個 URL 的一次成功的 HTTPS GET 的響應體。<H> 是該 URL 的小寫十六進制 SHA-256;URL 取套件中寫的樣子,去掉片段,與使用了什麼代理伺服器無關。
<name>.tmp正在寫入的檔案。
self-update/lip self-update 下載和解壓縮的內容,只在它執行期間存在。

lip 可能在這裡儲存其他條目。不要相依它們。

其他程式只要遵守同樣的規則,也可以讀寫快取:

  • 寫入。 先把條目寫到一個其他處理程序不會使用的 .tmp 檔案名稱下,再重命名。絕不原地修改條目。
  • 讀取。 存在的條目就是完整的。知道某個 http-<H> 條目應有內容的讀取者要檢查它,不一致時可以刪除它。
  • 刪除。 http-<H> 條目隨時可以刪除;.tmp 檔案在沒有處理程序寫它時可以刪除;self-update 在沒有 lip self-update 執行時可以刪除。

當 lip 需要一個 ZIP 歸檔,而其 URL 對應的快取條目不是 ZIP 歸檔時,lip 會刪除該條目並重新下載一次。

刪除快取不會失去任何東西:lip 會重新下載它需要的內容。你刪除快取時,正在向快取寫入的 lip 命令可能失敗。

資料目錄

資料目錄儲存 lip 在 Linux 和 macOS 上安裝的 Wine(所有工作區共用),以及 lip 為安裝系統相依而下載的內容。

在沒有 lip 處理程序執行時刪除它,不會失去任何東西:lip 在需要時會重新安裝系統相依。在 Linux 和 macOS 上,這意味著重新下載 Wine。

狀態目錄

條目是什麼
workspaces.json介面的工作區清單。
daemon.sock 和常駐程式的其他檔案在 Linux 和 macOS 上,僅當 XDG_RUNTIME_DIR 沒有設為絕對路徑時。參見常駐程式端點。

在沒有 lip 處理程序執行時刪除它,只會失去工作區清單。工作區本身不受影響;在介面中重新新增即可。

workspaces.json

介面在工作區頁顯示的工作區清單:一個由絕對路徑組成的 JSON 陣列,按新增順序排列。

json
["D:\\servers\\survival", "D:\\servers\\creative"]
  • 清單不存在或不是 JSON 陣列時,視為空清單。
  • 不是絕對路徑的元素,以及與清單中已有元素指向同一目錄的元素,會被略去。
  • lip 以規範形式寫入每個路徑:解析掉 . 和 ..,在 Windows 上以 \ 作分隔符,末尾不帶分隔符(根目錄除外)。兩個路徑的規範形式相等時指向同一目錄,在 Windows 上不區分大小寫。

介面啟動時會把它的工作目錄加入清單。從清單中移除工作區不會變更其中的任何檔案。命令不使用這個清單。

常駐程式端點

常駐程式在只有你這個使用者能訪問的地方監聽:

系統端點
Windows命名管道 \\.\pipe\lip-<SID>,<SID> 是你這個使用者的安全標識符。
Linux 和 macOS常駐程式目錄中的 Unix 套接字 daemon.sock:XDG_RUNTIME_DIR 是絕對路徑時為 $XDG_RUNTIME_DIR/lip,否則為狀態目錄。

常駐程式目錄的權限是 0700,套接字的權限是 0600。常駐程式結束時刪除 daemon.sock。該目錄中還有常駐程式的其他檔案;不要相依它們。

安裝目錄

安裝目錄是 lip 可執行檔所在的目錄。

條目是什麼
install.json{"kind": "msi"}。由 Windows 安裝程式寫入;它告訴 lip self-update 用安裝程式來更新。沒有它時,lip 視為可攜版。lip 從不寫它。
<file>.old可攜版更新取代掉、但暫時無法刪除的檔案。lip 下次啟動時刪除 <executable>.old。

失敗報告

因用法錯誤以外的原因失敗的命令,可能會向工作區的 .lip/logs/ 寫一份失敗報告,並在消息中給出檔案名稱:

text
Full report: .lip\logs\20260115T093012Z-4812.log

檔案名稱由 UTC 時間和一個處理程序 ID 組成。在目前版本中,報告是一個文字檔案,包含命令行、lip 和系統的版本、lip 使用的目錄、錯誤及其提示和原因、.lip 中的條目,以及 lip 所做事情的跟蹤記錄。URL 中的使用者名稱、密碼和查詢參數的值會被取代成 ***。lip 保留最新的 20 份報告,刪除更早的。

求助時請附上這份報告。它的格式並不固定,可能會變化。

失敗的試執行也可能寫一份;這是試執行唯一會寫的檔案。

另請參閱