#!/usr/bin/env bash # 定义错误处理函数 handle_error() { echo "错误:$1" exit 1 } # 检查是否提供了参数 if [ $# -eq 0 ]; then handle_error "请提供包名作为参数\n用法: $0 <包名>" fi # 获取传入的包名参数 PACKAGE_NAME="$1" # 检查文件是否存在 if [ ! -f "$PACKAGE_NAME" ]; then handle_error "文件 '$PACKAGE_NAME' 不存在" fi # 检查文件权限 if [ ! -r "$PACKAGE_NAME" ]; then handle_error "没有读取文件 '$PACKAGE_NAME' 的权限" fi # 检查是否具有sudo权限 if ! sudo -v &>/dev/null; then handle_error "没有sudo权限,请确保您有足够的权限执行此脚本" fi ## 关闭旧应用进程 #echo "正在关闭旧应用进程..." #PIDS=$(pgrep -f market-manager-gui) #if [ -z "$PIDS" ]; then # echo "没有找到正在运行的应用进程" #else # echo "找到正在运行的应用进程: $PIDS" # for PID in $PIDS; do # echo "尝试终止进程 ID: $PID" # if ! sudo kill -TERM "$PID"; then # echo "警告:尝试终止进程 ID $PID 时出错" # else # echo "已发送终止信号给进程 ID: $PID" # fi # done #fi # ## 等待进程完全关闭 #echo "等待进程关闭..." #sleep 2 # 检查是否还有残留进程 #PIDS=$(pgrep -f market-manager-gui) #if [ -z "$PIDS" ]; then # echo "所有进程已关闭" #else # echo "警告:仍有进程在运行,尝试强制关闭..." # for PID in $PIDS; do # echo "尝试强制终止进程 ID: $PID" # if ! sudo kill -KILL "$PID"; then # echo "警告:强制终止进程 ID $PID 时出错" # else # echo "已强制终止进程 ID: $PID" # fi # done # sleep 1 #fi # 先卸载旧版本 echo "正在卸载旧版本..." if ! sudo dpkg -r market-manager-gui; then echo "警告:卸载旧版本失败,可能未安装" fi # 清理APT缓存以防止冲突 echo "清理APT缓存..." sudo apt-get clean # 安装新版本 echo "正在安装 $PACKAGE_NAME..." if ! sudo dpkg -i "$PACKAGE_NAME"; then echo "安装失败,尝试修复依赖..." if ! sudo apt-get install -f -y; then handle_error "安装失败且无法修复依赖" fi # 再次清理APT缓存 sudo apt-get clean echo "修复完成,重新尝试安装..." if ! sudo dpkg -i "$PACKAGE_NAME"; then handle_error "安装最终失败" fi fi # 添加调试信息 echo "检查安装状态..." dpkg -l | grep market-manager-gui # 确保脚本执行完成 echo "安装过程完成" exit 0