rpm包编译工具rpmbuild使用介绍

rpmbuild是一个命令行工具,用于构建RPM(Red Hat Package Manager)软件包。RPM是一种用于在Linux系统上安装和管理软件的标准格式。rpmbuild可以将源代码或二进制文件打包成RPM软件包,并为之配置元数据、依赖项、文件列表等。rpmbuild可以在各种Linux发行版中使用,例如Red Hat、CentOS、Fedora、SUSE、Mageia等。它是RPM构建过程的核心工具之一,常被系统管理员和开发人员使用。以下就制作rpm包过程予以介绍:

一、rpm 包制作过程

1、安装工具

# 编译工具
yum install -y gcc make

# rpm 包工作目录生成工具
yum install -y rpmdevtools

# rpm 包构建工具
yum install -y rpm-build

2、创建工作目录

2.1、手动创建

mkdir -p ~/rpmbuild/{
    
    BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

2.2、rpmdevtools 构建创建
此命令会生成一个 rpmbuild 的目录,这个目录就是制作 rpm 包的环境,需要注意的是:此命令只有在/root下执行生效,且已有rpmbuild目录时不重新创建。

cd /root/
rpmdev-setuptree

cd rpmbuild && ls
BUILD  RPMS  SOURCES  SPECS  SRPMS

各个目录的一般用途如下简介:

  • BUILD 编译rpm包的临时目录
  • BUILDROOT 编译后生成的软件临时安装目录
  • RPMS 最终生成的可安装rpm包的所在目录
  • SOURCES 所有源代码和补丁文件的存放目录
  • SPECS 存放SPEC文件的目录(重要)
  • SRPMS 软件最终的rpm源码格式存放路径

3、制作rpm包前准备

3.1、拷贝源码包或源码至SOURCES目录并编译源码二进制文件

当仓库存在MakeFile是通过make编译产生二进制文件,不存在时进行编写

3.2、书写编译脚本
spec 脚本书写请参考:https://blog.csdn.net/yuelai_217/article/details/130722081
并将spec 脚本拷贝至SPECS目录下

4、制作包

rpmbuild -ba SPECS/xxx.spec

5、安装验证

rpm -ivh xxx.rpm

二、rpmbuild 常见命令

2.1、rpmbuild 基本格式

rpmbuild [options] [spec文档|tarball包|源码包]

rpmbuild -ba nginx.spec

2.2、使用spec 文件构建选项

选项 含义
-bp 文件中安装执行前的地方
-bc 执行spec的%pre和%build 段(准备并编译)
-bi 执行spec中%pre,%build与%install(准备,编译并安装)
-bl 检查spec中的%file段(查看文件是否齐全)
-ba 建立源码与二进制包(常用)
-bb 只建立二进制包(常用)
-bs 只建立源码包

2.3、tarball包建立,与spec类似

使用源码tar包进行构建

rpmbuild -tb xxx.zip 
选项 含义
-tp 对应-bp
-tc 对应-bc
-ti 对应-bi
-ta 对应-ba
-tb 对应-bb
-ts 对应-bs

2.4、从源码包建立

选项 含义
–rebuild 建立二进制包,通-bb
–buildroot=DIRECTORY 确定以root目录建立包
–clean 完成打包后清除BUILD下的文件目录
–nobuild 不进行%build的阶段
–nodeps 不检查建立包时的关联文件
–rmsource 完成打包后清除SOURCES
–rmspec 完成打包后清除SPEC
–target=CPU-VENDOR-OS 确定包的最终使用平台

参考文档

1、https://www.shuzhiduo.com/A/D854Dy825E/

2、https://blog.51cto.com/pencild/1532569

3、https://www.cnblogs.com/Tzyyviki/p/14710479.html

猜你喜欢

转载自blog.csdn.net/yuelai_217/article/details/130741234
今日推荐