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
166 lines
4.0 KiB
Bash
Executable File
166 lines
4.0 KiB
Bash
Executable File
#!/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 "$@"
|