安装rpm-build软件包,编写SPEC配置文件,创建新的RPM软件包。 配置文件中的描述信息如表-2: [root@host04 ~]# yum -y install rpm-build #安装rpm-build软件包 生成rpmbuild目录结构 [root@host04 ~]# rpmbuild -ba nginx.spec #会报错,没有文件或目录 错误:stat /root/nginx.spec 失败:没有那个文件或目录 [root@host04 ~]# ls /root/rpmbuild #自动生成的目录结构 BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
BUILD目录:制作车间,二进制tar.gz包的解压后存放的位置,并在此目录进行编译安装 BUILDROOT目录:此目录是在BUILD目录中执行完make install之后生成的目录,里面存放的是编译安装好的文件,他是./configure中—prefix指定path的根目录 RPMS目录:存放制作好的rpm包 SOURCES目录:存放源代码 SPECS目录:存放SPEC文件 SRPMS目录:存放编译好的二进制rpm包
准备工作,将源码软件复制到SOURCES目录 [root@host04 ~]# cp nginx-1.12.2.tar.gz /root/rpmbuild/SOURCES/ 自定义软件包基本参数:
Name 软件包名字 Version 软件包版本 Release 软件包修订号 Summary 软件包简单描述 Group 软件包所属组。必须是系统定义好的组 License 软件授权方式,通常就是GPL Vendor 软件包发型厂商 Packager 软件包打包者 URL 软件包的url Source 定义打包所需的源码包,可以定义多个,后面使用%{SOURCE}调用 Patch 定义补丁文件,后面可以使用%{Patch}调用 BuildRoot 定义打包时的工作目录 BuildRequires 定义打包时依赖的软件包 Requires 定义安装时的依赖包,形式为Package name 或者 Package >= version Prefix %{_prefix}| %{_sysconfdir} : %{_prefix} 这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能 %{_sysconfdir} 这个原因和上面的一样,但由于%{_prefix}指/usr,而对于其他的文件,例如/etc下的配置文件,则需要用%{_sysconfdir}标识 %package 定义一个子包