系统版本:CentOS Linux release 7.9.2009 (Core)
一、官网下载安装包
https://httpd.apache.org/download.cgi (httpd-2.4.59.tar.bz2)
https://apr.apache.org/download.cgi (apr-1.7.4.tar.bz2、 apr-util-1.6.3.tar.bz2)
二、编译前准备
1)解压安装包
shell> tar -jxvf httpd-2.4.59.tar.bz2
shell> tar -jxvf apr-1.7.4.tar.bz2
shell> tar -jxvf apr-util-1.6.3.tar.bz2
2)生成构建目录,默认路径在/root/rpmbuild。没有该命令用yum install -y rpmdevtools安装。
shell> rpmdev-setuptree
3)将httpd、apr、apr-util的.spec文件和源码包放入指定路径下
shell> cp httpd-2.4.59/httpd.spec apr-1.7.4/apr.spec apr-util-1.6.3/apr-util.spec /root/rpmbuild/SPECS/
shell> mv httpd-2.4.59.tar.bz2 apr-1.7.4.tar.bz2 apr-util-1.6.3.tar.bz2 /root/rpmbuild/SOURCES/
三、编译RPM包
1)编译apr-1.7.4.tar.bz2
shell> yum install -y rpm-build
shell> rpmbuild -ba /root/rpmbuild/SPECS/apr.spec
构建失败,缺少依赖环境
shell> yum install -y libuuid-devel.x86_64
重新执行:rpmbuild -ba /root/rpmbuild/SPECS/apr.spec
2)编译apr-util-1.6.3.tar.bz2
shell> rpmbuild -ba /root/rpmbuild/SPECS/apr-util.spec
同理,安装所需依赖包。但有些依赖包localhost源没有,可以用外网repo源安装,或者在https://pkgs.org/下载rpm包安装。
shell> yum install -y apr-devel.x86_64 expat-devel.x86_64 postgresql-devel.x86_64 sqlite-devel.x86_64 unixODBC-devel.x86_64 openldap-devel.x86_64 openssl-devel.x86_64 nss-devel.x86_64 mysql-devel
shell> rpm -ivh libdb4-4.8.30-13.el7.x86_64.rpm libdb4-devel-4.8.30-13.el7.x86_64.rpm (我这里是在https://pkgs.org/下载的rpm包)
重新执行:rpmbuild -ba /root/rpmbuild/SPECS/apr-util.spec
如果遇到报错:configure: error: Berkeley DB not found.需要安装yum install -y libdb-devel.x86_64
3)编译httpd-2.4.59.tar.bz2
shell> rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec
shell> yum install -y apr-util-devel.x86_64 libxml2-devel.x86_64
shell> rpm -ivh lua-devel-5.1.4-15.el7.x86_64.rpm
编译过程中报错:错误:没有找到文件:/root/rpmbuild/BUILDROOT/httpd-2.4.59-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
shell> rpm -Uivh /root/rpmbuild/RPMS/x86_64/apr-*(需要安装已构建好的apr和apr-util)
重新执行: rpmbuild -ba /root/rpmbuild/SPECS/httpd.spec
构建好的所有RPM包都在/root/rpmbuild/RPMS/x86_64/
四、安装httpd
shell> rpm -ivh /root/rpmbuild/RPMS/x86_64/httpd-*
错误:依赖检测失败:
/etc/mime.types 被 httpd-2.4.59-1.x86_64 需要
shell> yum install -y mailcap.noarch
SUCCESS