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)
指定包装文件的属性

 

posted @ 2017-10-27 17:47  Hsinwang  阅读(1829)  评论(0编辑  收藏  举报