| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #!/bin/bash
- # ============================================
- # Claude AI Installer Linux 构建脚本
- # Build script for Linux using Tauri
- # 此脚本作为 scripts/build.js 的简单入口
- # ============================================
- # 颜色定义
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[0;33m'
- BLUE='\033[0;34m'
- CYAN='\033[0;36m'
- NC='\033[0m' # No Color
- # 切换到脚本所在目录
- cd "$(dirname "$0")"
- # 显示帮助信息
- show_help() {
- echo ""
- echo " Claude AI Installer Linux 构建脚本 (Tauri)"
- echo ""
- echo " 用法:"
- echo " ./build-linux.sh [参数]"
- echo ""
- echo " 参数:"
- echo " --debug, -d 以调试模式构建"
- echo " --skip-frontend, -s 跳过前端构建"
- echo " --help, -h 显示此帮助信息"
- echo ""
- echo " 示例:"
- echo " ./build-linux.sh 完整发布构建"
- echo " ./build-linux.sh --debug 调试构建"
- echo " ./build-linux.sh -s 跳过前端,仅构建 Tauri"
- echo ""
- echo " 输出 (发布模式):"
- echo " src-tauri/target/release/bundle/deb/*.deb (Debian 包)"
- echo " src-tauri/target/release/bundle/appimage/*.AppImage (AppImage)"
- echo " src-tauri/target/release/claude-ai-installer (可执行文件)"
- echo ""
- echo " 输出 (调试模式):"
- echo " src-tauri/target/debug/claude-ai-installer (调试版可执行文件)"
- echo ""
- echo " 前置要求:"
- echo " - Rust (https://rustup.rs/)"
- echo " - Node.js (https://nodejs.org/)"
- echo " - Linux 依赖: libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev"
- echo ""
- echo " 注意: 此脚本调用 scripts/build.js 执行实际构建"
- echo ""
- }
- # 检查是否请求帮助
- if [[ "$1" == "--help" || "$1" == "-h" ]]; then
- show_help
- exit 0
- fi
- echo ""
- echo " ========================================"
- echo " Claude AI Installer - Linux 构建"
- echo " 使用 Tauri 2.0"
- echo " ========================================"
- echo ""
- # 检查 Rust 是否安装
- if ! command -v rustc &> /dev/null; then
- echo -e " ${RED}✖${NC} 未找到 Rust,请先安装 Rust"
- echo -e " ${BLUE}ℹ${NC} 访问: https://rustup.rs/"
- exit 1
- fi
- # 显示 Rust 版本
- RUST_VERSION=$(rustc --version)
- echo -e " ${GREEN}✔${NC} Rust: $RUST_VERSION"
- # 检查 Node.js
- if ! command -v node &> /dev/null; then
- echo -e " ${RED}✖${NC} 未找到 Node.js,请先安装 Node.js"
- exit 1
- fi
- # 显示 Node.js 版本
- NODE_VERSION=$(node --version)
- echo -e " ${GREEN}✔${NC} Node.js: $NODE_VERSION"
- # 检查 Linux 依赖
- check_linux_deps() {
- local missing_deps=()
- # 检查 webkit2gtk
- if ! pkg-config --exists webkit2gtk-4.1 2>/dev/null; then
- missing_deps+=("libwebkit2gtk-4.1-dev")
- fi
- # 检查 appindicator
- if ! pkg-config --exists ayatana-appindicator3-0.1 2>/dev/null && ! pkg-config --exists appindicator3-0.1 2>/dev/null; then
- missing_deps+=("libayatana-appindicator3-dev 或 libappindicator3-dev")
- fi
- if [ ${#missing_deps[@]} -gt 0 ]; then
- echo -e " ${YELLOW}!${NC} 可能缺少以下依赖:"
- for dep in "${missing_deps[@]}"; do
- echo -e " - $dep"
- done
- echo -e " ${BLUE}ℹ${NC} 在 Ubuntu/Debian 上安装: sudo apt-get install libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf libgtk-3-dev"
- else
- echo -e " ${GREEN}✔${NC} Linux 依赖已安装"
- fi
- }
- check_linux_deps
- # 设置 Tauri 签名密钥环境变量
- if [ -f ".keys/tauri-signing.key" ]; then
- echo -e " ${GREEN}✔${NC} 找到签名密钥"
- export TAURI_SIGNING_PRIVATE_KEY=$(cat .keys/tauri-signing.key)
- export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=""
- else
- echo -e " ${YELLOW}!${NC} 未找到签名密钥 (.keys/tauri-signing.key)"
- echo -e " ${BLUE}ℹ${NC} 更新功能将不可用,构建将继续..."
- fi
- # 检查 node_modules
- if [ ! -d "node_modules" ]; then
- echo ""
- echo -e " ${YELLOW}!${NC} 未找到 node_modules,正在安装依赖..."
- npm install
- if [ $? -ne 0 ]; then
- echo -e " ${RED}✖${NC} 安装依赖失败"
- exit 1
- fi
- fi
- # 解析参数
- NODE_ARGS=""
- while [[ $# -gt 0 ]]; do
- case $1 in
- --debug|-d)
- NODE_ARGS="$NODE_ARGS --debug"
- shift
- ;;
- --skip-frontend|-s)
- NODE_ARGS="$NODE_ARGS --skip-frontend"
- shift
- ;;
- *)
- shift
- ;;
- esac
- done
- echo ""
- echo -e " ${CYAN}▶ 调用 Node.js 构建脚本...${NC}"
- echo -e " ${BLUE}ℹ${NC} 执行: node scripts/build.js $NODE_ARGS"
- echo ""
- node scripts/build.js $NODE_ARGS
- BUILD_RESULT=$?
- if [ $BUILD_RESULT -ne 0 ]; then
- echo ""
- echo -e " ${RED}✖${NC} 构建失败!"
- echo ""
- exit 1
- fi
- echo ""
|