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