zoukankan      html  css  js  c++  java
  • Linux rpmbuild命令

    一、简介

    rpmbuild命令用于创建软件的二进制包和源代码包。

     

    二、选项 

     

    三、实例

    1 准备打包环境

    执行如下命令安装rpmbuild和rpmdevtools

    #yum install rpmbuild
    #yum install rpmdevtools 

    执行如下命令来生成rpmbuild的工作目录

    #rpmdev-setuptree

    工作目录结构如下,

    ~/rpmbuild
    ~/rpmbuild/SOURCES              #放置打包资源,包括源码打包文件和补丁文件等
    ~/rpmbuild/SPECS                #放置SPEC文档
    ~/rpmbuild/BUILD                #打包过程中的工作目录
    ~/rpmbuild/RPMS                 #存放生成的二进制包
    ~/rpmbuild/RPMS/i386            #存放生成的i386结构包
    ~/rpmbuild/SRPMS                #存放生成的源码包
    提示:rpmdev-setuptree命令默认将再当前用户主目录下创建一个RPM构建根目录结构,如果需要改变次默认位置,可以修改配置文件:~/.rpmmacros中变量_topdir对应的值即可。

    image_thumb

     

    2、载源码包到SOURCES目录,不需要解压

    cd SOURCES/
    wget http://nginx.org/download/nginx-1.2.1.tar.gz

    image5_thumb

     

    3、撰写Spec文件

    SPEC撰写是打包RPM的核心,也算是最难的一步,好在我们可以从参照一个简单的模板文件开始,在可以实现基本功能的基础上再一步一步的扩充文档内容,直至完全达到要求。下面是一个简单的SPEC文档,其中包括了一些说明信息(注:#后面的内容为说明信息),该SPEC文档是对一个测试的软件项目hellorpm写的,hellorpm软件包编译后仅有一个执行文件、一个手册文件和一个项目说文件。

    nginx.spec文档的内容如下:

    #
    # Example spec file for nginx
    #
    #软件包简要介绍
    Summary: high performance web server
    
    #软件包的名字
    Name: nginx
    
    #软件包的主版本号
    Version: 1.2.1
    
    #软件包的次版本号
    Release: 1.el5.ngx
    
    #授权协议
    License: 2-clause BSD-like license
    
    #软件分类
    Group: Applications/Server
    Source: http://nginx.org/download/nginx-1.2.1.tar.gz
    URL: http://nginx.org/
    Distribution: Linux
    Packager: zhumaohai <admin@www.centos.bz>
     
    #软件包的内容介绍
    %description
    nginx [engine x] is a HTTP and reverse proxy server, as well as
    a mail proxy server
    
    #表示预操作字段,后面的命令将在源码代码BUILD前执行
    %prep
    rm -rf $RPM_BUILD_DIR/nginx-1.2.1
    zcat $RPM_SOURCE_DIR/nginx-1.2.1.tar.gz | tar -xvf -
    
    #BUILD字段,将通过直接调用源码目录中自动构建工具完成源码编译操作  
    %build
    cd nginx-1.2.1
    
    #调用源码目录中的configure命令 
    ./configure --prefix=/usr/local/nginx
    
    #在源码目录中执行自动构建命令make
    make
    
    #安装字段
    %install
    cd nginx-1.2.1
    
    #调用源码中安装执行脚本  
    make install
    %preun
    if [ -z "`ps aux | grep nginx | grep -v grep`" ];then
    killall nginx >/dev/null
    exit 0
    fi
    
    #文件说明字段,声明多余或者缺少都将可能出错
    %files
    #声明/usr/local/nginx将出现在软件包中
    /usr/local/nginx

     

    4、构建RPM包

    开始构建操作,首先进入到当前用户的rpmbuild根目录

    #cd ~/rpmbuild/
    #rpmbuild -ba SPECS/nginx.spec

    提示:-ba表示build all,即生成包括二进制包和源代码包的所有RPM包,如果正常的话,rpmbuild将正常退出,同时在RPMS目录和SRPMS目录中将生成对应的RPM包。

    image_thumb1

  • 相关阅读:
    【BZOJ2006】[NOI2010] 超级钢琴(堆+RMQ)
    【洛谷1120】小木棍(一道有技巧的dfs)
    【BZOJ1857】传送带(分治经典:三分套三分)
    【BZOJ1045】糖果传递(基于贪心的数学题)
    【CF1000C】Covered Points Count(离散化+差分)
    【洛谷1486】[NOI2004] 郁闷的出纳员(Splay的小运用)
    【洛谷1156】垃圾陷阱(动态规划)
    严格次小生成树学习笔记
    高斯消元入门
    【洛谷4011】孤岛营救问题(状压SPFA)
  • 原文地址:https://www.cnblogs.com/274914765qq/p/4737803.html
Copyright © 2011-2022 走看看