zoukankan      html  css  js  c++  java
  • 简单介绍RPM包制作方法

    RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,是一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。使用rpm安装软件和管理软件非常的方便。而这节我们不是介绍如何使用rpm安装或管理软件,而是如何把源码制作成rpm包。

    下面我们以制作nginx的rpm开始介绍其制作方法。以下操作在centos-7进行。
    制作nginx的rpm例子

    建立目录结构

    /usr/src/redhat/SOURCES — 存放源代码,补丁,图标等文件。
    
    /usr/src/redhat/SPECS — 存放用于管理rpm制作进程的spec文件。
    /usr/src/redhat/BUILD — 解压后的文件存放在这里。
    /usr/src/redhat/RPMS — 存放由rpmbuild制作好的二进制包。
    /usr/src/redhat/SRPMS —存放由rpmbuild制作好的源码包。
    mkdir -p /usr/src/redhat
    cd /usr/src/redhat
    mkdir SOURCES SPECS BUILD RPMS SRPMS
    

    下载源码包到SOURCES目录,不需要解压。

    cd /usr/src/redhat/SOURCES
    wget http://nginx.org/download/nginx-1.11.1.tar.gz
    

    创建Spec文件

    cd /usr/src/redhat/SPECS
    vi nginx.spec
    内容如下:
    #
    # Example spec file for nginx
    #
    Summary: high performance web server
    Name: nginx
    Version: 1.11.1
    Release: 1.el7.ngx
    License: 2-clause BSD-like license
    Group: Applications/Server
    Source: http://nginx.org/download/nginx-1.11.1.tar.gz
    URL: http://nginx.org/
    Distribution: Linux
    Packager: geekwolf <admin@simlinuxc.om>;
    %description
    nginx [engine x] is a HTTP and reverse proxy server, as well as
    a mail proxy server
    %prep
    rm -rf $RPM_BUILD_DIR/nginx-1.11.1
    zcat $RPM_SOURCE_DIR/nginx-1.11.1.tar.gz | tar -xvf -
    %build
    cd nginx-1.11.1
    ./configure --prefix=/usr/local/nginx
    make
    %install
    cd nginx-1.11.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
    

    在制作RPM包之前需要安装必要的工具,如rpmbuild,gcc等。开始RPM制作

    yum install gcc rpm-build pcre-devel
    cd /usr/src/redhat/SPECS/
    rpmbuild -bb nginx.spec
    一切顺利的话,会生成nginx的rpm包,/usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm。
    

    测试rpm包

    rpm -ivh /usr/src/redhat/RPMS/i386/nginx-1.11.1-1.el7.ngx.x86_64.rpm
    spec文件解释
    从以上的简单例子可以看出,制作rpm包最重要的还是spec文件,下面解释一下例子所用到的指令。
    #:以#开头是注释,rpm会忽略它。
    Summary:简单描述软件。
    Name :定义rpm的名称。
    Version: 定义软件版本
    Release: 发行版本
    License: 定义许可证
    Group: 软件分类
    Source: 源码下载地址
    URL: 源码相关网站
    Distribution: 发行版系列
    Packager: 打包人的信息
    %description:软件详细描述,可多行
    %prep :软件编译之前的处理,如解压。
    %build :开始编译软件,如make
    %install :开始安装软件,如make install
    %files :指定哪些文件需要被打包,如/usr/local/nginx
    %preun :定义卸载之前的动作,如杀掉进程。
    这里只介绍了几个常用的tag,更详细的请参考:http://www.rpm.org/max-rpm/ch-rpm-inside.html
    
  • 相关阅读:
    Python学习4
    Python学习3
    Python学习2
    表空间
    sqlplus常用设置
    HashMap和LinkedHashMap
    堆栈源码
    观察者模式
    策略模式
    java线性表
  • 原文地址:https://www.cnblogs.com/guigujun/p/8547654.html
Copyright © 2011-2022 走看看