AI-assisted-by: Codex AI-model: gpt-5.6-sol AI-reasoning-effort: medium Co-authored-by: Codex <codex@openai.com>
Linux 分发打包
TamaASR 1.0.3 的系统包由两部分组成:
- Electron 应用安装到
/opt/tama-asr,命令入口为/usr/bin/tama-asr; - Fcitx5 常驻 addon 由目标发行版中的 CMake/Fcitx5 开发包编译,并安装到该环境报告的 addon 目录。
安装包同时提供桌面入口、项目图标和 /etc/xdg/autostart/tama-asr.desktop,因此安装后的默认行为是随桌面会话启动。设置页关闭自启动时,应用需要在用户级 autostart 目录写入覆盖项,不能删除系统包所属文件。
tama-asr 1.0.3 的 deb、RPM 和 Arch 元数据均声明替换旧 meloasr 包;通过对应发行版的包管理器安装新包时,旧应用、Fcitx5 addon 和桌面文件会一并卸载。
统一构建契约
deb、rpm 和 Arch 配置期望项目提供:
pnpm run build:linux:dir
该命令应在 release/linux-unpacked/ 生成可直接运行的 Electron 目录,并且主程序名必须是 tama-asr。仓库提供的 electron-builder.yml 只生成这一中间目录;deb/rpm/Arch 的系统文件仍由各自脚本管理,避免用安装钩子复制未被包管理器追踪的 Fcitx5 文件。
主项目可将脚本定义为:
{
"build:linux:dir": "pnpm run build && electron-builder --config packaging/electron-builder.yml --linux dir"
}
手工检查安装树:
packaging/scripts/stage-linux.sh release/linux-unpacked packaging/out/root
deb
在 Debian/Ubuntu 对应目标环境中安装 Node.js 构建依赖、CMake、C++ 编译器、Fcitx5 开发包与 nlohmann-json 开发包,然后执行:
pnpm run build:linux:dir
packaging/deb/build-deb.sh
产物位于 packaging/out/tama-asr_1.0.3_<arch>.deb。依赖名称按 Debian/Ubuntu 系列填写,但尚未在各发行版完成安装验证。
rpm
在目标 RPM 发行版中准备相同的编译依赖和 rpmbuild,然后执行:
pnpm run build:linux:dir
packaging/rpm/build-rpm.sh
产物复制到 packaging/out/。RPM 发行版之间的 Fcitx5 开发包和运行库名称可能不同,正式发布前需要分别在 Fedora/openSUSE 等目标环境验证并维护发行版 spec。
Arch/pacman
参见 arch/README.md。默认 PKGBUILD 解包同版本官方 deb 并重打包为 pacman 包;PKGBUILD-from-source 保留在干净 chroot 中构建 Electron 应用和 Fcitx5 addon 的原有流程。
Nix flake
nix build
nix run
flake 使用 nixpkgs 的 Electron,Node 依赖由 pnpm-lock.yaml 和固定输出的 pnpm store 导入。仓库首次确定发布地址后,需要锁定并提交 flake.lock。
发布前必须完成
- 发布前确认仓库地址和许可证元数据;
- 明确项目许可证,并替换临时的
LicenseRef-Proprietary/Nix license; - 生成 Arch bin 版 deb 和源码版源码归档的真实 SHA-256;
- 在干净的 Debian、RPM、Arch 和 Nix 构建环境逐一构建、安装、卸载;
- 验证 Fcitx5 能发现 addon,桌面菜单/托盘图标、自启动开关和包升级均正常。