ApliNi/blog

关于编译 MC 服务端时的踩坑

Opened this issue · 0 comments

ApliNi commented

我所使用的环境

  • Windows 系统, WSL (Debian)
  • 16G 内存 (10G可用)

这可以在windows上直接编译, 但据说会更慢, 流程和在wsl上有些不同.

开始

  1. 安装 WSL

搜索 安装 WSL, 然后根据提示启用 Windows 的 WSL 功能. 直至能在终端运行 wsl.exe --help.

:: 1. 更新 wsl
wsl --update

:: 2. 列出可用 Linux 发行版
wsl --list --online

:: 找到 Debian, 也可以使用 Ubuntu

:: 安装 Debian
wsl.exe --install Debian

:: 等待...

等待安装完成, 会弹出要求输入账户密码的终端界面. 直接关闭窗口 (这样可以使用 root 账户), 然后在开始菜单打开刚安装的 Debain (此时应可以直接输入命令, 比如 cd /).


  1. 安装所需的工具

以下命令在 WSL 中运行
使用代理或进行换源, 我推荐使用代理或者 什么都不做(但可能会有些慢)

// 更新软件列表
apt-get update

// 更新已安装的软件
apt-get upgrade

// 安装 git
apt-get install git

在这一步如果遇到错误可以尝试不进行换源, 使用代理或者直接开始.
安装软件时会提示需要输入 Y/N, 这里输入 Y 即可.

// 安装 Azul 的 Java
// https://docs.azul.com/core/zulu-openjdk/install/debian#install-from-azul-apt-repository


// 安装 curl
apt install gnupg ca-certificates curl

// 导入 Azul 的公钥
curl -s https://repos.azul.com/azul-repo.key | sudo gpg --dearmor -o /usr/share/keyrings/azul.gpg

echo "deb [signed-by=/usr/share/keyrings/azul.gpg] https://repos.azul.com/zulu/deb stable main" | sudo tee /etc/apt/sources.list.d/zulu.list

// 安装 jdk 17
apt install zulu17-jdk

  1. 下载服务端和编译
// 进入 home 目录
cd /
cd home

// 下载 paper 源码
git clone https://github.com/PaperMC/Paper.git

如果遇到 Failed to connect to github.com port 443 after 0 ms: Couldn't connect to server, 请检查 WSL 的Hosts/etc/hosts 中是否有 127.0.0.1 ...github... 之类的配置. 这可能由 Steam++ 之类的加速软件添加.

// 进入 Paper 目录
cd Paper

// 修改 gradlew 文件的权限
chmod +x gradlew
// 运行编译, 共两步

./gradlew applyPatches

./gradlew createReobfPaperclipJar

对于一些其他的服务端, 有可能会遇到 ./gradlew: cannot execute: required file not found sudo: unable to execute ./gradlew: No such file or directory 这样的错误. 只需要下载 Paper 的代码, 然后复制其中的 gradlew 文件到出问题的服务端目录, 替换它, 然后重试.

如果可用内存不足6G, 可能容易失败.

⚠️ 这一步需要大量的内存!
对于某些系统, 您至少需要 6+ GB 的可用 RAM, 但在其他系统上, 您至少需要 10+ GB 的可用 RAM!
如果你没有足够的内存, 你会得到一个非常模糊的错误, 说任务失败, 没有任何解释.


最后, 找到 Paper/build/libs/paper-paperclip-<MC版本>-R0.1-SNAPSHOT-reobf.jar 就是编译出的服务端了.

对于一些其他的服务端, 可能生成很多文件, 只需要找到包含 paperclip-reobf 字段的文件即可.


一些特殊的用法:

  1. 可以在 Windows 文件夹中按 Shift + 右键, 点击 在此处打开 Powershell 窗口, 然后输入 wsl, 即可在 WSL 中定位到这个目录.
  2. 在 Windows 资源管理器(此电脑) 的地址栏输入 \\wsl$\ 可以查看 WSL 的磁盘文件. 但注意这里的文件不会实时更新, 比如在终端新建文件后需要刷新才会显示出来.