安装最新版本的minio

MinIO 安全漏洞(CVE-2025-62506)
解决方案:立即升级到 RELEASE.2025-10-15T17-29-55Z 或更高版本

 

1)下载并安装二进制文件(Linux x86_64)

# 下载最新稳定版
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# 或使用国内镜像加速
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio

# 赋予执行权限并安装到系统路径
chmod +x minio
sudo mv minio /usr/local/bin/

# 验证版本
minio --version

# minio version RELEASE.2025-07-23T15-54-02Z

 

最新稳定版minio未修复该漏洞,需安装最新社区版minio

而最新社区版没有预编译的二进制文件,只能编译安装

本地下载virtualbox,并安装一台虚拟机(openEuler 22.03),来编译安装最新的minio

2)编译安装minio

# 由于MinIO官方在特定版本后可能不直接提供二进制文件,我们需要从代码仓库获取
# 直接从GitHub克隆MinIO的仓库,并切换到你要编译的特定版本(RELEASE.2025-10-15T17-29-55Z)

mkdir -p ~/minio-build
cd ~/minio-build
git clone https://github.com/minio/minio.git
cd minio
git fetch --all --tags
git checkout  RELEASE.2025-10-15T17-29-55Z
git branch
go env -w GOPROXY=https://goproxy.cn,direct 
go mod download

# 直接go build编译,查看不到具体的版本信息
# 获取版本号(假设当前在正确的发布标签上)
VERSION=$(git describe --tags --abbrev=0)
COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date -u '+%Y-%m-%dT%H:%M:%SZ')

# 使用完整版本信息构建
go build -o minio \
  -trimpath \
  -ldflags="-s -w \
    -X github.com/minio/minio/cmd.Version=${VERSION} \
    -X github.com/minio/minio/cmd.ReleaseTag=${VERSION} \
    -X github.com/minio/minio/cmd.CommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.ShortCommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.BuildTime=${BUILD_TIME}"
# 编译耗时约10min

file minio
./minio --version

 

git clone xxx 速度太慢

 

⚙️ 配置Git参数优化性能

通过调整Git的配置,可以提升克隆大型仓库时的效率

# 启用最高级别压缩,减少传输数据量
git config --global core.compression 9
# 设置大文件缓冲区,避免传输中断
git config --global http.postBuffer 524288000
# 使用多线程处理数据包
git config --global pack.threads 4

 

编译安装minio RELEASE.2025-10-15T17-29-55Z
执行go build -o minio耗时太长,如何优化?

 

问题的核心在于首次构建时需要下载大量依赖,这是 go build耗时长的主要原因

针对这个场景,优化速度的核心思路是:“一次下载,多次复用”。

 

第一步:立即生效的临时解决方案(最快)

如果你只是想立刻完成这次构建,可以先让下载在后台完成,后续构建就会很快。

  1. 预先下载所有依赖(不编译):

    • go mod download
      
      # 这个命令会下载 go.mod文件中定义的所有依赖到本地缓存($GOPATH/pkg/mod),但不会进行编译。它比 go build更快,因为只处理网络下载。之后你再运行 go build -o minio就会直接使用缓存,速度极大提升。

       

  2. (推荐)使用代理加速下载

    国内网络访问某些仓库(如 golang.org/x/...)可能很慢。设置 Go 模块代理可以显著加速。

    • # 在构建命令前设置环境变量(Linux/macOS)
      export GOPROXY=https://goproxy.cn,direct
      go build -o minio
      
      # direct表示代理失败时直接回源。

       

第二步:长期有效的根本优化方案

