在我们工作中,总有一些源码包需要安装,如果这种需求频繁的话,我们可以考虑将源码包制作成RPM包。


一个rpm包里面都有什么?

    1、RPM包的描述信息         # rpm -qpi jdk-8u77-linux-x64.rpm

    2、RPM是一个压缩包,里面有很多文件         # rpm -qpl jdk-8u77-linux-x64.rpm


我们执行 # rpm -ivh 具体有有哪些动作?

    1、解压rpm包            # rpm2cpio jdk-8u77-linux-x64.rpm |cpio -id

    2、拷贝数据到对应位置


了解这些后,我们来看看RPM包制作的过程:


RPM包制作:

    1、安装rpm打包工具,生成相应的目录

    2、把源码包复制到SOURCES目录中

    3、在SPECS目录中编写nginx.spec文件

    4、执行nginx.spec文件生成RPM包,生成位置:/root/rpmbuild/RPMS/x86_64/

    

1、安装rpm打包工具,生成rpmbuild目录

    # yum -y install rpm-build         //安装rpm打包工具

    # rpmbuild -ba xx.spec          //创建rpmbuild目录,会在/root下创建rpmbuild目录

                                               也可以手动创建,包括里面的子目录

    # ll /root/rpmbuild

        BUILD  

        BUILDROOT          //模拟根目录

        RPMS                //做好的rpm包存放目录

        SOURCES            //要做rpm包的源码包存放目录

        SPECS                //spec文件存放目录

        SRPMS

        

2、将源码包复制到SOURCES目录中    

    # cp /opt/lnmp_soft/nginx-1.8.0.tar.gz /root/rpmbuild/SOURCES/

    

3、在SPECS目录中编写nginx.spec文件

    # cd /root/rpmbuild/SPECS/

    # vim nginx.spec

        Name:nginx                 //源码包名;来源:源码包包名

        Version:1.8.0                 //源码包版本;来源:源码包包名

        Release:1.0                 //RPM包的版本

        Summary:this is web server                 //RPM包概述


        #Group:                 //指定组包

        License:GPL                 //协议

        URL:www.test.com                 //地址栏

        Source0:nginx-1.8.0.tar.gz                 //指定源码包包名


        #BuildRequires:                 //依赖包

        #Requires:                 //依赖包


        %description           //RPM包的详细描述

        this is a web server aaaaaaaaaaaaa

        

        %prep

        %setup -q                 //作用:自动解压源码包,并进入解压目录

        

        %build

        ./configure --prefix=/usr/local/nginx                 //可以手动指定安装路径

        make %{?_smp_mflags}                 //自动make


        %install

        make install DESTDIR=%{buildroot}                 //自动make install

                                  安装到buildroot中去了:/root/rpmbuild/BUILDROOT/usr/local/nginx

                                  

        %files                 //打包哪些文件?

        %doc                 //打包哪些目录?

        /usr/local/nginx/*           //  /root/rpmbuild/BUILDROOT/usr/local/nginx/*

        

        %changelog

        

4、生成RPM包

    # rpmbuild -ba nginx.spec                //开始生成RPM包

    

    # ls /root/rpmbuild/RPMS/x86_64/          //做好的RPM包放在这里面


接下来就找个新的环境去安装试试吧。

    

GPL协议:GPL协议有继承性

    1、我的软件你可以任意复制和粘贴

    1、我的软件你可以任意修改

    2、我的软件你可以任意发布和传播