feat: 添加 Linux 构建脚本

新增文件:
- build-linux-package.sh: Linux 编译和打包脚本

构建流程:
1. 清理旧的 dist 目录
2. 构建前端资源 (npm run build)
3. 编译 CLI 程序 (cargo build --release)
4. 复制必要文件 (impress_asr, config.toml, models/, dist/)
5. 打包成 tar.gz

输出文件:
- dist/impress-asr-linux-x64-YYYYMMDD_HHMMSS.tar.gz
- 文件大小:约 814KB

注意:
- 当前环境缺少 GUI 依赖 (libgtk-3, libwebkit2gtk 等)
- GUI 版本需要在有完整依赖的系统上编译
- CLI 版本可正常运行

使用说明:
tar -xzf impress-asr-linux-x64-*.tar.gz
cd impress-asr-linux-x64
./impress_asr --help
This commit is contained in:
impressionyang 2026-05-21 19:54:09 +08:00
parent b03ac2ab0b
commit 87ad8b4576

140
build-linux-package.sh Executable file
View File

@ -0,0 +1,140 @@
#!/bin/bash
# Linux 编译并打包脚本
# 编译 impress_asr_input_rust 项目并打包
set -e
PROJECT_DIR="/home/ubuntu/workspace/cherry-studio/enginneer/impress_asr_input_rust"
cd "$PROJECT_DIR"
# 生成时间戳(精确到秒)
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
DIST_DIR="$PROJECT_DIR/dist/linux-x64"
OUTPUT_TAR="$PROJECT_DIR/dist/impress-asr-linux-x64-${TIMESTAMP}.tar.gz"
echo "=============================================="
echo " Impress ASR - Linux 构建打包脚本"
echo " 时间:$(date '+%Y-%m-%d %H:%M:%S')"
echo "=============================================="
# 清理旧的 dist 目录
echo ""
echo "[1/5] 清理旧的 dist 目录..."
rm -rf "$DIST_DIR"
mkdir -p "$DIST_DIR"
# 构建前端
echo ""
echo "[2/5] 构建前端..."
cd "$PROJECT_DIR/web"
npm run build
cd "$PROJECT_DIR"
# 验证前端构建
echo ""
echo "前端构建结果:"
ls -lh "$PROJECT_DIR/web/dist/"
# 编译 CLI 程序
echo ""
echo "[3/5] 编译 CLI 程序..."
cargo build --release
# 复制必要文件
echo ""
echo "[4/5] 复制必要文件到 dist 目录..."
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
cp -r "$PROJECT_DIR/web/dist" "$DIST_DIR/"
cp -r "$PROJECT_DIR/models" "$DIST_DIR/" 2>/dev/null || mkdir -p "$DIST_DIR/models"
cp "$PROJECT_DIR/resources/configs/default.toml" "$DIST_DIR/config.toml" 2>/dev/null || true
# 创建 README.md
cat > "$DIST_DIR/README.md" << 'README_EOF'
# Impress ASR Input Rust - Linux 运行说明
## 🚀 快速启动
1. **解压文件**
```bash
tar -xzf impress-asr-linux-x64-*.tar.gz
cd impress-asr-linux-x64
```
2. **运行程序**
```bash
# CLI 版本
./impress_asr --help
# 录音
./impress_asr record
# 识别音频文件
./impress_asr recognize -i audio.wav
```
## 📦 文件清单
| 文件 | 说明 |
|------|------|
| `impress_asr` | CLI 命令行工具 |
| `config.toml` | 配置文件(可选) |
| `models/` | 模型文件目录 |
| `dist/` | 前端资源目录 |
## 📋 系统要求
- **操作系统**Linux x64 (glibc 2.28+)
- **支持的系统**Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
- **可选依赖**
- `libasound2` - 音频支持
- `libonnxruntime` - ONNX 模型推理
## ❓ 常见问题
### 错误:模型文件不存在
**解决**:下载 ONNX 模型并放到 `models/` 目录。
- SenseVoice Small: https://huggingface.co/FunAudioLLM/SenseVoiceSmall/resolve/main/model.onnx
### 错误:找不到 libasound.so
**解决**:安装 ALSA 库
```bash
# Ubuntu/Debian
sudo apt-get install libasound2
# CentOS/RHEL
sudo yum install alsa-lib
```
## 📝 获取帮助
```bash
./impress_asr --help
```
---
**版本**: 0.1.0 | **构建时间**: 见文件名后缀
README_EOF
echo "文件列表:"
ls -lh "$DIST_DIR/"
# 打包成 tar.gz
echo ""
echo "[5/5] 打包成 tar.gz 文件..."
cd "$DIST_DIR/.."
tar -czf "$OUTPUT_TAR" linux-x64/
# 显示结果
echo ""
echo "=============================================="
echo "构建打包完成!"
echo "输出文件:$OUTPUT_TAR"
echo "文件大小:$(ls -lh "$OUTPUT_TAR" | awk '{print $5}')"
echo "=============================================="
echo ""
echo "Linux 运行所需文件清单:"
echo " - impress_asr (CLI 工具)"
echo " - config.toml (可选,配置文件)"
echo " - models/ (模型文件目录)"
echo " - dist/ (前端资源)"
echo "=============================================="