rpmbuild制作rpm 包

什么是rpm包?

rpm 相当于windows中的安装文件,它会自动处理软件包之间的依赖关系。

  • rpm优点:
    包管理系统简单,通过几个命令就可以实现包的安装、升级、卸载。
    安装速度比源码包快的多。
  • 缺点:
    经过编译,不能看到源代码,功能选择不如源码灵活。依赖性强。

首先说一下流程:
打rpm 包需要的东西有 源码、spec文件(打rpm包的脚本)、rpmbuild工具。

1. 安装rpmbuild

$yum install rpmbuild
$yum install rpmdevtools 
$rpmdev-setuptree

此时rpmbuild已经安装好了,可以查看一下

rpmbuild --showrc | grep topdir 

这里写图片描述

进入rpmbuild 目录文件夹如下:

这里写图片描述

各个文件夹的用途:

这里写图片描述

2. 创建用户

此处建议创建一个用户,用于rpm的打包操作

1. #创建用户
useradd rpmuser 
su - rpmuser 

2. #定义工作目录(或车间)吧
vi ~/.rpmmacros 
%_topdir   /home/rpmuser/rpmbuild    ##目录可以自定义 

mkdir ~/rpmbuild  
3. #在topdir下建立需要的目录
cd ~/rpmbuild  
mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS} 

3. 整理源码

rpmbuild安装完成以后我门就需要将我们的源码放到 SOURCE 文件夹下。我门的源码可能是一个tar.gz 的包、也可能是几个文件。

tar.gz源码包的名字格式应该为 helloword-1.0.0.tar.gz (其实就是名字-版本号.tar.gz)

4. 编写spec文件

在SPECS文件夹下新建 xxx.spec 打包脚本,其实也就是把我门的源码编译打包成rpm 的一个过程。

vi  xxx.spec 

Name:           hellorpm           #名字为源码tar.gz 包的名字 
Version:        1.0.0             #版本号,一定要与tar.gz包的一致哦 
Release:        1%{?dist}         #释出号,也就是第几次制作rpm 
Summary:       helloword   #软件包简介,最好不要超过50字符 

License:        GPL                   #许可,GPL还是BSD等  
URL:            #可以写一个网址 
Packager:       abel 
Source0:        %{name}-%{version}.tar.gz   
#定义用到的source,也就是你的源码

BuildRoot:      %_topdir/BUILDROOT         
#这个是软件make install 的测试安装目录.

BuildRequires:  gcc,make                           #制作过程中用到的软件包 
Requires:       python-apscheduler >= 2.1.2-1.el7,python-daemon >= 1.6-1.el7  #软件运行依赖的软件包,也可以指定最低版本如 bash >= 1.1.1 
%description                #描述,随便写                 
%prep                          #打包开始                    
%setup -q                      #这个作用静默模式解压并cd                               


%build              #编译制作阶段,主要目的就是编译,如果不用编译就为空 
./configure \                                     
 %{?_smp_mflags}          #make后面的意思是:如果就多处理器的话make时并行编译 

%install                        #安装阶段                        
rm -rf %{buildroot}             #先删除原来的安装的,如果你不是第一次安装的话 
 cp -rp %_topdir/BUILD/%{name}-%{version}/*  $RPM_BUILD_ROOT 
#将需要需要打包的文件从BUILD 文件夹中拷贝到BUILDROOT文件夹下。

#下面的几步pre、post、preun、postun 没必要可以不写 
%pre        #rpm安装前制行的脚本 

%post       #安装后执行的脚本 

%preun      #卸载前执行的脚本 

%postun     #卸载后执行的脚本 

%clean #清理段,删除buildroot 
rm -rf %{buildroot} 


%files  #rpm要包含的文件 
%defattr (-,root,root,-)   #设定默认权限,如果下面没有指定权限,则继承默认 
/etc/hello/word/helloword.c           #将你需要打包的文件或目录写下来

###  7.chagelog section  改变日志段 
%changelog 

注意:

以上阶段如果没有操作的话,为空,但是不能有空行,例如build阶段为空应写为

%build              
%install  
xxxxxxxx   

错误示例:
%build   

%install  
xxxxxxxx

rpm包制作阶段
这里写图片描述

5. 打包

spec 文件编写好以后就可以进行打包了。
在SPECS文件夹下执行命令:

rpmbuild -bb xxx.spec

如果出错了可以通过 不同的命令来看是在打包的那一步出了问题。

rpmbuild  
-ba 既生成src.rpm又生成二进制rpm 
-bs 只生成src的rpm 
-bb 只生二进制的rpm 
-bp 执行到pre 
-bc 执行到 build段 
-bi 执行install段 
-bl 检测有文件没包含 

可以先rpmbuild -bp ,再-bc 再-bi 如果没问题,rpmbuild -ba 生成src包与二进制包。

本文参考:
http://laoguang.blog.51cto.com/6013350/1103628/
http://blog.chinaunix.net/uid-23069658-id-3944462.html

  • 13
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值