跳到正文
本頁目錄

Linux 與 macOS

讀完本頁,你就知道 lip 在你的系統上能執行哪些伺服器、為了執行它們會下載什麼並放在哪裡,以及會遇到哪些限制。命令在每種系統上都一樣:見用命令管理伺服器。

什麼系統能執行什麼

Minecraft 發佈了兩種伺服器:Windows 版和 Linux 版。模組需要的載入器 LeviLamina 只能載入進 Windows 伺服器。所以帶模組的伺服器一定是 Windows 伺服器;在非 Windows 的系統上,lip 通過 Wine 執行它。

系統Windows 伺服器,帶或不帶 LeviLaminaLinux 伺服器,不帶載入器
x64 的 Windows可以不可以
arm64 的 Windows可以。由 Windows 模擬 x64。不可以
x64 的 Linux可以,通過 lip 的 Wine可以
x64 的 macOS可以,通過 lip 的 Wine不可以
arm64 的 macOS(Apple 芯片)可以,通過 lip 的 Wine 和 Rosetta 2不可以
arm64 的 Linux,以及其他任何系統不可以不可以

lip 為前五種系統發佈。沒有 arm64 Linux 版的 lip:見限制和已知問題。

無論 lip 執行在什麼系統上,它安裝的都是同一批套件,也就是為 x64 的 Windows 製作的那些。在一種系統上安裝好的伺服器資料夾,可以搬到另一種系統上。

通過 Wine 執行 Windows 伺服器

安裝和執行伺服器的方法與 Windows 上完全一樣:

sh
mkdir -p ~/servers/survival
cd ~/servers/survival
lip setup --game 1.26.50
lip run

你不需要安裝 Wine。lip 自帶一份,並且從不執行別的 Wine,例如 PATH 裡的 wine。

lip 下載什麼放在哪裡

lip 第一次需要執行 Windows 程式時,會先準備好系統。這發生在 lip setup 安裝 Windows 伺服器時、某個套件在安裝過程中要執行自己的程式時,以及 lip run 啟動 Windows 伺服器之前。

內容放在哪裡是否共用
Wine:適合你係統的一個組建,Linux 上來自 Kron4ek/Wine-Builds,macOS 上來自 Gcenx/macOS_Wine_buildslip 資料目錄下的 wine/:Linux 和 macOS 上都是 $XDG_DATA_HOME/lip,預設 ~/.local/share/lip所有工作區共用。只下載一次。
Microsoft Visual C++ Redistributable,伺服器需要它安裝到工作區的 Wine 前綴裡不共用。每個工作區一次。

安裝 Wine 時,lip 會告訴你:

text
lip runs the server with Wine <version>, which it installs once for every workspace, into <directory>.

這兩樣下載都會經過校驗。每個版本的 lip 都通過 SHA-256 確切地知道它要的是哪個檔案。不一致的下載會被刪除、不會被使用,命令在變更工作區之前就失敗。下載下來的壓縮檔和安裝程式用完即刪。

這兩步都不需要 root 權限。

想騰出空間,可以在沒有 lip 執行時刪除資料目錄。不會丟失任何東西:lip 下次需要時會重新安裝 Wine。

Wine 前綴

Wine 把它的「Windows」(登錄檔和 C: 盤)放在一個叫作前綴的資料夾裡。lip 給每個工作區單獨一個:伺服器資料夾裡的 .lip/wine。Wine 第一次在那裡執行時會建立它,所以第一次執行會慢一些。

前綴會隨伺服器資料夾一起移動。在伺服器停止時刪除 .lip/wine 是安全的:Wine 會重新建立它,lip 會重新把 Visual C++ Redistributable 裝進去。

想使用別的前綴,請自己設定 WINEPREFIX,並且對該工作區的每條 lip 命令都這樣設定:

sh
export WINEPREFIX="$HOME/.wine-bedrock"
lip setup --game 1.26.50
lip run

Apple 芯片的 macOS

lip 的 Wine 是 x64 程式,Apple 芯片的 Mac 通過 Rosetta 2 執行它。安裝 Rosetta 2 需要系統管理員權限,所以 lip 不會替你安裝。缺少它時,lip 會失敗並提示你執行:

sh
softwareupdate --install-rosetta --agree-to-license

然後重新執行 lip 命令。

Linux 伺服器

在 x64 的 Linux 上,lip 還能執行 Minecraft 的 Linux 伺服器。它不需要 Wine,也不需要系統裡的其他東西。它沒有載入器,所以不能在它旁邊安裝需要 LeviLamina 的模組。

