sonatype/centos-rpm本镜像提供隔离的RPM包构建环境,集成rpmbuild、gcc等核心工具,旨在简化各类软件的RPM包创建流程。通过容器化方式,避免构建环境依赖冲突,支持快速、可重复的RPM打包操作,适用于多场景下的软件分发需求。
rpmbuild、gcc、make等RPM构建必需工具,无需额外安装依赖。.spec规格文件(定义包元信息、构建步骤等)。.tar.gz)或补丁文件。通过Docker Hub或私有仓库拉取镜像(示例标签为centos7,其他标签参见镜像仓库说明):
bashdocker pull [镜像仓库地址]/rpm-builder:centos7
将本地.spec文件和源码挂载到容器内,执行构建命令:
bashdocker run -it --rm \ -v $(pwd)/specs:/root/rpmbuild/SPECS \ # 挂载.spec文件目录 -v $(pwd)/sources:/root/rpmbuild/SOURCES \ # 挂载源码/补丁目录 -v $(pwd)/rpms:/root/rpmbuild/RPMS \ # 挂载输出RPM目录 [镜像仓库地址]/rpm-builder:centos7 \ rpmbuild -ba /root/rpmbuild/SPECS/your-package.spec
/root/rpmbuild为容器内默认构建目录(符合rpmbuild规范结构)。RPMS目录会输出最终生成的RPM包,挂载到宿主机./rpms目录便于获取。通过环境变量RPMBUILD_DIR修改默认构建路径:
bashdocker run -it --rm \ -e RPMBUILD_DIR=/custom/build \ # 自定义容器内构建根目录 -v $(pwd)/my-build:/custom/build \ # 挂载宿主机目录到自定义路径 [镜像仓库地址]/rpm-builder:centos7 \ rpmbuild -ba /custom/build/SPECS/your-package.spec
适用于多步骤构建或需持久化缓存场景(如依赖包缓存):
yaml# docker-compose.yml version: '3' services: rpm-builder: image: [镜像仓库地址]/rpm-builder:centos7 volumes: - ./specs:/root/rpmbuild/SPECS - ./sources:/root/rpmbuild/SOURCES - ./rpms:/root/rpmbuild/RPMS - rpm-cache:/root/rpmbuild/SRPMS # 持久化缓存SRPM environment: - ARCH=x86_64 # 指定构建架构 - SPEC_FILE=your-package.spec # 默认spec文件名(可选) command: rpmbuild -ba /root/rpmbuild/SPECS/${SPEC_FILE} volumes: rpm-cache: # 缓存SRPM,加速重复构建
启动命令:docker-compose up
| 环境变量 | 默认值 | 描述 |
|---|---|---|
RPMBUILD_DIR | /root/rpmbuild | 容器内RPM构建根目录(需符合rpmbuild规范结构)。 |
SPEC_FILE | 无 | 默认.spec文件名(需配合rpmbuild命令使用)。 |
ARCH | x86_64 | 构建目标架构(如i386、arm64,需基础镜像支持)。 |
DISTRO | 基础镜像发行版 | 覆盖基础镜像的发行版标识(如centos8)。 |
-u $(id -u):$(id -g)指定用户ID,避免文件权限冲突)。BuildRequires依赖需确保在镜像中存在,缺失时可通过docker exec进入容器手动安装(如yum install -y [依赖包])。fedora38、centos-stream9),确保RPM兼容性。



manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务