Skip to content

[Bug] 在 Fedora 43 Workstation 上安装 Forge 失败 #4825

@TomatoPuddin

Description

@TomatoPuddin

问题描述 | Bug Description

问题

在最近发布的 Fedora 43 workstation 上安装 mc 1.20.1 + forge 任意版本都会失败,错误信息为哈希不正确:
Image

猜测原因

该发行版预装 zlib-ng 提供 deflate 压缩算法实现,而不是 zlib 官方库。该库以性能著称,但是输出的压缩数据与官方库不同,而 hmcl 正是通过对比 forge installer 内清单提供的哈希和安装完成后输出 jar 的哈希来校验安装结果,因而误判了安装失败。

Image

LOG.info("Executing external processor " + processor.getJar().toString() + ", command line: " + new CommandBuilder().addAll(command).toString());
int exitCode = SystemUtils.callExternalProcess(command);
if (exitCode != 0)
throw new IOException("Game processor exited abnormally with code " + exitCode);
for (Map.Entry<String, String> entry : outputs.entrySet()) {
Path artifact = Paths.get(entry.getKey());
if (!Files.isRegularFile(artifact))
throw new FileNotFoundException("File missing: " + artifact);
String code;
try (InputStream stream = Files.newInputStream(artifact)) {
code = DigestUtils.digestToString("SHA-1", stream);
}
if (!Objects.equals(code, entry.getValue())) {
Files.delete(artifact);
throw new ChecksumMismatchException("SHA-1", entry.getValue(), code);
}
}

此外,forge 官方也遇到过类似的问题 MinecraftForge/Installer#77

启动器崩溃报告 / 启动器日志文件 | Launcher Crash Report / Launcher Log File

[00:58:33] [@.util.platform.SystemUtils.onLogLine/INFO]   Data  assets/minecraft/models/item/crimson_door.json
[00:58:33] [@.util.platform.SystemUtils.onLogLine/INFO]   Data  assets/minecraft/models/item/bamboo_mosaic_slab.json
[00:58:33] [@.util.platform.SystemUtils.onLogLine/INFO]   Data  assets/minecraft/models/item/turtle_helmet_quartz_trim.json
[00:58:34] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$31/TRACE] Task failed: org.jackhuang.hmcl.download.forge.ForgeNewInstallTask$ProcessorTask
org.jackhuang.hmcl.util.io.ChecksumMismatchException: Incorrect checksum (SHA-1), expected: de86b035d2da0f78940796bb95c39a932ed84834, actual: 194fcc11cdc1a242cbcb828c1bb0fdf2632f26ee
	at org.jackhuang.hmcl.download.forge.ForgeNewInstallTask$ProcessorTask.execute(ForgeNewInstallTask.java:172)
	at org.jackhuang.hmcl.task.AsyncTaskExecutor.lambda$executeNormalTask$22(AsyncTaskExecutor.java:244)
	at org.jackhuang.hmcl.util.Lang.lambda$wrap$2(Lang.java:316)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions