安装最新版本的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耗时长的主要原因。针对这个场景,优化速度的核心思路是:“一次下载,多次复用”。
第一步:立即生效的临时解决方案(最快)
如果你只是想立刻完成这次构建,可以先让下载在后台完成,后续构建就会很快。
预先下载所有依赖(不编译):
go mod download # 这个命令会下载 go.mod文件中定义的所有依赖到本地缓存($GOPATH/pkg/mod),但不会进行编译。它比 go build更快,因为只处理网络下载。之后你再运行 go build -o minio就会直接使用缓存,速度极大提升。
(推荐)使用代理加速下载:
国内网络访问某些仓库(如
golang.org/x/...)可能很慢。设置 Go 模块代理可以显著加速。
# 在构建命令前设置环境变量(Linux/macOS) export GOPROXY=https://goproxy.cn,direct go build -o minio # direct表示代理失败时直接回源。
第二步:长期有效的根本优化方案
为了让后续的所有
go build都更快,你需要持久化配置并利用好缓存。
永久设置 Go 代理(一劳永逸):
理解和保护 Go 构建缓存:
不要随意执行
go clean -cache或go clean -modcache,这会清空缓存导致一切重来。缓存位置可通过
go env GOCACHE查看。确保该目录所在磁盘有足够空间。为 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项目本身较大,依赖复杂,即使使用缓存,编译时间也可能需要几十秒到几分钟(取决于你的机器性能)。这是正常现象。
如图,为何看不到详细的版本信息?

根据图片显示的信息,您看到的版本是 DEVELOPMENT.GOGET 而不是具体的版本号,这是因为您使用了 go get或 go 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) 收藏 举报
浙公网安备 33010602011771号