为了让后续的所有 go build都更快,你需要持久化配置并利用好缓存

  1. 永久设置 Go 代理(一劳永逸):

  2. 理解和保护 Go 构建缓存

    • 不要随意执行 go clean -cachego clean -modcache,这会清空缓存导致一切重来。

    • 缓存位置可通过 go env GOCACHE查看。确保该目录所在磁盘有足够空间。

  3. 为 CI/CD 或 Docker 构建优化

    如果是在 CI 流水线或 Docker 中构建,可以分层处理,将依赖下载与代码编译分离,充分利用 Docker 层缓存。

    优化后的 Dockerfile 示例

    • # 阶段1:依赖下载层
      FROM golang:1.23-alpine AS builder
      WORKDIR /app
      COPY go.mod go.sum ./
      RUN go mod download  # 这行会被缓存,只要 go.mod/go.sum 不变
      
      # 阶段2:编译层
      COPY . .
      RUN CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o minio ./cmd/minio
      
      # 阶段3:生成最终镜像
      FROM alpine:latest
      COPY --from=builder /app/minio /usr/local/bin/minio
      ENTRYPOINT ["minio"]

       

第三步:针对 minio项目的特别提示

您构建的 minio版本(RELEASE.2025-10-15T17-29-55Z)是一个特定的提交。请确保您的构建步骤是:

# 1. 克隆仓库(如果还没做)
git clone https://github.com/minio/minio.git
cd minio

# 2. 切换到指定版本
git checkout RELEASE.2025-10-15T17-29-55Z

# 3. (关键!)预先下载依赖
export GOPROXY=https://goproxy.cn,direct go mod download #
4. 开始编译 go build -o minio # 注意:minio项目本身较大,依赖复杂,即使使用缓存,编译时间也可能需要几十秒到几分钟(取决于你的机器性能)。这是正常现象。

 

    

 

如图,为何看不到详细的版本信息?

image

根据图片显示的信息,您看到的版本是 DEVELOPMENT.GOGET​ 而不是具体的版本号,这是因为您使用了 go getgo build直接从源码构建的方式,没有通过正式的发布流程。

🔍 原因分析

1. 构建方式问题

  • 您使用了 go build直接从源代码构建

  • 这种方法不会嵌入正式的版本标签信息

  • 构建工具无法自动检测到 git 标签信息

2. MinIO 的版本嵌入机制

MinIO 在构建时,需要通过 -ldflags向 Go 编译器传递版本信息。通常包含:

  • 版本号

  • 提交哈希

  • 构建时间

  • 版权信息

💡 解决方案

方法1:通过 Git 标签构建(推荐)

如果仓库有相应的 git 标签,可以这样构建:

# 进入 minio 源码目录
cd minio

# 获取版本号(假设当前在正确的发布标签上)
VERSION=$(git describe --tags --abbrev=0)
COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date -u '+%Y-%m-%dT%H:%M:%SZ')

# 使用完整版本信息构建
go build -o minio \
  -trimpath \
  -ldflags="-s -w \
    -X github.com/minio/minio/cmd.Version=${VERSION} \
    -X github.com/minio/minio/cmd.ReleaseTag=${VERSION} \
    -X github.com/minio/minio/cmd.CommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.ShortCommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.BuildTime=${BUILD_TIME}"

 

方法2:手动指定版本信息

如果您知道要构建的具体版本:

# 设置版本信息
VERSION="RELEASE.2025-10-15T17-29-55Z"
COMMIT="RELEASE.2025-10-15T17-29-55Z"
BUILD_TIME=$(date -u '+%Y-%m-%dT%H:%M:%SZ')

# 使用 ldflags 传递版本信息
go build -o minio \
  -trimpath \
  -ldflags="-s -w \
    -X github.com/minio/minio/cmd.Version=${VERSION} \
    -X github.com/minio/minio/cmd.ReleaseTag=${VERSION} \
    -X github.com/minio/minio/cmd.CommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.ShortCommitID=${COMMIT} \
    -X github.com/minio/minio/cmd.BuildTime=${BUILD_TIME}"

 

posted on 2026-01-08 10:08  Karlkiller  阅读(58)  评论(0)    收藏  举报

导航