Centos 6 制作 rpm 包

全栈 shanhuhai 921℃ 0评论

首先为了安全单独创建一个用户来制作rpm

useradd rpmmaker

然后切换帐号


su - rpmmaker

添加一个文件配置文件,并设置编译的根目录为 ~/rpmbuild

vi ~/.rpmmacros

添加内容


%_topdir /home/rpmmaker/rpmbuild/

:wq保存退出

在编译根目录下创建我们需要的目录


cd ~/rpmbuild
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

把tar.gz 包放在 SOURCES 目录下, 我们的包是 http://tengine.taobao.org/download/tengine-2.1.0.tar.gz
在 SPECS 目录下建立 spec 文件

cd SPECS
vi tengine.spec

添加内容


### 0.define section               #自定义宏段,这个不是必须的 
### %define nginx_user nginx       #这是我们自定义了一个宏,名字为nginx_user值为nginx,%{nginx_user}引用 

### 1.The introduction section      #介绍区域段 

#名字为tar包的名字 
Name:           tengine            
#版本号,一定要与tar包的一致哦 
Version:        2.1.0        
#释出号,也就是第几次制作rpm       
Release:        1%{?dist}      
#软件包简介,最好不要超过50字符    
Summary:        tengine from TaoBao       
#许可,GPL还是BSD等
License:        GPLv2
Packager:       Gaojianwei <gaojianwei@cmstop.com> 
Vendor:         cmstop.com 

#定义用到的source,也就是你收集的,可以用宏来表示,也可以直接写名字,上面定义的内容都可以像上面那样引用 
Source0:        %{name}-%{version}.tar.gz   

BuildRoot:      %_topdir/BUILDROOT         
#这个是软件make install 的测试安装目录,也就是测试中的根,我们不用默认的,我们自定义,
#我们可以来观察生成了哪此文件,方便写file区域 
#制作过程中用到的软件包 
BuildRequires:  gcc,make                         
 
#软件运行需要的软件包,也可以指定最低版本如 bash >= 1.1.1
Requires:       pcre,pcre-devel,openssl,chkconfig 
 #软件包描述,
%description                                       
It is a Nginx from Taobao.                         #描述内容 

###  2.The Prep section 准备阶段,主要目的解压source并cd进去 

#这个宏开始 
%prep                                            
%setup -q                                         

###  3.The Build Section 编译制作阶段,主要目的就是编译 
%build 
./configure --prefix=/usr/local/server --user=nginx --group=nginx --with-pcre 
#make后面的意思是:如果就多处理器的话make时并行编译
make %{?_smp_mflags}           
 
###  4.Install section  安装阶段 
%install                          
 #先删除原来的安装的,如果你不是第一次安装的话      
rm -rf %{buildroot}                
make install DESTDIR=%{buildroot} 
#DESTDIR指定安装的目录,而不是真实的安装目录,%{buildroot}你应该知道是指的什么了 
 
###  4.1 scripts section #没必要可以不写 
#rpm安装前制行的脚本 
%pre        
if [ $1 == 1 ];then    #$1==1 代表的是第一次安装,2代表是升级,0代表是卸载 
        /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     
 
###  5.clean section 清理段,删除buildroot 
 
%clean 
rm -rf %{buildroot} 
     
###  6.file section 要包含的文件 
%files  
%defattr (-,root,root)   #设定默认权限,如果下面没有指定权限,则继承默认 
/user/local/server/tengine 
     

接下来执行,

rpmbuild -bp
rpmbuild -bi
rpmbuild -ba

上面如果有一步有错误,则检查错误,直到 rpmbuild -ba 执行成功,我们要的rpm 包就生成在 RPMS 下了

转载请注明:大后端 » Centos 6 制作 rpm 包

喜欢 (0)or分享 (0)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址