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:
48
setup.sh
48
setup.sh
@@ -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
|
||||||
|
|
||||||
if command_exists "$dep"; then
|
# 验证所有依赖是否安装成功
|
||||||
success "$dep 安装成功!"
|
local failed=()
|
||||||
return 0
|
for dep in "${deps[@]}"; do
|
||||||
else
|
if command_exists "$dep"; then
|
||||||
error "$dep 安装失败"
|
success "$dep 安装成功!"
|
||||||
|
else
|
||||||
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user