周末的时候,想给小站换个主题,因为目前的主题有点太商务太传统,不够现代。大概浏览了一下,相中了 tale,特别简单的一个主题。然后就是下载,改配置,hugo server 的时候提示 hugo 版本太低,不支持 sass。这个简单,从这里直接下载最新版本即可。结果仍然提示不支持 sass,需要 extended 版本才支持,然而官方只提供了 Linux, Mac 和 Windows 平台的 extended 版本,树莓派的 arm 平台没有 extended 版本。没办法,只有自己动手编译了。

问题就出在这里了。由于惯性思维,想当然地以为树莓派内存小可能编译 hugo 会失败,于是从一开始只考虑在 Mac 和 Linux 下编译。准备工作倒都还比较简单,把 repo clone 下来即可。编译的时候碰到了一点问题,因为官方文档不是很清楚,没有写怎么为其它平台编译,以及编译的各种选项等。于是摸索了一番,得到下面的编译命令:

GOOS=linux GOARCH=arm go build -o hugo --tags extended main.go

很不巧的是,Linux 平台下报这样的错误:

# github.com/wellington/go-libsass/libs
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:8:9: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:151:10: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:153:9: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:157:10: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:159:9: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:164:10: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:166:9: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:170:10: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:175:28: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:186:24: undefined: SassNumber
../../go/pkg/mod/github.com/wellington/go-libsass@v0.0.0-20180624165032-615eaa47ef79/libs/sass_number.go:166:9: too many errors

怀疑是跨平台编译的问题,于是把 --tags extended 选项去掉,结果能正常编译通过,说明是这个选项导致的问题。没办法,只好在 Mac 上尝试一下。

在 Mac 上尝试碰到的问题更多,首先就是编译前下载依赖的问题。有几个 golang.org 下的依赖被墙了,命令行下又不能直接用 socks5 代理,首先尝试了 proxychains-ng,发现由于 SIP 的原因 无效,两种解决方案也不太满意。所幸还有 privoxy,能把 Shadowsocks 的 socks5 代理转换为 http 代理。折腾一番后,Mac 编译也报了同样的错误。那就没办法了,不知道是 hugo 的问题还是 golang 的问题。

折腾了这么久,仍然没有成功,真的是非常泄气。突然想到,为什么我要退而求其次,不直接在树莓派上编译 hugo 呢?有了前面的基础,这次各项准备工作都很顺利,敲完编译命令后祈祷了一番,因为很晚就去睡觉了。第二天一看,居然成功了!哈哈,实在是太高兴了。

写下来主要是反思,反思自己碰到了问题为什么没有一开始就尝试最直接的方法,而是选择了迂回的方法,浪费了大量时间。虽然树莓派内存小,但是没有尝试过的事情,而且是最简单直接的事情,应该要去尝试一下再做判断,不应该犯想当然的错误。

切记切记。