#!/bin/bash # Linux 日志删除助手 - 打包脚本 # 在 UOS 环境中执行此脚本进行打包 set -e # 遇到错误立即退出 echo "==========================================" echo " Linux 日志删除助手 - 打包脚本" echo "==========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 检查是否为 root 用户 if [ "$EUID" -ne 0 ]; then echo -e "${YELLOW}提示:安装依赖需要 sudo 权限${NC}" SUDO="sudo" else SUDO="" fi # 步骤 1: 检查并安装系统依赖 echo "" echo "步骤 1/4: 检查并安装系统依赖..." echo "------------------------------------------" # 更新包列表 $SUDO apt update # 安装 Python3 和 pip(如果未安装) if ! command -v python3 &> /dev/null; then echo "安装 Python3..." $SUDO apt install -y python3 fi if ! command -v pip3 &> /dev/null; then echo "安装 pip3..." $SUDO apt install -y python3-pip fi # 安装 PyQt5 echo "安装 PyQt5..." $SUDO apt install -y python3-pyqt5 # 步骤 2: 安装 Python 依赖 echo "" echo "步骤 2/4: 安装 Python 依赖..." echo "------------------------------------------" # 安装 PyInstaller pip3 install --user pyinstaller # 确保 ~/.local/bin 在 PATH 中 export PATH="$HOME/.local/bin:$PATH" # 步骤 3: 使用 PyInstaller 打包 echo "" echo "步骤 3/4: 打包应用程序..." echo "------------------------------------------" # 获取脚本所在目录 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPT_DIR" # 清理旧的构建文件 rm -rf build dist __pycache__ *.spec # 使用 PyInstaller 打包 pyinstaller \ --onefile \ --windowed \ --name "log-cleaner" \ --add-data "gui:gui" \ --hidden-import "PyQt5.QtWidgets" \ --hidden-import "PyQt5.QtCore" \ --hidden-import "PyQt5.QtGui" \ --clean \ main.py # 步骤 4: 完成 echo "" echo "步骤 4/4: 打包完成!" echo "==========================================" echo "" echo -e "${GREEN}✓ 打包成功!${NC}" echo "" echo "可执行文件位置: dist/log-cleaner" echo "" echo "使用方法:" echo " 1. 将 dist/log-cleaner 复制到 UOS LiveCD 环境" echo " 2. 赋予执行权限: chmod +x log-cleaner" echo " 3. 运行: sudo ./log-cleaner" echo "" echo "注意事项:" echo " - 运行时需要 sudo 权限" echo " - 确保系统已安装 PyQt5 运行时库" echo "" # 检查打包结果 if [ -f "dist/log-cleaner" ]; then echo -e "${GREEN}✓ 可执行文件大小: $(du -h dist/log-cleaner | cut -f1)${NC}" else echo -e "${RED}✗ 打包失败,请检查错误信息${NC}" exit 1 fi