创建rpm包

一 准备工作

   要制作的linux系统中(centos6.5为例),需要保证有rpmbuild rpmdevtools两个开发工具

   yum install rpm-build

   yum install rpmdevtools

   安装完rpmdevtools后,会创建一些工具,比如

   rpmdev-setuptree    Create RPM build tree within user's home directory
   rpmdev-diff         Diff contents of two archives
   rpmdev-newspec      Creates new .spec from template
   rpmdev-rmdevelrpms  Find (and optionally remove) "development" RPMs
   rpmdev-checksig     Check package signatures using alternate RPM keyring
   rpminfo             Print information about executables and libraries
   rpmdev-md5/sha*     Display checksums of all files in an archive file
   rpmdev-vercmp       RPM version comparison checker
   spectool            Expand and download sources and patches in specfiles
   rpmdev-wipetree     Erase all files within dirs created by rpmdev-setuptree
   rpmdev-extract      Extract various archives, "tar xvf" style
   rpmdev-bumpspec     Bump revision in specfile

二 创建执行目录

   执行rpmdev-setuptree会在当前用户目录下创建rpmbuild的执行目录,创建的目录如下:

   rpmbuild
       BUILD             #创建过程使用
       BUILDROOT  #创建过程使用,执行rpmbuild后会产生
       RPMS             #生成没有源代码的rpm文件目录
       SOURCES     #需要打包的文件目录
       SPECS           #spec文件目录
       SRPMS          #生成包含源代码的rpm文件目录

   将需要打包的文件放到SOURCES下,将spec文件当道SPECS下,rpm只支持tar.bz压缩文件

三 写spec文件

   1.可以使用rpmdev-newspec工具产生一个spec模板文件

    按照模板文件先大体说一下spec文件

  newpackage.spec:

   Name:                                #文件名称
   Version:                             #文件版本
   Release:        1%{?dist}     #发布版本
   Summary:                          #综述

   Group:                               #组织
   License:                            #许可
   URL:                                 #URL地址
   Source0:                           #源文件

   BuildRequires:                 #编译依赖
   Requires:                         #安装依赖

   %description                   #描述

   %prep                             #prep安装前做的工作,使用%是引用宏定义
   %setup -q                       #解压源文件下的压缩包 tar.bz格式的

   %build                                                #创建
   %configure                                         #软件源码编译的步骤configure
   make %{?_smp_mflags}                    #make命令 并行编译

   %install                                                                 #安装,将打包好的文件安装到目标目录中
   rm -rf $RPM_BUILD_ROOT                                 #删除BUILDROOT目录中的临时文件
   make install DESTDIR=$RPM_BUILD_ROOT     # make 编译安装

   %clean                                        #打包结束后clean工作
   rm -rf $RPM_BUILD_ROOT       #删除BUILDROOT目录中的临时文件

   %files                                          #打包好的rpm文件包含的文件或目录
   %defattr(-,root,root,-)                  #打包rpm文件中默认的文件属性  owner=root group=root
   %doc                                          #标示文件doc属性

   %changelog                               #修改日志

   

   2.实例说明

   Name:        xxxxx
   Version:     0.1
   Release:    1
   Summary:   xxxxxx
   License:      GPL-3.0+
   Group:        meituan
   URL:           xxxxx

   BuildArch:  x86_64
   BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-%{_arch}
   Source0:    xxxx.tar.bz

   %description
    xxxxx

    %prep
     tar xzvf %{_sourcedir}/xxxxxx.tar.bz -C %{_builddir} #解压源文件到BUILD目录

    %build

    %install
    %{__install} -d -m644 %{_builddir}/%{name}-%{version}-%{release}-%{_arch}/test   %{buildroot}/usr/local/src/test

     #安装创建test目录
     %{__cp} -f  %{_builddir}/%{name}-%{version}-%{release}-%{_arch}/test/test.c  

             %{buildroot}/test/test.c
     #安装到%{buildroot}后的目录,就是rpm安装包最后安装到系统的目录

     #使用install cp等命令尽量使用rpm提供的宏定义,查看这些宏定义一般在/usr/lib/rpm/macros中
   
    %files
    %defattr(-, root, root, 0644) 
    %attr(655, root, root) /usr/test.c   #对单个文件进行权限控制

    %config(noreplace) /etc/test.conf #标识test.conf文件是配置文件,升级时不删除

    %post      #安装完成后执行的操作
    sup xxxx

    %clean
    rm -rf %{buildroot}

    %changelog

四 执行打包程序

     rpmbuild -ba xxxx.spec

     参数说明:

        -ba  #分别在RPMS SRPMS中生成不带源码的二进制rpm包 和 带源码的 src.rpm包

        -bb  #只在RPMS中生成不带源码的二进制rpm包

        -bs  #只在SRPMS中生成带源码的src.rpm包

        -bp  #执行到prep段结束

        -bc  #执行到build段结束

        -bi   #执行到install段结束

        -bl   #执行files段对打包文件进行检查

        --sign #软件包签名 需要增加%_gpg_name

        --rebuild #编译源码包并安装

        --showrc #查看rpm相关的宏定义

五  执行安装

      正常安装 rpm -ivh xxx.rpm 

      强制安装 rpm -ivh --force xxx.rpm


六  查看rpm包

    rpm2cpio XXX.rpm | cpio -div 解压出rpm包中文件

                                    cpio -t 只是输出文件列表


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值