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