From 52a911f57b26f8d9c1d5908a3e4af3aed80d19a7 Mon Sep 17 00:00:00 2001 From: hsc Date: Sat, 26 Apr 2025 18:43:41 +0800 Subject: [PATCH] =?UTF-8?q?feat(env):=20=E6=B7=BB=E5=8A=A0=20Go=20?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E5=AE=89=E8=A3=85=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 init_go.sh 脚本,用于在 CentOS 系统上安装、卸载和清理 Go 语言环境- 脚本功能包括: - 安装必要依赖 - 下载并安装指定版本的 Go - 配置环境变量 - 验证安装 - 卸载 Go - 清理缓存 - 支持安装最新版本或指定版本的 Go - 提供详细的日志输出和错误处理 --- app/{ => java}/run.sh | 0 env/init_go.sh | 203 ++++++++++++++++++++++++++++++++++++++++ {sh => env}/init_jdk.sh | 0 3 files changed, 203 insertions(+) rename app/{ => java}/run.sh (100%) create mode 100644 env/init_go.sh rename {sh => env}/init_jdk.sh (100%) diff --git a/app/run.sh b/app/java/run.sh similarity index 100% rename from app/run.sh rename to app/java/run.sh diff --git a/env/init_go.sh b/env/init_go.sh new file mode 100644 index 0000000..1a3dd90 --- /dev/null +++ b/env/init_go.sh @@ -0,0 +1,203 @@ +#!/bin/bash + +# ============================================== +# Go 语言安装脚本 for CentOS +# 版本:1.3 +# 作者:您的名字 +# ============================================== + +# 启用严格模式 +set -euo pipefail + +# -------------------------- +# 配置区(可根据需要修改) +# -------------------------- +GO_VERSION="1.22.0" # 默认安装版本 +INSTALL_DIR="/usr/local" # 安装目录 +GOPATH="$HOME/go" # GOPATH 设置 +PROFILE_FILE="/etc/profile.d/go.sh" # 环境变量文件 + +# -------------------------- +# 颜色定义 +# -------------------------- +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[0;33m' +NC='\033[0m' # No Color + +# -------------------------- +# 日志函数 +# -------------------------- +log_info() { + echo -e "${GREEN}[INFO]${NC} $1" +} + +log_warn() { + echo -e "${YELLOW}[WARN]${NC} $1" +} + +log_error() { + echo -e "${RED}[ERROR]${NC} $1" >&2 +} + +# -------------------------- +# 检查root权限 +# -------------------------- +check_root() { + if [ "$(id -u)" -ne 0 ]; then + log_error "请使用root用户或通过sudo运行此脚本" + exit 1 + fi +} + +# -------------------------- +# 安装依赖 +# -------------------------- +install_deps() { + log_info "正在安装必要依赖..." + yum install -y curl tar gzip wget git make gcc +} + +# -------------------------- +# 获取最新Go版本 +# -------------------------- +get_latest_version() { + log_info "正在获取最新Go版本..." + local latest + latest=$(curl -s https://go.dev/VERSION?m=text | head -1) + if [[ "$latest" =~ ^go[0-9]+\.[0-9]+\.[0-9]+$ ]]; then + GO_VERSION="${latest#go}" + log_info "检测到最新版本: ${GO_VERSION}" + else + log_warn "无法获取最新版本,使用默认版本: ${GO_VERSION}" + fi +} + +# -------------------------- +# 下载Go安装包 +# -------------------------- +download_go() { + local url="https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz" + local tmp_file="/tmp/go${GO_VERSION}.tar.gz" + + if [ -f "$tmp_file" ]; then + log_info "发现本地缓存安装包,跳过下载" + return + fi + + log_info "正在下载Go ${GO_VERSION}..." + if ! curl -fSL --progress-bar -o "$tmp_file" "$url"; then + log_error "下载失败,请检查网络连接或版本是否存在" + exit 1 + fi +} + +# -------------------------- +# 安装Go +# -------------------------- +install_go() { + local tmp_file="/tmp/go${GO_VERSION}.tar.gz" + + log_info "正在安装Go到 ${INSTALL_DIR}..." + tar -C "$INSTALL_DIR" -xzf "$tmp_file" + rm -f "$tmp_file" +} + +# -------------------------- +# 配置环境变量 +# -------------------------- +setup_env() { + log_info "正在配置环境变量..." + + # 创建环境变量文件 + cat > "$PROFILE_FILE" < /dev/null; then + log_error "Go安装失败,请检查错误" + exit 1 + fi + + echo -e "\n${GREEN}Go安装成功!${NC}" + echo "=============================" + go version + echo "GOROOT: $(go env GOROOT)" + echo "GOPATH: $(go env GOPATH)" + echo "=============================" +} + +# -------------------------- +# 卸载Go +# -------------------------- +uninstall_go() { + log_info "正在卸载Go..." + rm -rf "${INSTALL_DIR}/go" + rm -f "$PROFILE_FILE" + log_info "Go已卸载" +} + +# -------------------------- +# 清理缓存 +# -------------------------- +clean_cache() { + log_info "正在清理缓存..." + rm -f "/tmp/go${GO_VERSION}.tar.gz" + log_info "缓存已清理" +} + +# -------------------------- +# 主函数 +# -------------------------- +main() { + case "$1" in + install) + check_root + install_deps + + # 如果想安装最新版本,取消下面注释 + # get_latest_version + + download_go + install_go + setup_env + verify_install + + log_info "安装完成!请重新登录或运行 'source ${PROFILE_FILE}' 使环境变量生效" + ;; + uninstall) + check_root + uninstall_go + ;; + clean) + clean_cache + ;; + *) + echo "用法: $0 {install|uninstall|clean}" + echo " install 安装Go" + echo " uninstall 卸载Go" + echo " clean 清理缓存" + exit 1 + ;; + esac +} + +# -------------------------- +# 执行主函数 +# -------------------------- +main "$@" +exit 0 diff --git a/sh/init_jdk.sh b/env/init_jdk.sh similarity index 100% rename from sh/init_jdk.sh rename to env/init_jdk.sh