我正在尝试使用 SDKMAN 在 raspberry pi 上安装 java 17,安装一开始似乎可以正常工作,它会进行初始下载,但随后它打算下载,Installing script cli archive...
并在此步骤的下载部分失败(见下面的日志)。任何帮助都非常感谢!!如果我缺少信息,请原谅,我对此很菜鸟 :)
Looking for a previous installation of SDKMAN...
Looking for unzip...
Looking for zip...
Looking for curl...
Looking for sed...
Installing SDKMAN scripts...
Create distribution directories...
Getting available candidates...
Prime platform file...
Prime the config file...
Installing script cli archive...
* Downloading...
######################################################################## 100.0%
* Checking archive integrity...
* Extracting archive...
* Copying archive contents...
* Cleaning up...
Installing script cli archive...
* Downloading...
#=#=#
curl: (22) The requested URL returned error: 404 Not Found
'curl --fail --location --progress-bar "${SDKMAN_SERVICE}/broker/download/native/install/${SDKMAN_NATIVE_VERSION}/${SDKMAN_PLATFORM}" > "$sdkman_zip_file"': command failed with exit code 22.
答案1
curl:(22)请求的 URL 返回错误:404 未找到
这表明文件不存在。最终用户版本没有太多可以做的事情,但值得思考的是,为什么 SDKMAN 会尝试下载不存在的文件
我在此做出一些‘有根据的’猜测。
虽然较新的 Raspberry Pi 系统支持 64 位,但自 2023 年起,“标准”Raspberry Pi 操作系统为 32 位。是然而,这是一个 64 位 Raspberry Pi OS 测试版。
查看 Oracle 的网站 - 特别是托管脚本友好链接的网站Java 版本。它们只有 64 位 arm 和 x86 版本。我猜你的脚本并没有真正“正确”地检查 32 位 arm 版本并拒绝,并建立一个不存在的链接
这里有几个选项。使用较新的 Raspberry PI - 您可以尝试 64 位操作系统,看看 SDKman 是否可以在那里工作,因为有一个有效的 Java 版本。
对于新手不太友好的方法是找到该版本的 Java 的 32 位/arm 兼容版本,然后自行安装或修改 SDKman 来执行此操作。
关于这一点 - 根据这个reddit 帖子temurin 的 Java 版本支持 arm32 - 并且支持斯凯曼。如果您愿意切换 Java 版本,这可能是最简单的方法。
在这种情况下,缺乏适当的错误检查也感觉像是一个错误,可能值得向 SDKMAN 开发人员提出问题,
答案2
我遇到了同样的问题,我认为 JourneyMan geek 有权利解决这个问题。我正在充实一个新的 Pironman 案例安装,并且可以确认 Raspbian ARM64 存在错误,至少就桌面而言。我愿意等到他们解决 ARM64 问题,但截至今天,SDKMAN 无法成功安装在 Raspbian 32 上。SDKMAN 安装程序会查看uname -s
并uname -m
决定下载哪些 SDKMAN 二进制文件。(我敢发誓 SDKMAN 曾经是纯粹由 shell 脚本驱动的,但显然聪明的家伙一直在尝试使用 golang 和 rustlang 来“改进”它,这意味着如果您没有为您的平台获取正确的二进制文件,它将无法工作。
据我所知,他们没有公布服务器上可用的二进制文件版本,而且我确实知道安装程序脚本没有完全列出它们。到目前为止,我还无法猜出正确的版本,而且当我访问 SDKMAN Slack 频道时,它们大多都处于关闭状态。
(我想我已经迟到了,开始抱怨失去了所有的声誉,并且需要在超级用户接管后重新开始重组,但这太糟糕了。无论如何,我之前并不经常在这里发帖。)
事实是,RasPi 是一个极端情况,而大多数工业 Linux 对 SDKMAN 的使用似乎相当稳定。
哦,好吧。如果我能弄明白的话,我会尽量记得更新这个。