布局说明

最后更新于:2022-04-02 03:54:37

[TOC] ## 目录说明 | 目录 | 说明 | macros宏名 | | --- | --- | --- | | BUILD | 编译rpm包的临时目录 | %_builddir | | RPMS | 存放由rpmbuild最终制作好的二进制包 | %_rpmdir | | SOURCES | 所有源代码和补丁文件的存放目录 | %_sourcedir | | SPECS | 存放SPEC文件的目录(重要) | %_specdir | | SPRMS | 最终生成的二进制源码包所在目录 | %_srcrpmdir | > 只有 root 权限才能编译 1. 把`%_sourcedir`的内容解压或复制到`%_builddir` 2. 把`%_builddir`的文件以**实际安装的目录结构**进行组装到`%_buildrootdir`(如:把而二进制放到 `/usr/bin/`,则在`%_buildrootdir`中也是`/usr/bin`) 3. 然后,需要配置一些必要的工作,比如在实际安装前的准备啦,安装后的清理啦,以及在卸载前后要做的工作啦等等,这样也都是通过配置在SPEC文件中来告诉`rpmbuild`命令;  5. 还有一步可选操作,那就是检查软件是否正常运行;  6. 最后,生成的RPM包放置到`%_rpmdir`,源码包放置到`%_srpmdir`下。 ## .sepc 头配置 |SPEC指令|定义| |---|---| |Name| 包名,与SPEC文件名匹配。| |Version | 软件的上游版本号。| |Release| 此软件版本发布的次数。通常,将初始值设置为`1%{?dist}`,| | Summary| 程序包的简短的单行摘要| | License| 打包软件的许可证。通常为 `GPL`| | URL| 项目网址| | Group|软件分组如:如 `Group:Applications/Communications` 应用/通讯| |Source0 |source来指定构建需要的源代码source0: tair-2.1.0-src.tar.gz例如:Source1,Source2,Source3,依此类推。 | |Patch0 | 必要时将应用于源代码的第一个修补程序的名称。| |BuildArch | 如果程序包不依赖于体系结构,例如,如果完全使用解释性编程语言编写,则将此设置为**BuildArch: noarch**。如果未设置,则软件包将自动继承构建该软件包的计算机的体系结构,例如x86_64。| | BuildRequires| 以逗号或空格分隔的软件包依赖列表,如:buildRequires: tbsys >= 2.0 | |Requires |以逗号或空格分隔,可指定各阶段的依赖如:Requires(post): tbsys,或Requires: tbsys | |ExcludeArch | 如果某个软件不能在特定的处理器体系结构上运行,则可以在此处排除该体系结构。| |exclusiveArch| 指定编译平台,如 `exclusiveArch: i386 x86-64`| |excludeOs| 不包括此编译平台 excludeOs:windows | |exclusiveOs| 指定编译平台 exclusiveOs:windows| |buildroot|指定编译的buildroot 目录 如 buildroot: %{_tmppath}/%{name}-%{version}-root 安装到 /tmp目录下| | Autoreq | `Autoreq:0`,禁用依赖检查` ## 打包阶段 |阶段|目录行为 | 具体动作| |---|---|---| |%pre | -| rpm 安装前制行的脚本| |%post | - | rpm 安装后执行的脚本 | | %preun | - | rpm 卸载前执行的脚本 | | %postun | - |rpm 卸载后执行的脚本 | | %prep|%_sourcedir -> %_builddir| 将 %_sourcedir 加压到 %_builddir | |%build |%_builddir | ./configure && make` 编译 %_builddir 的文件 | |%install | %_builddir -> %_buildrootdir |读取位于 %_builddir 构建目录下的文件并将其安装至 %_buildrootdir 目录 | |%check | %_builddir | `make test`检查软件是否正常运行,很多软件包都不需要此步 | |%clean | %_buildrootdir | 如:`rm -rf %{buildroot}`| %description|- | 软件描述 | |%files|- |rpm要包含的文件 ,如`/*` 表示所有文件 | |%changelog |- | 修改日志 | > 以上阶段如果没有操作的话,为空,但是不能有空行 ### %prep ``` %setup -q -T -a 0 -a 7 -a 10 -c -n %{src_dir} 参数列表: -T 禁止自动解压源码文件 -D 解压前不删除目录 -a 切换目录前,解压指定Source文件,例如-a 0表示解压Source0 -b 切换目录后,解压指定Source文件,例如-a 0表示解压Source0 -n 解压后目录名称与RPM名称不同,则通过该参数指定切换目录 -c 解压缩之前先生成目录 ```
';