spec文件
1.rpm构建环境相关命令:
需要安装: yum install rpm-build yum install rpmdevtools
rpmdev-setuptree #默认在/root/下新建工作目录,需要先安装rpmdevtools
rpmdev-newspec #新建spec文件
或者从/etc/rpmdevtools这个目录下copy相应的spec模板来修改
2.目录结构
~/rpmbuild
~/rpmbuild/SOURCES #放置打包资源,包括源码打包文件和补丁文件等
~/rpmbuild/SPECS #放置SPEC文档
~/rpmbuild/BUILD #打包过程中的工作目录
~/rpmbuild/RPMS #存放生成的二进制包
~/rpmbuild/RPMS/x86_64 #存放生成的x86_64结构包
~/rpmbuild/SRPMS #存放生成的源码包
源码包和二进制包的区别:
二进制包里面包括了已经经过编译,可以马上运行的程序。你只需要下载和解包(安装)它们以后,就马上可以使用;
源代码包里面包括了程序原始的程序代码(一般包括tar包、patch、spec文件...)。
3.rpmbuild 命令
-bp #只执行spec的%pre 段(解开源码包并打补丁,即只做准备)
-bi #执行spec中%pre,%build与%install(准备,编译并安装)
-bl #检查spec中的%file段(查看文件是否齐全)
-bb #只建立二进制包(常用)
-bs #只建立源码包
4.一个简单的例子:
http://blog.csdn.net/younger_china/article/details/53131128
5. 实例
Name: es_docker Version: 5.6 Release: 1%{?dist} Summary: es_docker License: GPL Source0: es_docker-5.6.tgz #将需要打包的文件压缩放置SOURCES/ %description %prep %setup -q %install echo "es_docker Install" mkdir -p %{buildroot}/usr/vtm/es_docker/ echo %{buildroot} #为BUILD目录 pwd cp -rf * %{buildroot}/usr/vtm/es_docker/ %post cd /usr/vtm/es_docker/ cp docker-compose /usr/bin/ chmod 755 /usr/bin/docker-compose echo "es_docker Installation Done!" %files %doc /usr/vtm/es_docker/* %changelog
整理:
预处理%prep
用来准备要编译的软件。通常,这一段落将归档中的源代码解压,并应用补丁
宏%setup
这个宏解压源代码,将当前目录改为源代码解压之后产生的目录(BUILD/es_docker-5.6/)
安装%install
定义在安装软件包时将执行命令,将已编译的软件安装到虚拟的目录结构中,从而可以打包成一个 RPM
%post
软件安装完成后的所需执行的配置工作
清理%clean
保证下次构建之前 Buildroot 被清空
文件%files
定义软件包所包含的文件,分为三类:说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。
在虚拟根目录下进行,千万不要写绝对路径,而应用宏或变量表示相对路径
%defattr (-,root,root)
指定包装文件的属性