theme-devel.tar.gz包中没有需要编译的东西,只是需要安装的一些图片和文件,如何打成RPM包
1.在/usr/src/rpmbuild/SOURCES/目录中建好文件目录的层次结构,再压缩成tar.gz文件,
2.进入/usr/src/rpmbuild/SPECS目录,创建spec文件,
%prep部分
解压缩,进入源代码目录
%build部分
为空什么都不做,因为没有源代码
%install部分
建立临时的安装目录
把解压缩后的图片和文件copy到安装目录中
%post
改变文件目录的owner 和 attributes
二进制文件的patch解决办法:
如果是需要改变第一次打的rpm包中的图片,但是由于diff不能生成二进制文件的patch,二进制文件不能被打补丁,
那么在原来tar.gz 包不能改变的情况下,可以在%install这步中,用copy新文件覆盖原来文件的办法
然后把覆盖以后的临时安装目录树再打成RPM包就可以了。
===================================================
Summary: theme devel
Name: theme-devel
Version: 2
Release: 1%{?dist}
License: GPL
Group: Applications/System
Source0: theme-devel.tar.gz
Source1: theme-devel-pictures.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}
%description
theme devel
%prep
%setup -q -n theme-devel
%build
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/share/themes/
mkdir -p $RPM_BUILD_ROOT/root
#mkdir -p $RPM_BUILD_ROOT/home/moblin/
cp -ra devel $RPM_BUILD_ROOT/usr/share/themes/
tar zxvf $RPM_SOURCE_DIR/theme-devel-pictures.tar.gz -C %{_builddir}
cp -ra %{_builddir}/theme-devel-pictures/images/ $RPM_BUILD_ROOT/usr/share/themes/devel/
%files
%defattr(-, root, root)
/*
%changelog
* Wed Apr 28 2010 shaoning <[email protected]>
- add %post scripts
* Thu Apr 27 2010 zhangze <[email protected]>
- modify some theme pictures.
* Mon Feb 1 2010 wang baisheng <[email protected]>
- first build.
===================================================
只有文本文件可以diff生成patch,二进制文件不可以,所以如果要改变文本文件的话,可以在src rpm包中加patch。
SPEC文件是控制RPM BUILD 过程的配置文件,虽然是文本文件,但是不能给它自己打patch,所以每次修改后要在
SPEC文件最后的%changelog中记录在SPEC文件中修改了哪些内容
从开源社区拿来的源码包被修改以后,提交到SVN上时,要提交
1. 原始的source.tar.gz;
2. 添加的patch,保留原始代码不变,采用patch的方式修改源代码,
可以清晰的记录各个版本之间都修改了哪些内容,记录各个版本的变化,
最好是分多个patch打进去,而不要做成一个很大的patch,在排除问题
的时候可以很容易的发现问题出在那里,快速排除问题;
3. 以及修改了以后的SPEC文件,SPECK是文本文件,可以在SVN中形成版本追溯。
===================================
spec文件主要的作用就是控制整个打包的流程,如何控制流程:
1. 先解压tar.gz,打上patch做好build准备;
2. 再编译,如果tar.gz中的源码包是用make来管理的,那么一个make命令就可以完成全部编译,
如果没有用make,那么就只能用手动编译的方式一步一步的来编译了;
3. 然后再安装到$RPM_BUILD_ROOT的目录下,同样如果有make的话一个make install就够了,
如果没有make, 那就自己cp, mv, install 吧
4. 检查打进rpm包中的文件列表
5. 生成binary rpm, source rpm;