From 4f090bd873708e49df9e511f4b653739a2bce8eb Mon Sep 17 00:00:00 2001 From: Olia Lisa Date: Tue, 9 Dec 2025 16:26:00 +0800 Subject: [PATCH] update --- bin/utils/base.sh | 23 ++++++++++++++++++++++- install.sh | 37 +++++++++++++++---------------------- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/bin/utils/base.sh b/bin/utils/base.sh index 75c98ca..456541c 100644 --- a/bin/utils/base.sh +++ b/bin/utils/base.sh @@ -49,6 +49,27 @@ check_bash_installed() { fi } +# 动态安装软件包 +install_package() { + local package_name=$1 + if command -v "$package_name" &> /dev/null; then + echo "$package_name 已安装, 跳过." + return 0 + fi + + echo "安装 $package_name..." + package_manager=$(get_package_manager) + if [ "$package_manager" == "apt-get" ]; then + sudo apt-get update + sudo apt-get install -y "$package_name" + elif [ "$package_manager" == "yum" ]; then + sudo yum install -y "$package_name" + else + echo "未知的包管理器, 请手动安装 $package_name." + return 1 + fi +} + # 生成密码 gen_password() { @@ -59,4 +80,4 @@ gen_password() { rand=$(< /dev/urandom tr -dc "$chars" | head -c "$pass_length") echo "$rand" -} \ No newline at end of file +} diff --git a/install.sh b/install.sh index 0453746..374cdbf 100644 --- a/install.sh +++ b/install.sh @@ -7,36 +7,29 @@ source "${script_dir}/utils/base.sh" check_bash_installed install(){ - if command -v docker >/dev/null 2>&1; then - echo "docker 已安装, 跳过." - else + if ! command -v curl >/dev/null 2>&1; then + install_package curl + fi + + if ! command -v wget >/dev/null 2>&1; then + install_package wget + fi + + if ! command -v jq >/dev/null 2>&1; then + echo 安装jq... + install_package jq + fi + + if ! command -v docker >/dev/null 2>&1; then echo 安装docker... curl -fsSL https://get.docker.com | bash -s docker fi - if command -v docker-compose >/dev/null 2>&1; then - echo "docker-compose 已安装, 跳过." - else + if ! command -v docker-compose >/dev/null 2>&1; then echo 安装docker-compose... wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-linux-x86_64 chmod +x /usr/local/bin/docker-compose fi - - if command -v jq >/dev/null 2>&1; then - echo "jq 已安装, 跳过." - else - echo 安装jq... - package_manager=get_package_manager - if [ "$package_manager" == "apt" ]; then - sudo apt-get update - sudo apt-get install -y jq - elif [ "$package_manager" == "yum" ]; then - sudo yum install -y jq - else - echo "未知的包管理器, 请手动安装jq." - exit 1 - fi - fi } # 显示菜单