Private
Public Access
1
0

perf: 优化系统依赖安装,一次性安装所有缺失依赖

将 install_sys_dep 改为 install_sys_deps,支持批量安装,
例如 `apt-get install -y curl unzip jq` 而非逐个安装。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-12 13:56:34 +08:00
parent e2d0b555b5
commit edd8ce3245

View File

@@ -103,45 +103,53 @@ get_sys_pkg_manager() {
} }
# ========== 安装系统依赖 ========== # ========== 安装系统依赖 ==========
install_sys_dep() { install_sys_deps() {
local dep=$1 local deps=("$@")
local pkg_mgr=$(get_sys_pkg_manager) local pkg_mgr=$(get_sys_pkg_manager)
if [[ -z "$pkg_mgr" ]]; then if [[ -z "$pkg_mgr" ]]; then
error "无法检测系统包管理器,请手动安装 $dep" error "无法检测系统包管理器,请手动安装: ${deps[*]}"
return 1 return 1
fi fi
info "正在安装 $dep..." info "正在安装: ${deps[*]} ..."
case "$pkg_mgr" in case "$pkg_mgr" in
apt) apt)
apt-get update -qq && apt-get install -y "$dep" apt-get update -qq && apt-get install -y "${deps[@]}"
;; ;;
yum) yum)
yum install -y "$dep" yum install -y "${deps[@]}"
;; ;;
dnf) dnf)
dnf install -y "$dep" dnf install -y "${deps[@]}"
;; ;;
apk) apk)
apk add "$dep" apk add "${deps[@]}"
;; ;;
brew) brew)
brew install "$dep" brew install "${deps[@]}"
;; ;;
pacman) pacman)
pacman -S --noconfirm "$dep" pacman -S --noconfirm "${deps[@]}"
;; ;;
esac esac
# 验证所有依赖是否安装成功
local failed=()
for dep in "${deps[@]}"; do
if command_exists "$dep"; then if command_exists "$dep"; then
success "$dep 安装成功!" success "$dep 安装成功!"
return 0
else else
error "$dep 安装失败" failed+=("$dep")
fi
done
if [[ ${#failed[@]} -gt 0 ]]; then
error "以下依赖安装失败: ${failed[*]}"
return 1 return 1
fi fi
return 0
} }
# ========== 检测并安装系统依赖 ========== # ========== 检测并安装系统依赖 ==========
@@ -205,12 +213,10 @@ check_system_deps() {
return 1 return 1
fi fi
# 自动安装依赖 # 一次性安装所有缺失的依赖
for dep in "${missing_deps[@]}"; do if ! install_sys_deps "${missing_deps[@]}"; then
if ! install_sys_dep "$dep"; then
return 1 return 1
fi fi
done
return 0 return 0
} }