• 怎样将apache和nginx的源码包转换为rpm包?


    源代码转换

    1.准备工作
    清空防火墙,iptables -F

    httpd-2.2.25.tar.gz(2.2.25的版本)

    yum -y install gcc*

    2.安装httpd服务
    tar zxf httpd-2.2.25.tar.gz -C /usr/src/
    cd /usr/src/httpd-
    ./configure --prefix=/usr/local/httpd  --enable-so --enable-rewribe  --enable-charset-lite  --enable-sockets --enable-cgi && make && make install

    注意:
    cd /usr/src/httpd
    安装不会的时候。
    然后查看 INSTALL 大写的都是可阅读文件 READAM

    cd /usr/local/httpd/bin/
    cp -p apachectl /etc/init.d
    mv apachectl httpd
    chmod +x httpd


    vim /etc/init.d/network
    复制里边的两行
    # chkconfig: 2345 10 90
    # description: Activates/Deactivates all network interfaces configured to start at boot time.

    vim /etc/init.d/httpd
    修改:
    # chkconfig: 2345 91 91
    # description:This is my web——server



    计算机的开机启动级别
    cd /etc/rc0.d/
    cd /etc/rc1.d/
    cd /etc/rc2.d/
    cd /etc/rc3.d/
    cd /etc/rc4.d/
    cd /etc/rc5.d/
    k——kill
    s——start
    将系统服务软连接到开机自启动3和5级别里。
    ln -s /etc/init.d/httpd /etc/rc3.d/K91httpd
    ln -s /etc/init.d/httpd /etc/rc5.d/K91httpd
    ln -s /etc/init.d/httpd /etc/rc3.d/S91httpd
    ln -s /etc/init.d/httpd /etc/rc5.d/S91httpd

    chkconfig --add httpd
    chkconfig httpd on
    chkconfig httpd --list
    service httpd restart

    2.root用户安装软件包管理器build
    yum -y install rpm-build
    rpm -qa | grep rpm-build

    3.创建用户:
    useradd li
    passwd li

    切换用户:
    su - li

    **********************************************
    4.在root用户下查看未安装软件包的详细信息

    cd /media/cdrom/PACKGES/
    rpm -qpi httpd-2.2.25-1.el6.x86_64.rpm


    Name        : httpd                        Relocations: (not relocatable)
    Version     : 2.2.15                            Vendor: CentOS
    Release     : 29.el6.centos                 Build Date: 2013年08月14日 星期三 01时30分33秒
    Install Date: (not installed)               Build Host: c6b8.bsys.dev.centos.org
    Group       : System Environment/Daemons    Source RPM: httpd-2.2.15-29.el6.centos.src.rpm
    Size        : 3076447                          License: ASL 2.0
    Signature   : RSA/SHA1, 2013年08月14日 星期三 01时32分39秒, Key ID 0946fca2c105b9de
    Packager    : CentOS BuildSystem <http://bugs.centos.org>
    URL         : http://httpd.apache.org/
    Summary     : Apache HTTP Server
    Description :
    The Apache HTTP Server is a powerful, efficient, and extensible
    web server.


    上边的参数解释:


    名称:HTTPD重定位:(不可重新定位)

    版本:2.2.15供应商:CITOS

    发布日期:27.el6的建造日期:2013,08,14,01,30,33

    安装日期:(未安装)构建主机:C6B8Bys.DEV.CENTSO.ORG

    组:系统环境/守护进程源RPM:HTTPD-2.2.15-27.el6 CENT.SRC.RPM

    尺寸:3076447许可证:ASL 2

    签名:RSA/Sa1,2013,08,14,01,32,32,39,钥匙ID 0946FCA2C105B9DE

    打包器:CENTOS构建系统

    URL:HTTP:/HTTP.APACHE.Org/

    Apache HTTP服务器概述

    描述:

    Apache HTTP服务器是一种强大的、高效的、可扩展的服务器。

    Web服务器。

    ***************************************************

    5.编辑源码转换rpm包的文件
    vim httpd.spec

    Name:httpd

    Version:2.2.25    

    Release:    1%{?dist}

    Summary:Apache HTTP Server    


    Group:System Environment/Daemons        

    License:GPL

    URL:http://httpd.apache.org/        

    Source0:httpd-2.2.25.tar.gz

    BuildRoot:    %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

    BuildRequires:openssl-devel

    Requires:vsftpd



    %description
    The Apache HTTP Server is a powerful, efficient, and extensible
    web server.

    %prep

    %setup -q




    %build

    ./configure --prefix=/usr/local/myhttpd  --enable-so --enable-rewribe  --enable-charset-lite  --enable-sockets --enable-cgi


    make %{?_smp_mflags}



    %install

    rm -rf %{buildroot}

    make install DESTDIR=%{buildroot}




    %clean

    rm -rf %{buildroot}

    %files

    %defattr(-,root,root,-)

    /usr/local/myhttpd/bin/*

    /usr/local/myhttpd/cgi-bin/*

    %config /usr/local/myhttpd/conf/*

    /usr/local/myhttpd/build/*

    /usr/local/myhttpd/error/*

    /usr/local/myhttpd/htdocs/*

    /usr/local/myhttpd/icons/*

    /usr/local/myhttpd/include/*

    /usr/local/myhttpd/lib/*

    %dir /usr/local/myhttpd/logs

    %doc /usr/local/myhttpd/man/*

    %doc /usr/local/myhttpd/manual/*

    /usr/local/myhttpd/modules/*


    %post

    ln -s /usr/local/myhttpd/bin/* /usr/local/bin/

    cp -p /usr/local/myhttpd/bin/apachectl /etc/init.d/myhttpd

    chmod +x /etc/init.d/myhttpd

    sed -i '1a #chkconfig: 2345 91 91' /etc/init.d/myhttpd

    sed -i '2a # description: haha' /etc/init.d/myhttpd

    ln -s /etc/init.d/myhttpd /etc/rc3.d/K92myhttpd

    ln -s /etc/init.d/myhttpd /etc/rc5.d/K92myhttpd

    ln -s /etc/init.d/myhttpd /etc/rc3.d/S92myhttpd

    ln -s /etc/init.d/myhttpd /etc/rc5.d/S92myhttpd

    chkconfig --add myhttpd


    %preun

    /etc/init.d/myhttp stop

    chkconfig --del myhttpd

    rm -rf /etc/rc3.d/K92myhttpd

    rm -rf /etc/rc5.d/K92myhttpd

    rm -rf /etc/rc3.d/S92myhttpd

    rm -rf /etc/rc5.d/S92myhttpd

    rm -rf /etc/init.d/myhttpd

    rm -rf /usr/local/myhttpd



    %changelog

    * Wed May 9 2018 lisir <lisir@redhat.com> 2.2.25-1    //注意:必须和自己系统时间相同

    - first rpm from httpd-2.2.25

    "httpd.spec" 78L, 1881C



    ********************************************
    5.httpd.spec文件参数解释:

    build requires
    生成源码包的依赖包,必须存在,
    编译是的依赖包 openssl-devel
    安装时候的依赖包 vsftpd

    要执行哪个语句安装:
    &buil
    ./configure --prefix=/usr/local/myhttpd  --enable-so --enable-rewribe  --enable-charset-lite  --enable-sockets --enable-cgi


    %files安装后生成的文件
    cd /usr/local/httpd ls


    /usr/local/myhttpd/bin/*
    /usr/local/myhttpd/cgi-bin/*
    %config /usr/local/myhttpd/conf/*
    /usr/local/myhttpd/build/*
    /usr/local/myhttpd/error/*
    /usr/local/myhttpd/htdocs/*
    /usr/local/myhttpd/icons/*
    /usr/local/myhttpd/include/*
    /usr/local/myhttpd/lib/*
    %dir /usr/local/myhttpd/logs
    %doc /usr/local/myhttpd/man/*
    %doc /usr/local/myhttpd/manual/*
    /usr/local/myhttpd/modules/*



    安装完成执行的操作
    %post
    ln -s /usr/local/myhttpd/bin/* /usr/local/bin/
    cp -p /usr/local/myhttpd/bin/apachectl /etc/init.d/myhttpd
    chmod +x /etc/init.d/myhttpd
    sed -i '1a #chkconfig: 2345 91 91' /etc/init.d/myhttpd
    sed -i '2a # description: haha' /etc/init.d/myhttpd
    ln -s /etc/init.d/myhttpd /etc/rc3.d/K92myhttpd
    ln -s /etc/init.d/myhttpd /etc/rc5.d/K92myhttpd
    ln -s /etc/init.d/myhttpd /etc/rc3.d/S92myhttpd
    ln -s /etc/init.d/myhttpd /etc/rc5.d/S92myhttpd
    chkconfig --add myhttpd

    卸载的时候需要的操作
    %preun
    /etc/init.d/myhttp stop
    chkconfig --del myhttpd
    rm -rf /etc/rc3.d/K92myhttpd
    rm -rf /etc/rc5.d/K92myhttpd
    rm -rf /etc/rc3.d/S92myhttpd
    rm -rf /etc/rc5.d/S92myhttpd
    rm -rf /etc/init.d/myhttpd
    rm -rf /usr/local/myhttpd

    交换日志信息时间和日期,必须和自己的系统时间一样
    %changelog
    * Wed May 9 2018 lisir <lisir@redhat.com> 2.2.25-1
    - first rpm from httpd-2.2.25
    "httpd.spec" 78L, 1881C


    ***************************************************

    6.查看交换日志信息,包含时间日期等,将这个写到httpd.spec文件里最后。
    cd /media/Packages
    rpm -qp  -changelog httpd-2.2.15-29.el6.centos.x86_64.rpm

    7.安装依赖关系包
    yum -y install openssl vsftpd

    8.执行配置文件,报错生成路径,用来复制httpd要修改的源码包。

    [li@localhost ~]$ rpmbuild httpd.spec
    error: File /home/li/rpmbuild/SOURCES/httpd-2.2.25.tar.gz: 没有那个文件或目录
    [li@localhost ~]$ ls
    httpd.spec  rpmbuild

    9.在root用户下执行:
    cp /root/httpd-2.2.25.tar.gz /home/li/rpmbuild/SOURCES

    10.执行转换文件
    rpmbuild -ba httpd.spec

    参数解释:
    -ba 生成源码包和二进制包
    -bb 只生成二进制包

    11.查看生成的rpm包
    cd rpmbuild/RPMS/x86_64/

    ls /home/li/rpmbuild/SRPMS
    httpd-2.2.25-1.el6.src.rpm

    cd rpmbuild/SRPMS/

    ls /home/li/rpmbuild/RPMS/x86_64
    httpd-2.2.25-1.el6.x86_64.rpm  httpd-debuginfo-2.2.25-1.el6.x86_64.rpm

    12.将li用户生成的rpm转换包复制到/tmp/目录下,然后用root用户执行
    cp httpd-2.2.25-1.el6.x86_64.rpm /tmp

    13.yum安装通过编译转换的rpm包。
    root用户:
    rpm -ivh /root/桌面/httpd-2.2.25-1.el6.x86_64.rpm
    service myhttpd restart
    firefox 192.168.117.145
    看到it work!

    *************************************
    nginx源码包转换为rpm包,其他安装步骤如同apache

    yum -y install rpm-build
    yum -y install pcre-devel zlib-devel
    vim nginx.spec
    编辑修改:

    Name:nginx    
    Version:1.8.1
    Release:    1%{?dist}
    Summary:nginx service     

    Group:System Environment/Daemons
    License:GPL
    URL:www.nginx.com    
    Source0:nginx-1.8.1.tar.gz
    BuildRoot:    %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

    BuildRequires:pcre-devel
    Requires:vim

    %description
    this is nginx service


    %prep
    %setup -q


    %build
    ./configure --prefix=/usr/local/nginx
    make %{?_smp_mflags}


    %install
    rm -rf %{buildroot}
    make install DESTDIR=%{buildroot}


    %clean
    rm -rf %{buildroot}


    %files
    %defattr(-,root,root,0755)
    /usr/local/nginx/
    %config(noreplace) /usr/local/nginx/conf/nginx.conf
    %config(noreplace) /usr/local/nginx/conf/fastcgi_params


    %post
    echo '#!/bin/bash' > /etc/init.d/nginx
    echo '#### welcome to nginx ####' >> /etc/init.d/nginx
    echo '# chkconfig: - 99 20' >> /etc/init.d/nginx
    echo '# description: this is nginx server' >> /etc/init.d/nginx
    echo 'PROG="/usr/local/nginx/sbin/nginx"' >> /etc/init.d/nginx
    echo 'PIDF="/usr/local/nginx/logs/nginx.pid"' >> /etc/init.d/nginx
    echo 'case "$1" in' >> /etc/init.d/nginx
    echo ' start)' >> /etc/init.d/nginx
    echo ' $PROG' >> /etc/init.d/nginx
    echo ' ;;' >> /etc/init.d/nginx
    echo ' stop)' >> /etc/init.d/nginx
    echo ' kill -s QUIT $(cat $PIDF)' >> /etc/init.d/nginx
    echo ' ;;' >> /etc/init.d/nginx
    echo ' restart)' >> /etc/init.d/nginx
    echo ' $0 stop' >> /etc/init.d/nginx
    echo ' $0 start' >> /etc/init.d/nginx
    echo ' ;;' >> /etc/init.d/nginx
    echo ' reload)' >> /etc/init.d/nginx
    echo ' kill -s HUP $(cat $PIDF)' >> /etc/init.d/nginx
    echo ' ;;' >> /etc/init.d/nginx
    echo ' *)' >> /etc/init.d/nginx
    echo ' echo "Usage: $0 {start|stop|restart|status}"' >> /etc/init.d/nginx
    echo ' exit' >> /etc/init.d/nginx
    echo ' ;;' >> /etc/init.d/nginx
    echo ' esac' >> /etc/init.d/nginx
    echo ' exit 0' >> /etc/init.d/nginx
    chmod +x /etc/init.d/nginx
    service nginx start
    chkconfig --add nginx
    chkconfig nginx on


    %preun
    /etc/init.d/nginx stop
    chkconfig --del nginx
    rm -rf /etc/init.d/httpd
    rm -rf /usr/local/httpd

    %changelog
    * Wed May 9 2018 lipengcheng <930777521@qq.com> 1.8.1
    - first rpm from nginx-1.8.1

    执行转换配置文件:
    rpmbuild nginx.spec
    cp nginx-1.8.1.tar.gz /root/rpmbuild/SOURCES/
    rpmbuild -ba nginx.spec


    cd rpmbuild/SRPMS/
    ls      

    cd rpmbuild/RPMS/x86_64/
    ls
     
    rpm -ivh nginx-1.8.1-1.el6.x86_64.rpm
    service nginx restart
    netstat -anpt | grep nginx
    firefox 192.168.117.145



  • 相关阅读:
    动态规划小练
    组合计数小练
    【WC2019】 通道
    【PKUSC2018】主斗地
    【NOI2009】诗人小G
    【THUWC 2017】随机二分图
    【NOI2017】游戏与2-sat方案输出
    Codeforces 1109D sasha and interesting fact from graph theory
    Codeforces 1152E neko and flashback
    ZJOI2019游记
  • 原文地址:https://www.cnblogs.com/Leonardo-li/p/9028782.html
Copyright © 2020-2023  润新知