centos 系统中的rpm打包
准备目录结构
- 打开终端,进入到/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包了。
- 将工具脚本复制到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/
- 创建规范文件:
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
- 打包
- 保存并退出规范文件。
- 执行以下命令生成RPM包:
rpmbuild -bb ./rpmbuild/SPECS/tools.spec
- 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 包。
Comments | NOTHING