sh
lip setup --game 1.26.50 --build linux
lip run
  • lip setup 放置伺服器的檔案,並把 bedrock_server 設為可執行。
  • lip run 在工作區裡啟動 bedrock_server。LD_LIBRARY_PATH 未設定或為空時,lip 會把它設為 .,讓伺服器能找到旁邊的庫。
  • 在 x64 的 Linux 以外的系統上,對這樣安裝的工作區執行 lip run 會失敗,並提示你到那種系統上執行,或者改裝 Windows 伺服器。

一個工作區只有一個遊戲。在已有 Windows 伺服器的資料夾裡安裝 Linux 伺服器會取代掉它,反過來也一樣。見變更遊戲版本。

環境變數

lip 從你執行它的終端機裡讀取這些變數。

變數lip 怎麼用它
WINEPREFIXWine 前綴。未設定或為空時,lip 使用工作區裡的 .lip/wine。
WINEDEBUG傳給 Wine。未設定時,lip 把它設為 -all,隱藏 Wine 的偵錯資訊。想看這些資訊,可以設成例如 err+all。
LD_LIBRARY_PATH用於 Linux 伺服器。未設定或為空時,lip 把它設為 .。
XDG_CONFIG_HOME使用者設定所在位置:$XDG_CONFIG_HOME/lip。預設 ~/.config。
XDG_CACHE_HOME下載快取所在位置:$XDG_CACHE_HOME/lip。預設 ~/.cache。
XDG_DATA_HOMEWine 的安裝位置:$XDG_DATA_HOME/lip。預設 ~/.local/share。
XDG_STATE_HOME介面的工作區清單所在位置:$XDG_STATE_HOME/lip。預設 ~/.local/state。
XDG_RUNTIME_DIR常駐程式的套接字所在位置:$XDG_RUNTIME_DIR/lip/daemon.sock。未設定時,套接字在狀態目錄裡。
HTTPS_PROXY、HTTP_PROXY、ALL_PROXY、NO_PROXY你的網路代理伺服器。見系統代理伺服器。
LC_ALL、LC_MESSAGES、LANG介面的語言,除非 language 設定已經指定了語言。

未設定、為空或不是絕對路徑的 XDG_ 變數會取預設值。macOS 使用與 Linux 相同的目錄。

其他變數都會原樣傳給伺服器和套件的程式。

INFO

lip 的工作是在背景處理程序(常駐程式)裡完成的。這不影響哪些變數起作用:每條命令使用的都是輸入它的那個終端機裡的變數。託管伺服器保留的是啟動它的那個終端機的變數。

限制和已知問題

  • 不支援 arm64 的 Linux。 試過的辦法都不能在那裡可靠地執行 LeviLamina 伺服器:Hangover 能執行原版伺服器,但執行不了被 LeviLamina 修改過的;box64 下的 x64 Wine 會丟失 Windows 程式的結束代碼;FEX 下的 x64 Wine 只在部分嘗試中啟動了 LeviLamina 伺服器。
  • 其他系統沒有 Wine。 在沒有 lip 的 Wine 的系統上,凡是需要 Windows 程式的操作都會失敗,並提示 lip runs the server with Wine on systems other than Windows, but has no Wine for <system>. Run the server on Windows, on Linux on x64 or on macOS.
  • 第一次啟動很慢。 要下載並解壓縮 Wine、建立前綴、安裝 Visual C++ Redistributable。之後的啟動會跳過這三步。
  • 檔案名稱不區分大小寫。 在 Windows 伺服器的工作區裡,lip 把 Plugins/a.dll 和 plugins/a.dll 當作同一個檔案,和 Wine 下的程式一樣。如果資料夾裡有兩個只差大小寫的名字,而 lip 需要的是其中唯一的一個,命令會失敗。請給其中一個改名。
  • 套件命令裡的引號。 Wine 會把 " 以 \" 的形式傳給 Windows 命令行。安裝命令裡含有 " 的套件,通過 Wine 可能無法正常工作。請向套件的作者反饋。
  • 結束代碼是 Wine 的。 lip run 以 wine 的結束代碼結束,或者以 128 加上結束它的信號編號結束。
  • 會改動下載內容的代理伺服器會讓校驗失敗。 Wine 或 Visual C++ Redistributable 的 SHA-256 與預期不符時,lip 會拒絕這個檔案。請稍後再試,或換一個網路。
  • 損壞的前綴。 Visual C++ Redistributable 在某個前綴裡安裝失敗時,lip 會指出這個前綴。刪除那個資料夾,再執行 lip。如果連 wine 本身都執行不了,請刪除資料目錄裡的 wine/,讓 lip 重新安裝。
  • 舊版 lip 的資料夾。 早期 lip 為 linux-x64 平臺建立的工作區,如果裡面只有伺服器,仍然可以使用:lip 會把它讀作 Linux 伺服器。如果裡面還有別的套件,lip 會停下並說明它只為 win-x64 安裝套件。請建立一個資料夾重新安裝。

這些限制背後的原因見內部機制。