自行编译组件并替换
CasaOS官方并未支持RISC-V架构,上一节链接中的组件为RVspace社区开发者编译提供,本节将介绍如何通过源码编译并替换组件。
提示: 可参考官方文档进行环境配置(主要为go及其相关组件)。
- 执行以下命令,下载源码:
git clone https://github.com/IceWhaleTech/CasaOS-Common.git git clone https://github.com/IceWhaleTech/CasaOS-CLI.git git clone https://github.com/IceWhaleTech/CasaOS-Gateway.git git clone https://github.com/IceWhaleTech/CasaOS-MessageBus.git git clone https://github.com/IceWhaleTech/CasaOS-UserService.git git clone https://github.com/IceWhaleTech/CasaOS-LocalStorage.git git clone https://github.com/IceWhaleTech/CasaOS-AppManagement.git git clone https://github.com/IceWhaleTech/CasaOS.git
- 源码修改。要编译CasaOS相关组件,需要修改其配置文件,主要修改组件源码路径下的.goreleaser.debug.yaml以及.goreleaser.yaml两个文件,如下图所示:
以下为修改配置文件的一个示例:
以CasaOS-AppManagement为例,修改其发布的配置文件.goreleaser.yaml需要在builds
字段新增编译RISC-V架构的配置,如下图所示:注: 上图中注释了upx
相关的命令,主要因为upx
不支持压缩RISC-V架构的二进制文件,执行时会出现以下报错信息:⨯ release failed after 35s error=post hook failed: shell: 'upx --best --lzma -v --no-progress /coding/nas/CasaOS-create/CasaOS-LocalStorage/dist/casaos-local-storage-riscv64_linux_riscv64/build/sysroot/usr/bin/casaos-local-storage': exit status 1: upx: /coding/nas/CasaOS-create/CasaOS-LocalStorage/dist/casaos-local-storage-riscv64_linux_riscv64/build/sysroot/usr/bin/casaos-local-storage: UnknownExecutableFormatException
此外,各组件编译时还会出现其他错误,如:- CasaOS出现如下报错:
⨯ release failed after 24s error=template: failed to apply "-X github.com/IceWhaleTech/CasaOS/drivers/google_drive.client_id={{.Env.GoogleID}}": map has no entry for key "GoogleID"
需注释CasaOS下的配置文件中的对应项,如下图所示: - CasaOS-AppManagement出现如下报错:
⨯ release failed after 54s error=hook failed: shell: 'go test -race -v ./... -timeout 30m': exit status 1: ? github.com/IceWhaleTech/CasaOS-AppManagement [no test files]
需注释对应的- go test -race -v ./... -timeout 30m
,如下图:
- CasaOS出现如下报错:
- 修改完各组件的配置文件后,执行以下编译命令:
$ goreleaser release --clean –snapshot
- 配置文件中定义的所有架构的安装文件会在dist/路径下生成:注: 在.goreleaser.yaml的
archives
字段配置了migration-tool相关id/builds
字段的组件还会生成对应的migration-tool文件,如下图:由上图可见:CasaOS组件的配置文件中配置了migration-tool,而编译生成的文件也包含了migration-tool组件。
- 除自行编译的组件以外,还有linux-all-appstore-v0.0.1-riscv64.tar.gz以及linux-all-casaos-v0.4.6.tar.gz两个文件:
- 下载完成后,替换通过预编译二进制文件安装中下载的CasaOS组件:
- 将下载的linux-all-casaos-v0.4.8.tar.gz替换掉下图中linux-all-casaos-v0.4.6.tar.gz文件。
- dist/路径中生成的对应文件替换下图各组件的安装文件。
- 替换完成后,执行以下命令进行安装:
$ sudo ./install.sh
安装成功后会显示下图:可见版本已从v0.4.6升级至v0.4.8。