impress_asr_input_rust/build-linux-package.sh
impressionyang 87ad8b4576 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
2026-05-21 19:54:09 +08:00

141 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 "=============================================="