RPM包的构建
1、目录解释
├── BUILD //编译rpm包的临时目录
├── BUILDROOT //编译后生成的软件临时安装目录
├── RPMS //RPM包输出目录
│ └── x86_64
│ ├── nginx-1.23.1-el7.x86_64.rpm
│ └── nginx-debuginfo-1.23.1-el7.x86_64.rpm
├── SOURCES //打包使用的源码
│ └── nginx-1.23.1.tar.gz
├── SPECS //spec文件目录
│ └── nginx.spec
└── SRPMS //软件最终的rpm源码格式存放路径
└── nginx-1.23.1-el7.src.rpm
2、spec文件说明
存放在rpmbuild下的SPEC下
##简介段
#摘要
Summary:
#软件名称
Name:
#版本号,不能用-,只能用 .
Version: x.x.x.x
#rpm的发行号
Release:
#声明版权信息
License: GPL
#定义组,是系统存在的组
Group:
#下载的路径,或者源码包官方的路径
URL:
#软件包的制作者
Packager: xxx <>
#制作者的提供商或者制作者
Vendor:
#源码路径
Source:
#程序临时安装的目录(类似于一个虚拟跟目录)
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
#制作rpm的过程需要依赖的软件包
BuildRequires: gcc,
#安装过程需要的软件包
Requires:
#描述信息
%description
##结束
##prep段,准备阶段,解压缩源码步骤前的操作
%prep
%setup -q
##结束
##build段,构建rpm包时做的操作
%build
./configure
%{_make}
##结束
##安装阶段,install
%install
%{_rm} -rf %{_buildroot}
%{_make} install DESTDIR="%{buildroot}"
%find_lang %{name}
##结束
##脚本段
#安装前
%pre
#安装后
%post
#卸载前
%preun
#卸载完成后
%postun
##结束
##files段
%files
##结束
##清理段,clean
%clean
%{_rm} -rf %{buildroot}
##结束
##changelog,改变日志段(-开头为注释)
%changelog
* xxx
-
-
##结束
rpm打包阶段
-bp #只执行spec的%pre段(解开源码包并打补丁,即只做准备)
-bc #执行spec的%pre和%build段(准备并编译)
-bi #执行spec中%pre,%build与%install(准备,编译并安装)
-bl #检查spec中的%file段(查看文件是否齐全)
-ba #建立源码与二进制包(常用)
-bb #只建立二进制包(常用)
-bs #只建立源码包