编译httpd-2.4.46的RPM包

本文档记录了在CentOS7系统中编译安装Apache httpd 2.4.46过程中遇到的依赖包、anaconda环境变量和apr版本过低的问题,以及如何解决这些问题的详细步骤。通过下载源码、解决lua-devel依赖、移除anaconda环境干扰和升级apr版本,最终成功编译并安装了httpd。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、下载源码

二、编译&排错

2.1、第一次编译,解决依赖包问题。

2.2、第二次编译,解决anaconda导致的环境变量问题

2.3、第三次编译,解决apr版本过低问题


提供 apr-1.7.0、httpd-2.4.46 的RPM包下载。

apr-1.7.0-bundle.zip

httpd-2.4.46 -bundle.zip

一、下载源码

[root@lingmk ~]# cd rpmbuild/SOURCES/
[root@lingmk SOURCES]#
[root@lingmk SOURCES]# wget https://mirror.bit.edu.cn/apache//httpd/httpd-2.4.46.tar.bz2
…………

[root@lingmk SOURCES]# sha256sum httpd-2.4.46.tar.bz2
740eddf6e1c641992b22359cabc66e6325868c3c5e2e3f98faf349b61ecf41ea  httpd-2.4.46.tar.bz2
[root@lingmk SOURCES]#
[root@lingmk SOURCES]# tar xvjf httpd-2.4.46.tar.bz2
…………
[root@lingmk SOURCES]# cd httpd-2.4.46/
[root@lingmk httpd-2.4.46]# ll | grep spec
-rw-r--r--  1 root 40   17313 Aug  1 22:11 httpd.spec
[root@lingmk httpd-2.4.46]# cp httpd.spec ../../SPECS/
[root@lingmk httpd-2.4.46]# cd ../../SPECS/

二、编译&排错

2.1、第一次编译,解决依赖包问题。

报错需要lua-devel,安装之。

[root@lingmk SPECS]# rpmbuild -ba httpd.spec
error: Failed build dependencies:
	lua-devel is needed by httpd-2.4.46-1.x86_64
[root@lingmk SPECS]#
[root@lingmk SPECS]# yum install lua-devel -y

2.2、第二次编译,解决anaconda导致的环境变量问题

