图片和配置文件的RPM包的打包过程

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/

cp -ra %{_builddir}/theme-devel-pictures/backgrounds/* $RPM_BUILD_ROOT/usr/share/themes/devel/backgrounds/
cp -ra %{_builddir}/theme-devel-pictures/gtk-2.0/ $RPM_BUILD_ROOT/usr/share/themes/devel/
#cp -ra %{_builddir}/theme-devel-pictures/.backgrounds $RPM_BUILD_ROOT/home/moblin/
cp -ra %{_builddir}/theme-devel-pictures/.backgrounds $RPM_BUILD_ROOT/root/
%post
cp -ra /root/.backgrounds /home/moblin/
cd /home/moblin
chown -R moblin.moblin .backgrounds
#chown  moblin.moblin /home/moblin
#chmod 700 /home/moblin
chmod 750 /root
cd /usr/share/themes
rm -fr default
ln -s devel default
%postun
%clean
rm -rf $RPM_BUILD_ROOT

 

 

%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;

你可能感兴趣的:(图片和配置文件的RPM包的打包过程)