如何根据我们的需求制作RPM安装包

如何根据我们的需求制作RPM安装包呢?手顺整理如下:
1、 自定义工作目录(或车间,即%_topdir)
vi ~/.rpmmacros 
%_topdir        /tmp/rpmbuild    ##目录可以自定义 

mkdir /tmp/rpmbuild  

2、 在topdir下建立需要的目录
cd /tmp/rpmbuild  
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

3、 把收集的源码放到SOURCES下
cp /usr/local/ffmpeg-2.8.6.tar.gz /tmp/rpmbuild/SOURCES/

4、 在SPECS下建立重要的spec文件
cd SPECS 
vi ffmpeg.spec          ##内容见sepc文件编写样例

5、 用rpmbuild命令制作rpm包,rpmbuild命令会根据spec文件来生成rpm包
1. rpmbuild  
2. -ba 既生成src.rpm又生成二进制rpm 
3. -bs 只生成src的rpm 
4. -bb 只生二进制的rpm 
5. -bp 执行到pre 
6. -bc 执行到 build段 
7. -bi 执行install段 
8. -bl 检测有文件没包含 

下面是一个完整的spec文件样例:
Name:           ffmpeg
Version:        2.8.6
Release:        1%{?dist}
Summary:        ffmpeg is a famous open sources bit images dev tools.
License:        GPLv2
URL:            http://www.ffmpeg.org
Packager:       Kotei <[email protected]>
Vendor:         Kotei-info.com
Source0:        %{name}-%{version}.tar.gz


#patch0:            a.patch        
#BuildRoot:      %_topdir/BUILDROOT  
BuildRoot:      /tmp/rpmbuild/BUILDROOT

BuildRequires:  gcc,make
#Requires:       pcre,pcre-devel,openssl,chkconfig
%description                 
It is a ffmpeg tools... 

 
%prep  
%setup -q
#%patch0 -p1


%build 
./configure  --enable-shared  --prefix=/usr/local/ffmpeg --disable-yasm
  
make %{?_smp_mflags}

%install                                
rm -rf %{buildroot}  
make install DESTDIR=%{buildroot} 
 
###  4.1 scripts section 
%pre 
#if [ $1 == 1 ];then    #$1==1 
#        /usr/sbin/useradd -r nginx 2> /dev/null 
#fi 

%post
 
%preun
#if [ $1 == 0 ];then 
#        /usr/sbin/userdel -r nginx 2> /dev/null 
#fi 

%postun
 
###
 
%clean 
rm -rf %{buildroot} 
     
%files  
%defattr (-,root,root,0755)
/usr/local/ffmpeg/ 

%changelog 
*  Fri Dec 29 2012 2.8.6-1 
-  initial verison...



具体的spec文件编写详解可以参照:
http://laoguang.blog.51cto.com/6013350/1103628
https://www.ibm.com/developerworks/cn/linux/l-rpm/

你可能感兴趣的:(如何根据我们的需求制作RPM安装包)