-
Notifications
You must be signed in to change notification settings - Fork 816
Closed as not planned
Labels
Description
问题描述 | Bug Description
问题
在最近发布的 Fedora 43 workstation 上安装 mc 1.20.1 + forge 任意版本都会失败,错误信息为哈希不正确:

猜测原因
该发行版预装 zlib-ng 提供 deflate 压缩算法实现,而不是 zlib 官方库。该库以性能著称,但是输出的压缩数据与官方库不同,而 hmcl 正是通过对比 forge installer 内清单提供的哈希和安装完成后输出 jar 的哈希来校验安装结果,因而误判了安装失败。
HMCL/HMCLCore/src/main/java/org/jackhuang/hmcl/download/forge/ForgeNewInstallTask.java
Lines 155 to 174 in da5bbd2
| 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)
zkitefly, Hylfrd, AnemoFlower, BerryMC and Lunya-dev