fix(deploy): 修两处安装器 bug——下载地址多了一段 /releases、菜单选 4(只体检)不生效
Ubuntu 24.04 实机跑出来的两个问题(用户贴的输出各暴露一个): 1. **下载地址变成 .../releases/releases/download/...**(必然 404):GITHUB_RELEASES_PAGE 本身 已经以 /releases 结尾,拼接时又写了一遍。install.sh 与 classhelper 各有一份,都改用新增的 GITHUB_REPO_URL(不含 /releases);GITHUB_RELEASES_PAGE 只留给"发布页"这类展示用途。 2. **菜单里选 4)只体检,却直接开始安装**:CHECK_ONLY 的分流写在菜单**之前**,菜单里再把它置 1 已经没人看。现在把 root 检查与 tee 都挪到菜单之后,菜单选 4 与 --check 走同一条路 —— 顺带让非 root 用户也能看到菜单并选 4,不必非得记住 --check。
This commit is contained in:
1 parent
2be8d30376
commit
5d2fa2d6b4
2 files changed
+25
-9
No files matched your search
+5
-2
@@ -30,7 +30,8 @@ DEFAULT_LOG_DIR="/var/log/classhelper"
|
||||
DEFAULT_BACKUP_DIR="/var/backups/classhelper"
|
||||
REPO_SLUG="LoveChengke/ClassHelper"
|
||||
GITHUB_API="https://api.github.com/repos/${REPO_SLUG}"
|
||||
GITHUB_RELEASES_PAGE="https://github.com/${REPO_SLUG}/releases"
|
||||
GITHUB_REPO_URL="https://github.com/${REPO_SLUG}"
|
||||
GITHUB_RELEASES_PAGE="${GITHUB_REPO_URL}/releases"
|
||||
# GitHub 对没有 User-Agent 的请求直接 403
|
||||
HTTP_UA="ClassHelper-Ops"
|
||||
CURL_OPTS=(-fsSL --max-time 20 -H "User-Agent: ${HTTP_UA}")
|
||||
@@ -1115,8 +1116,10 @@ resolve_download() { # $1=版本(可空) $2=url(可空);输出下载地址
|
||||
if [ -n "$want" ]; then tag="v${want#v}"; else tag="$(github_latest_tag)" || true; fi
|
||||
[ -n "$tag" ] || return 1
|
||||
ver="${tag#v}"
|
||||
# 用 GITHUB_REPO_URL(不含 /releases)拼接:GITHUB_RELEASES_PAGE 已以 /releases 结尾,
|
||||
# 拼错就成了 .../releases/releases/download/... 必然 404(install.sh 里踩过同一个坑)。
|
||||
printf '%s/releases/download/%s/classhelper-server-linux-%s-%s.tar.gz' \
|
||||
"$GITHUB_RELEASES_PAGE" "$tag" "$(asset_arch)" "$ver"
|
||||
"$GITHUB_REPO_URL" "$tag" "$(asset_arch)" "$ver"
|
||||
}
|
||||
|
||||
download_to() { # $1=url $2=目标文件
|
||||
|
||||
+20
-7
@@ -75,7 +75,8 @@ MYSQL_PASSWORD=""
|
||||
|
||||
# 服务端安装包(默认取 GitHub Release 上的 Linux 资产)
|
||||
REPO_SLUG="LoveChengke/ClassHelper"
|
||||
GITHUB_RELEASES_PAGE="https://github.com/${REPO_SLUG}/releases"
|
||||
GITHUB_REPO_URL="https://github.com/${REPO_SLUG}"
|
||||
GITHUB_RELEASES_PAGE="${GITHUB_REPO_URL}/releases"
|
||||
PACKAGE_URL=""
|
||||
PACKAGE_SHA256=""
|
||||
VERSION=""
|
||||
@@ -532,8 +533,10 @@ resolve_package_url() {
|
||||
fi
|
||||
fi
|
||||
ver="${tag#v}"
|
||||
# 注意这里用 GITHUB_REPO_URL 而不是 GITHUB_RELEASES_PAGE:后者本身已经以 /releases 结尾,
|
||||
# 再拼一次就变成 .../releases/releases/download/... (必然 404,实测踩到)。
|
||||
printf '%s/releases/download/%s/classhelper-server-linux-%s-%s.tar.gz' \
|
||||
"$GITHUB_RELEASES_PAGE" "$tag" "$(asset_arch)" "$ver"
|
||||
"$GITHUB_REPO_URL" "$tag" "$(asset_arch)" "$ver"
|
||||
}
|
||||
|
||||
# 下载 + 校验 + 解压;结果放进全局 STAGE_DIR(不用命令替换取,否则会把日志一起捕获)
|
||||
@@ -1154,12 +1157,27 @@ print_result() {
|
||||
main() {
|
||||
parse_args "$@"
|
||||
|
||||
# `--check` 与菜单里的"4) 只体检"是同一条路:都不需要 root、都不改动系统。
|
||||
# 菜单必须出现在 root 检查**之前** —— 否则非 root 用户连菜单都看不到,只能靠 --check。
|
||||
if [ "$CHECK_ONLY" = "1" ]; then
|
||||
banner
|
||||
check_only
|
||||
exit $?
|
||||
fi
|
||||
|
||||
banner
|
||||
detect_os
|
||||
info "系统:${OS_NAME:-未知}|包管理器:${PKG:-未知}|架构:$(uname -m)"
|
||||
choose_mode_interactive
|
||||
|
||||
# 菜单里选了 4:到这里才分流。
|
||||
# (原来这段判断写在菜单**之前**,从菜单选 4 时 CHECK_ONLY 设了也没人看 —— 实测踩到:
|
||||
# 用户选"只体检",脚本却直接开始安装。)
|
||||
if [ "$CHECK_ONLY" = "1" ]; then
|
||||
check_only
|
||||
exit $?
|
||||
fi
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
if [ -n "$SCRIPT_PATH" ]; then
|
||||
die "请用 root 执行:sudo bash ${SCRIPT_PATH}(只体检不需要 root:加 --check)"
|
||||
@@ -1167,7 +1185,6 @@ main() {
|
||||
die "请用 root 执行:在刚才那条命令前面加 sudo(只体检不需要 root:末尾加 --check)"
|
||||
fi
|
||||
|
||||
banner
|
||||
mkdir -p "$LOG_DIR" && chmod 700 "$LOG_DIR"
|
||||
{
|
||||
printf '\n===== %s 安装开始 =====\n' "$(date '+%F %T')"
|
||||
@@ -1176,10 +1193,6 @@ main() {
|
||||
# 后续输出同时进日志(tee 不占 stdin,交互问答照常)
|
||||
exec > >(tee -a "$LOG_FILE") 2>&1
|
||||
|
||||
detect_os
|
||||
info "系统:${OS_NAME:-未知}|包管理器:${PKG:-未知}|架构:$(uname -m)"
|
||||
|
||||
choose_mode_interactive
|
||||
collect_answers
|
||||
# 把最终生效的选择打出来:非交互(--yes)或问答被跳过时,这一行是唯一能看出"到底按什么装的"地方
|
||||
info "本次安装:形态 ${MODE}|目录 ${INSTALL_DIR}|端口 ${PORT}|数据库 ${DB_KIND}|Node ${NODE_SOURCE}"
|
||||
|
||||
Reference in new issue
Block a user