报错 /usr/lib64/libapr-1.so: undefined reference to `uuid_generate@UUID_1.0'。

  1. 使用/usr/lib64/libapr-1.so时遇到一个未定义的uuid……。
  2. 我们用ldd命令看看/usr/lib64/libapr-1.so的库依赖,包含uuid的是libuuid.so.1。
  3. 我们再locate命令看看哪里有libuuid.so.1,发现在anaconda里面也有libuuid.so.1。

原因就是这个冲突导致的。我们可以查看PATH环境变量,果然anaconda排在前面。我们使用conda deactivate取消anaconda的环境变量。再次编译。

[root@lingmk SPECS]# rpmbuild -ba httpd.spec
…………
/usr/lib64/libapr-1.so: undefined reference to `uuid_generate@UUID_1.0'
collect2: error: ld returned 1 exit status
make[1]: *** [httpd] Error 1
make[1]: Leaving directory `/root/rpmbuild/BUILD/httpd-2.4.46'
make: *** [all-recursive] Error 1
error: Bad exit status from /var/tmp/rpm-tmp.7JVKVB (%build)


RPM build errors:
    Bad exit status from /var/tmp/rpm-tmp.7JVKVB (%build)
[root@lingmk SPECS]#
[root@lingmk SPECS]# ldd /usr/lib64/libapr-1.so | grep uuid
	libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fa4f959d000)
[root@lingmk SPECS]#
[root@lingmk SPECS]# locate libuuid.so.1
/data/anaconda3/lib/libuuid.so.1
/data/anaconda3/lib/libuuid.so.1.0.0
/data/anaconda3/pkgs/libuuid-1.0.3-h1bed415_2/lib/libuuid.so.1
/data/anaconda3/pkgs/libuuid-1.0.3-h1bed415_2/lib/libuuid.so.1.0.0
/usr/lib64/libuuid.so.1
/usr/lib64/libuuid.so.1.3.0
[root@lingmk SPECS]#
[root@lingmk SPECS]# echo $PATH
/data/anaconda3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@lingmk SPECS]#
[root@lingmk SPECS]# conda deactivate
[root@lingmk SPECS]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@lingmk SPECS]#

2.3、第三次编译,解决apr版本过低问题

报错找不到文件/root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so。

据说是由于apr(Apache Portable Runtime)的版本太低,CentOS7自带的是1.4.x版本的,需要将升级apr升级到1.5.x以上才行,目前最新的是1.7.0版本。我们先完成支线任务编译apr,再继续编译apache。编译成功。


[root@lingmk SPECS]# rpmbuild -ba httpd.spec
…………
+ grep TEXTREL
+ exit 0
Processing files: httpd-2.4.46-1.x86_64
error: File not found: /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.fP4iVM
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd httpd-2.4.46
+ DOCDIR=/root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ export DOCDIR
+ /usr/bin/mkdir -p /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ cp -pr ABOUT_APACHE /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ cp -pr README /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ cp -pr CHANGES /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ cp -pr LICENSE /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ cp -pr NOTICE /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/share/doc/httpd-2.4.46
+ exit 0


RPM build errors:
    File not found: /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64/usr/lib64/httpd/modules/mod_mpm_event.so
[root@lingmk SPECS]#
[root@lingmk SPECS]# cd ../SOURCES/
[root@lingmk SOURCES]# wget https://mirrors.bfsu.edu.cn/apache//apr/apr-1.7.0.tar.bz2
[root@lingmk SOURCES]# sha256sum apr-1.7.0.tar.bz2
e2e148f0b2e99b8e5c6caa09f6d4fb4dd3e83f744aa72a952f94f5a14436f7ea  apr-1.7.0.tar.bz2
[root@lingmk SOURCES]#
[root@lingmk SOURCES]# tar xvjf apr-1.7.0.tar.bz2
[root@lingmk SOURCES]# cp apr-1.7.0/apr.spec ../SPECS/
[root@lingmk SOURCES]# cd ../SPECS/
[root@lingmk SPECS]#
[root@lingmk SPECS]# rpmbuild -ba apr.spec
…………
Wrote: /root/rpmbuild/SRPMS/apr-1.7.0-1.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/apr-1.7.0-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/apr-devel-1.7.0-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/apr-debuginfo-1.7.0-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.FxdyDh
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd apr-1.7.0
+ rm -rf /root/rpmbuild/BUILDROOT/apr-1.7.0-1.x86_64
+ exit 0
[root@lingmk SPECS]# cd ../RPMS/x86_64/
[root@lingmk x86_64]# yum localinstall apr-1.7.0-1.x86_64.rpm apr-devel-1.7.0-1.x86_64.rpm
[root@lingmk x86_64]# cd ../../SPECS/
[root@lingmk SPECS]# rpmbuild -ba httpd.spec
…………
Wrote: /root/rpmbuild/SRPMS/httpd-2.4.46-1.src.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/httpd-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/httpd-devel-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/httpd-manual-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/httpd-tools-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/mod_authnz_ldap-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/mod_lua-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/mod_proxy_html-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/mod_ssl-2.4.46-1.x86_64.rpm
Wrote: /root/rpmbuild/RPMS/x86_64/httpd-debuginfo-2.4.46-1.x86_64.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.nL1uTo
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd httpd-2.4.46
+ rm -rf /root/rpmbuild/BUILDROOT/httpd-2.4.46-1.x86_64
+ exit 0
[root@lingmk SPECS]#

 

### 如何获取 Apache HTTP Server 2.4.52RPM 对于特定版本的软件(如 Apache HTTP Server 2.4.52),可以通过官方资源或第三方存储库来查找并下载对应的 RPM 。以下是关于如何找到和验证该版本 RPM 的相关信息。 #### 官方与可信源 通常情况下,可以从以下位置获取 RPM - **Apache 软件基金会镜像站点**:虽然 Apache 官网不直接提供 RPM ,但它提供了源代码供用户自行构建 RPM 文件[^1]。 - **Linux 发行版仓库**:某些发行版可能在其扩展仓库中提供较新的 Apache 版本。例如,在 CentOS 或 RHEL 中可以尝试启用 EPEL 存储库以访问更新的软件[^4]。 如果需要确切匹配 `httpd-2.4.52` 的 RPM,则建议通过以下方式操作: #### 使用 Yum/DNF 下载指定版本 在基于 Red Hat 的系统上,可利用 `yumdownloader` 工具下载具体版本号的 RPM 。前提是目标版本已存在于可用的软件仓库中。运行如下命令前,请确认已经配置好支持此版本的附加仓库(比如 Remi Repository)[^2]: ```bash yum install -y yum-utils yumdownloader --resolve httpd-2.4.52 ``` #### 手动编译作为备选方案 当无法定位到预建好的 RPM 时,手动从源码编译成为另一种可行途径。这涉及几个主要步骤,括但不限于解压必要的依赖项 APR 和 APR-util 等组件[^3][^5]。下面是一个简化流程概览: 1. 获取最新稳定发布的源文件; 2. 解压缩这些档案并将它们放置于适当路径下; 3. 配置、编译直至最终完成安装过程。 注意,这种方法要求管理员具备一定技术水平,并且要确保所有前置条件均已满足以便顺利完成整个部署工作流。 ```python import os print(os.uname()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦行僧(csdn)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值