起因

自从将博客迁移至Hexo后,已经没有了硬性的服务器需求,只用将博客的内容部署到cloudflare上就行,之前一直用朋友的托管的服务器来部署,今年因为托管出了点问题,没办法在继续用了,加上最近对树莓派有了需求(装逼),所以决定让树莓派来担负这一重任。

问题

更具官方Github的安装指南,其中说到如果是ARM 架构安装wrangler 要借助cargo 来安装。

If you are running an ARM based system (eg Raspberry Pi, Pinebook) you’ll need to use the cargo installation method listed below to build wrangler from source.

对照在官方文档的安装方法,解决了一系列编译问题后可算是安装好了(用cargo装wrangler 要编译)。我信心满满的开始安装Hexo,主题,企图一气呵成的时候。

出现了这么个错误。

1
2
3
4
$ wrangler publish
⬇️ Installing cargo-generate v0.5.0...
Error: could not download `cargo-generate`
no prebuilt cargo-generate binaries are available for this platform

解决方法

最终,这个issue #1685找到了合适的解决办法,在这个文章也说到,问题的起因是

说白了就是 Wrangler 压根就没有考虑到这种情况,所以只会从某个地方下载预先编译好的 cargo-generatewasm-pack,这就导致了:虽然 Wrangler 本身可以通过 cargo install 在 Apple Silicon 上运行,但下载这两个工具链的时候出错,因为 wrangler 的开发团队压根就没有考虑过 ARM 平台上的运行体验。

我看了下 install::install_cargo_generate() 的实现,它会根据操作系统和平台请求 https://workers.cloudflare.com/get-binary/{0}/{1}/v{2}/{3}.tar.gz 上下载 cargo-generatewasm-pack。这就令人哭笑不得了,因为它既不是从 Rust 相关的源下载,而且代码中本身也没有提供检测 ARM 平台的代码。我就没有时间贡献 PR 了,就直接把上面代码的 binary_path 替换为我本机的 Cargo 的路径。最后,构建一份 release,并把构建好的程序链接到我自己的 bin 文件夹下,Wrangler 就能正常使用了。

具体的操作方法在这里,我们只用将路径改成自己cargo的安装路径就行。

最终编译完成,替换,部署,一气呵成。
就有了你看到的这篇文章。