impress_asr_input_rust/build-linux-package.sh
impressionyang 146c84f118
Some checks failed
Build Windows GUI / build-windows (push) Has been cancelled
Build Windows GUI / release (push) Has been cancelled
fix: 增强模型文件选择的错误处理和日志输出
- 在 settingsPage.tsx 中添加详细的 console.log 调试信息
- 改进错误处理,显示具体错误消息
- 更新构建脚本以包含 capabilities 权限配置
2026-05-22 09:47:45 +08:00

177 lines
4.4 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 项目并打包(包含 CLI 和 GUI 版本)
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/6] 清理旧的 dist 目录..."
rm -rf "$DIST_DIR"
mkdir -p "$DIST_DIR"
# 构建前端
echo ""
echo "[2/6] 构建前端..."
cd "$PROJECT_DIR/web"
npm run build
cd "$PROJECT_DIR"
# 验证前端构建
echo ""
echo "前端构建结果:"
ls -lh "$PROJECT_DIR/web/dist/"
# 编译 CLI 程序
echo ""
echo "[3/6] 编译 CLI 程序..."
cargo build --release
# 编译 GUI 程序
echo ""
echo "[4/6] 编译 GUI 程序..."
cargo build --release --features gui
# 复制必要文件
echo ""
echo "[5/6] 复制必要文件到 dist 目录..."
cp "$PROJECT_DIR/target/release/impress_asr" "$DIST_DIR/"
cp "$PROJECT_DIR/target/release/impress_asr_gui" "$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
cp "$PROJECT_DIR/icons/icon.png" "$DIST_DIR/" 2>/dev/null || true
cp "$PROJECT_DIR/icons/tray-icon.png" "$DIST_DIR/" 2>/dev/null || true
# 复制 Tauri 权限配置Tauri v2 必需)
cp -r "$PROJECT_DIR/capabilities" "$DIST_DIR/"
# 创建 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. **运行程序**
**GUI 版本(推荐)**
```bash
./impress_asr_gui
```
**CLI 版本**
```bash
./impress_asr --help
# 录音
./impress_asr record
# 识别音频文件
./impress_asr recognize -i audio.wav
```
## 📦 文件清单
| 文件 | 说明 |
|------|------|
| `impress_asr_gui` | GUI 桌面应用 |
| `impress_asr` | CLI 命令行工具 |
| `icon.png` | 应用图标 |
| `tray-icon.png` | 托盘图标 |
| `config.toml` | 配置文件(可选) |
| `models/` | 模型文件目录 |
| `dist/` | 前端资源目录 |
## 📋 系统要求
- **操作系统**Linux x64 (glibc 2.28+)
- **支持的系统**Ubuntu 18.04+, Debian 10+, CentOS 8+, RHEL 8+
- **依赖库**
- `libgtk-3-0` - GTK3 图形界面
- `libwebkit2gtk-4.1` - WebKit 浏览器引擎
- `libappindicator3-1` - 系统托盘支持
- `libasound2` - 音频支持
## ❓ 常见问题
### 错误:模型文件不存在
**解决**:下载 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
```
### GUI 版本无法启动
确保已安装 GTK3 和 WebKit2GTK 依赖:
```bash
# Ubuntu/Debian
sudo apt-get install libgtk-3-0 libwebkit2gtk-4.1-0 libappindicator3-1
# CentOS/RHEL
sudo yum install gtk3 webkit2gtk4.1 libappindicator
```
## 📝 获取帮助
```bash
# CLI 帮助
./impress_asr --help
```
---
**版本**: 0.1.0 | **构建时间**: 见文件名后缀
README_EOF
echo "文件列表:"
ls -lh "$DIST_DIR/"
# 打包成 tar.gz
echo ""
echo "[6/6] 打包成 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_gui (GUI 桌面应用)"
echo " - impress_asr (CLI 工具)"
echo " - icon.png (应用图标)"
echo " - tray-icon.png (托盘图标)"
echo " - capabilities/ (Tauri 权限配置)"
echo " - config.toml (可选,配置文件)"
echo " - models/ (模型文件目录)"
echo " - dist/ (前端资源)"
echo "=============================================="