添加脚本
All checks were successful
Build and Release / build-and-test (arm64, alpine) (push) Successful in 13s
Build and Release / build-and-test (amd64, alpine) (push) Successful in 19s
Build and Release / build-and-test (arm64, ubuntu) (push) Successful in 24s
Build and Release / build-and-test (amd64, ubuntu) (push) Successful in 34s
Build and Release / release (push) Has been skipped

This commit is contained in:
2025-12-05 20:44:57 +08:00
parent 782d9e05bb
commit b220fdc9e9
4 changed files with 1014 additions and 0 deletions

165
script/uninstall.sh Executable file
View File

@@ -0,0 +1,165 @@
#!/bin/bash
#
# XXXigCC 卸载脚本
# 支持 tar.gz 和 DEB 包安装方式
#
set -e
declare -r RED="\033[0;31m"
declare -r GREEN="\033[0;32m"
declare -r YELLOW="\033[0;33m"
declare -r RESET="\033[0m"
# 安装路径配置
INSTALL_DIR_TARBALL="/etc/miner/xxxigcc"
INSTALL_DIR_DEB="/etc/xxxigcc"
LOG_DIR_DEB="/var/log/xxxigcc"
log() { echo -e "${1}${2}${RESET}"; }
error() { log "$RED" "错误: $1"; exit 1; }
get_os() {
grep -qi alpine /etc/os-release && echo "alpine" && return
grep -qiE 'debian|ubuntu' /etc/os-release && echo "ubuntu" && return
error "不支持的操作系统"
}
detect_installation() {
local install_type=""
# 检测 DEB 包安装
if command -v dpkg &>/dev/null && dpkg -l | grep -q "^ii.*xxxigcc"; then
install_type="deb"
# 检测 tar.gz 安装
elif [[ -d "$INSTALL_DIR_TARBALL" ]]; then
install_type="tarball"
# 检测 DEB 配置目录
elif [[ -d "$INSTALL_DIR_DEB" ]]; then
install_type="deb"
fi
echo "$install_type"
}
uninstall_alpine_tarball() {
log "$YELLOW" "卸载 Alpine tar.gz 安装..."
rc-service xxxigcc stop 2>/dev/null || true
rc-update del xxxigcc default 2>/dev/null || true
rm -rf "$INSTALL_DIR_TARBALL" /etc/init.d/xxxigcc
log "$GREEN" "Alpine tar.gz 安装已卸载"
}
uninstall_ubuntu_tarball() {
log "$YELLOW" "卸载 Ubuntu/Debian tar.gz 安装..."
systemctl stop xxxigcc 2>/dev/null || true
systemctl disable xxxigcc 2>/dev/null || true
rm -rf "$INSTALL_DIR_TARBALL" /etc/systemd/system/xxxigcc.service
systemctl daemon-reload 2>/dev/null || true
log "$GREEN" "Ubuntu/Debian tar.gz 安装已卸载"
}
uninstall_deb_package() {
log "$YELLOW" "卸载 DEB 包..."
# 停止并禁用服务
systemctl stop xxxigcc-daemon xxxigcc-server 2>/dev/null || true
systemctl disable xxxigcc-daemon xxxigcc-server 2>/dev/null || true
# 卸载包
apt-get remove -y xxxigcc 2>/dev/null || true
# 清理配置(可选)
if [[ "$PURGE_CONFIG" == "true" ]]; then
apt-get purge -y xxxigcc 2>/dev/null || true
rm -rf "$INSTALL_DIR_DEB" "$LOG_DIR_DEB"
fi
# 清理 APT 源
rm -f /etc/apt/sources.list.d/xxxigcc.list
apt-get update -qq 2>/dev/null || true
systemctl daemon-reload 2>/dev/null || true
log "$GREEN" "DEB 包已卸载"
}
show_usage() {
cat <<EOF
用法: $0 [选项]
选项:
--purge 完全清除配置文件和日志 (仅 DEB 包)
-y, --yes 跳过确认提示
-h, --help 显示帮助信息
示例:
$0 # 交互式卸载
$0 -y # 直接卸载,不确认
$0 --purge -y # 完全清除所有文件
EOF
exit 0
}
main() {
local SKIP_CONFIRM=false
PURGE_CONFIG=false
# 解析参数
while [[ $# -gt 0 ]]; do
case "$1" in
--purge) PURGE_CONFIG=true; shift ;;
-y | --yes) SKIP_CONFIRM=true; shift ;;
-h | --help) show_usage ;;
*) error "无效选项: $1" ;;
esac
done
local os_type=$(get_os)
local install_type=$(detect_installation)
if [[ -z "$install_type" ]]; then
log "$YELLOW" "未检测到 XXXigCC 安装"
exit 0
fi
# 显示检测信息
log "$YELLOW" "检测到的安装方式: $install_type ($os_type)"
# 确认卸载
if [[ "$SKIP_CONFIRM" != "true" ]]; then
echo -n "确认卸载 XXXigCC? (y/N): "
read -r confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then
log "$YELLOW" "已取消卸载"
exit 0
fi
fi
# 根据安装类型执行卸载
case "$install_type" in
deb)
uninstall_deb_package
;;
tarball)
if [[ "$os_type" == "alpine" ]]; then
uninstall_alpine_tarball
else
uninstall_ubuntu_tarball
fi
;;
esac
log "$GREEN" "XXXigCC 已成功卸载"
if [[ "$PURGE_CONFIG" != "true" && "$install_type" == "deb" ]]; then
log "$YELLOW" "提示: 使用 '$0 --purge' 可完全清除配置文件"
fi
}
main "$@"