RPM 打包

发布于 2023-05-13  36 次阅读


centos 系统中的rpm打包

准备目录结构

  1. 打开终端,进入到/data/tools目录下
mkdir -p ./rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

SOURCES:存放源码包,也就是 spec 文件中定义的 Source 字段所指向的文件。
SPECS:存放规范文件,即 spec 文件。
RPMS:存放构建后的 RPM 包,即二进制 RPM 包。
SRPMS:存放源码 RPM 包。
BUILD:在build目录中,rpmbuild会执行软件包的构建操作,生成可执行文件、库文件、配置文件等。。
BUILDROOT:在buildroot目录中,rpmbuild会将build目录中生成的可执行文件、库文件、配置文件等安装到对应的目录中,这个过程叫做安装。rpmbuild打包完成后,就可以将buildroot目录中的文件和目录压缩成一个RPM包了。
  1. 将工具脚本复制到SOURCES目录下:
cp yum.sh ./rpmbuild/SOURCES/
cp color.sh ./rpmbuild/SOURCES/
cp system_check.sh ./rpmbuild/SOURCES/
cp system_tools.sh ./rpmbuild/SOURCES/
cp install_mysql_source.sh ./rpmbuild/SOURCES/
  1. 创建规范文件:
nano ./rpmbuild/SPECS/tools.spec

将以下内容复制到文件中:

# 定义包的名称、版本和发布号
Name: tools
Version: 1.0
Release: 1%{?dist}

# 简短的包描述
Summary: 这是一个用于初始化操作系统和安装系统工具的脚本套件

# 软件许可证
License: GPL

# 软件包的官方网站
URL: http://blog.beyourself.org.cn

# 指定源代码包的位置和名称
Source0: yum.sh
Source1: color.sh
Source2: system_check.sh
Source3: system_tools.sh
Source4: install_mysql_source.sh

# 包的详细描述,供用户参考
%description
这是一个用于初始化操作系统和安装系统工具的脚本套件

# 准备阶段,执行一些需要在打包之前完成的操作,如解压源码包等
%prep
%setup

# 编译阶段,对于脚本包来说是不需要编译的,所以此处留空
%build
# This section is not needed for shell scripts

# 安装阶段,将脚本安装到指定位置
%install
rm -rf %{buildroot}  
mkdir -p %{buildroot}/usr/local/bin  
mkdir -p /usr/local/tools_libs/  # 创建一个目录,用于存放脚本文件
install -D -m 755 %{SOURCE0} %{buildroot}/usr/local/tools_libs/yum.sh  # 将 yum.sh 安装到 /usr/local/tools_libs/ 目录
install -D -m 755 %{SOURCE1} %{buildroot}/usr/local/tools_libs/color.sh  # 将 color.sh 安装到 /usr/local/tools_libs/ 目录
install -D -m 755 %{SOURCE2} %{buildroot}/usr/local/tools_libs/system_check.sh  # 将 system_check.sh 安装到 /usr/local/tools_libs/ 目录
install -D -m 755 %{SOURCE3} %{buildroot}/usr/local/tools_libs/system_tools.sh  # 将 system_tools.sh 安装到 /usr/local/tools_libs/ 目录
install -D -m 755 %{SOURCE4} %{buildroot}/usr/local/tools_libs/install_mysql_source.sh  # 将 install_mysql_source.sh 安装到 /usr/local/tools_libs/ 目录

# 列出所有的文件和目录,供打包时使用
%files
%dir /usr/local/tools_libs/  # 列出 /usr/local/tools_libs/ 目录
/usr/local/tools_libs/yum.sh  # 列出 yum.sh 文件
/usr/local/tools_libs/color.sh  # 列出 color.sh 文件
/usr/local/tools_libs/system_check.sh  # 列出 system_check.sh 文件
/usr/local/tools_libs/system_tools.sh  # 列出 system_tools.sh 文件
/usr/local/tools_libs/install_mysql_source.sh  # 列出 install_mysql_source.sh 文件

# 记录软件包的更新历史
%changelog
* Fri Jan 01 2021 newrain <newrain_wang@163.com> 1.0-1
- 打包
  1. 保存并退出规范文件。
  2. 执行以下命令生成RPM包:
rpmbuild -bb ./rpmbuild/SPECS/tools.spec
  1. RPM包将被生成在./rpmbuild/RPMS/x86_64/目录下,使用以下命令可以查看:
ls ./rpmbuild/RPMS/x86_64/

rpmbuild 是一个用于构建 RPM 包的工具,可以使用不同的参数来控制其行为。下面是一些常用的 rpmbuild 参数:

  • -ba:生成二进制 RPM 包和 SRPM 包。
  • -bb:只生成二进制 RPM 包。
  • -bs:只生成 SRPM 包。
  • -bp:仅执行 %prep 和 %build 阶段,不生成 RPM 包。
  • -bc:仅执行 %build 和 %install 阶段,不生成 RPM 包。
  • -bi:仅执行 %install 阶段,不生成 RPM 包。
  • -D:定义宏,可以在 SPEC 文件中使用。
  • --define:定义宏,可以在命令行中使用。
  • -v:指定构建的 RPM 包版本号。
  • -r:指定构建的 RPM 包发布号。
  • --clean:清理之前的构建环境。
  • --target:指定目标操作系统的架构,例如 --target=x86_64 表示构建 x86_64 架构的 RPM 包。