当前位置: 首页 > 编程日记 > 正文

编译httpd-2.4.46的RPM包

目录

一、下载源码

二、编译&排错

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 uuidlibuuid.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 0RPM 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]#

相关文章:

C/s模式B/S模式

C/s模式:是客户端/服务器(Client/Server)模式,主要指的是传统的桌面级的应用程序。比如我们经常用的信息管理系统。 C/S 客户端/服务器 例如QQ,网络游戏,需要下载客户端才能访问服务器的程序 B/S 浏览器/服务器 例如Intel&#xf…

分割catalina.out 每天生成一个文件

1. touch xxx(文件名字).sh 2. vim xxx.sh 写入 ----------------------- #!/bin/shcd dirname $0pwdddate %Y%m%dd7date -d7 day ago %Y%m%dcd ../logs/cp catalina.out catalina.out.${d}cat /dev/null > catalina.outrm -rf catalina.out.${d7} ----------…

、|| 和 、| 的区别(详尽版)

&&和|| 是逻辑运算符(也包括 !) 逻辑运算符含义&&逻辑与(两者为真才为真,一者为假即为假)︱︱逻辑或(两者为假才为假,一者为真即为真)!逻辑非(本来值的…

C++负数、小数如何保存

负整数 正整数直接按照源码存储,负整数按照补码存储。 原码、反码、补码 首先要清楚原码、反码、补码: 计算机中一个字节为8位,在此以一个字节为例: 原码: 十进制1:0000 0001 十进制-1:1000 …

MySQL00-这都不知道还TM学啥MySQL

目录 一、MySQL架构概述 1.1、客户端连接器 1.2、连接层 1.3、可插拔存储引擎 1.4、文件系统与文件 二、配置文件 三、数据文件 四、日志文件(以MySQL5.7.32为例) 4.1、错误日志 Error Log 4.2、一般查询日志 General Query Log 4.3、二进制日…

ORB_SLAM2 PnPSolver

EPNP:已知4组(默认)3D-2D匹配点,构建参考点,通过计算参考点的相机坐标,线性组合成路标点的相机坐标。然后使用ICP估计相机间的位姿变换。   需要注意的事,EPNP可以同时使用N组路标点构建M矩阵…

iOS开发UI篇—多控制器和导航控制器简单介绍

iOS开发UI篇—多控制器和导航控制器简单介绍 一、多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单。当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如…

值传递 和 地址传递 的区别(好多句话才可以说清)

要知道什么是**值传递**和**地址传递**,首先要知道什么是**基本数据类型**和**引用类型**。 Java的基本数据类型就八种(除了这八种之外都是引用类型):◆整型:byte(8位) short(16位) int(32位) long(64位)&#xff1…

日期类的时间从为什么是从1970年1月1日(格林威治时间)

I suspect that Java was born and raised on a UNIX system.UNIX considers the epoch (when did time begin) to be midnight, January 1, 1970.是说java起源于UNIX系统,而UNIX认为1970年1月1日0点是时间纪元. 但这依然没很好的解释"为什么",出于好奇&a…

MySQL从5.7.32升级到8.0.22

目录 一、备份与导出数据 二、升级到MySQL-8.0.22同时解决字符集问题 2.1、卸载MySQL-5.7.32 2.2、安装MySQL-8.0.22 2.3、修改配置文件 my.cnf 三、导入数据及配置 3.1、重新创建数据库wordpress 3.2、导入表结构和数据 3.3、启动httpd 今天,贫僧的个人博客…

50个顶级开源营销应用程序

显然,开源营销应用程序占有一席之地。如今,营销部门负责相当大比例的企业应用程序购买和部署决策。事实上,Gartner预测,到2017年,首席营销官(CMO)将比首席信息官(CIO)在I…

C++乘法的int越界问题

在做Leetcode 69. x 的平方根&#xff0c;出现了两种int越界的情况&#xff1a; 整数相乘越界 if(mid * mid < x)这样写的话&#xff0c;mid * mid可能越界&#xff0c;因此可以改为 if(mid < x/mid)整数本身越界 int n_r x;Leetcode给了个例子&#xff0c;x 21474…

C# DataSet与DataTable的区别和用法

DataSet是数据集&#xff0c;DataTable是数据表&#xff0c;DataSet存储多个DataTable。DataSet和DataTable像是专门存储数据的一个容器&#xff0c;在你查询数据库得到一些结果时可以存在里面。 DataSet功能强大有浏览、排序、搜索、过滤、处理分级数据、缓存更改等功能&#…

Java代码块总结(速读版)

**代码块必须直接定义在类中**&#xff0c;有两种&#xff1a;静态代码块 和 非静态代码块 静态代码块是在类&#xff08;class文件&#xff09;加载内存时执行&#xff0c;而非静态代码块是在创建对象&#xff08;new 类名();&#xff09;时执行。public class Test{static{ …

matplotlib01-plot折线图、scatter散点图

目录 一、plot绘制折线图一般用法 二、scatter绘制散点图一般用法 记录一下数据可视化的python库matplotlib&#xff0c;研究并纪录一下。 matplotlib.pyplot.subplots函数。subplots可以绘制一个或多个图表。返回变量fig表示整张图片&#xff0c;变量ax表示图片中的各个图表…

C++const关键字作用

修饰普通变量&#xff0c;表示不可修改&#xff08;在定义的时候必须初始化&#xff09; #include <iostream> using namespace std; const int a1 10; int main() {const int a3; // 错误&#xff0c;没有初始化const int a2 10;a1 10; // 错误&#xff0c;不可修…

系统设计规范化攻克了什么问题

系统设计规范化攻克了什么问题(一) 大家好,今天总结下我从事开发工作这几年里,对于项目规范化的一点想法和感触. 在笔者心里,规范是为了解决这个问题而存在的,某些规范都是为了相应问题而存在的.所以仅仅要是能解决这个问题的文档,声明都是规范. 在某时開始设计系统,带人做系统…

五分钟让你了解 Java方法(或者叫函数)

Java方法&#xff08;函数&#xff09;的形式如下&#xff1a; 访问权限 [修饰符] 返回值类型 方法名([参数列表]){方法体 } 访问权限&#xff1a;控制方法(函数)能否在其他“类”中使用有public(可以在其他类中使用)&#xff0c;protected&#xff0c;private(只能在该类中使用…

Bootstrap笔记

Bootstrap使用&#xff1a; 下载Bootstrap&#xff0c;用于生产环境的 Bootstrap不需要安装解压文件到任意目录创建index.html&#xff0c;在该页面编写代码页面起始位置添加<link rel"stylesheet" href"解压文件中css/bootstrap.min.css的路径"/>转…

Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题

目录 一、背景 二、问题 三、解决方案 一、背景 最近对贫僧的个人页https://stackoperator.top进行升级&#xff0c;将Apache升级到2.4.46&#xff0c;PHP升级到7.4.15。升级后没啥问题&#xff0c;但是第二天却宕机了。经过查证是内存不足&#xff0c;导致mysql服务宕机了…

两分钟让你知道什么是“Java重载”

重载&#xff1a;顾名思义&#xff0c;就是重复负载的意思&#xff0c;具体到Java 就是方法名相同&#xff08;重复使用&#xff09;&#xff0c;但参数列表不同。 我们通过几个Java方法来具体说明&#xff1a;public class Addition{public int add(int a, int b){return ab;}…

C++ static

&#xff08;1&#xff09;static表示静态变量。局部变量存储在栈区&#xff0c;在{}结束时被释放。而static修饰的变量存储在全局区&#xff0c;在程序结束时被释放。 &#xff08;2&#xff09;static修饰的变量在外部文件中无法调用&#xff0c;即使使用extern也无法调用。其…

TCO 2015 1A Hard.Revmatching(Hall定理)

\(Description\) 给定一个\(n\)个点的二分图&#xff0c;每条边有边权。求一个边权最小的边集&#xff0c;使得删除该边集后不存在完备匹配。\(n\leq20\)。 \(Solution\) 设点集为\(S\)&#xff0c;与\(S\)中的点相邻的点的并集为\(N(S)\)。 由Hall定理&#xff0c;若存在点集\…

20169211 2016-2017-2 《移动平台开发实践》 第十周实验总结

实验一&#xff1a;简易计算器 实验要求 实现一个简易计算器Calc,支持 - * / 和%运算, 从命令行传入计算数据&#xff0c;比如&#xff1a;java Calc 2 3 结果为 2 3 5 java Calc 8 - 3 结果为 8 - 3 5 java Calc 2 * 3 结果为2 * 3 6 java Calc 10 / 2 结…

wordpress从apache迁移到nginx

目录 一、安装nginx 二、配置文件准备 2.1、进程运行用户 2.2、虚拟主机 2.3、重定向 三、迁移 庚子鼠年最后几天&#xff0c;贫僧发现了内存不足的问题&#xff0c;并在Apache2.4.x下proxy_module、proxy_fcgi_module结合PHP-FPM解决内存不足问题一文中阐述了解决方案。…

zabbix4.0搭建(基于CentOS6.8)

环境服务端&#xff1a;188.188.3.241&#xff0c;系统&#xff1a;centos6.8&#xff0c;mysql&#xff1a;5.7.3&#xff0c;php&#xff1a;5.4.9&#xff0c;nginx&#xff1a;1.12.0一、nginx编译安装NGINX_VERSION1.12.0yum -y install pcre-devel openssl-develcd /usr/…

[Ahoi2008]Meet 紧急集合

1787: [Ahoi2008]Meet 紧急集合 Time Limit: 20 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id1787Description Input Output Sample Input 6 4 1 2 2 3 2 4 4 5 5 6 4 5 6 6 3 1 2 4 4 6 6 6 Sample Output 5 2 2 5 4 1 6 0 HINT S…

C++ 回调函数

函数指针 函数指针是一种指针&#xff0c;具体来说是&#xff1a;指向函数入口地址的指针。 #include <iostream> using namespace std; double function_t(int val) {return val; } int main() {double (*ptr)(int); // 创建一个函数指针&#xff0c;返回值为doubl…

想知道什么是“成员变量”吗?

成员变量是直接定义在“类”中的量&#xff1b; 特点&#xff1a;成员变量有默认值,具体请看表格 数据类型默认值整型0浮点型0.0char’ ’booleanfalse其他类型null 成员变量的作用就是可以详细描述对象信息 我们来举个例子&#xff1a; public class UserInfo{int age;doubl…

Linux09-网络配置

目录 一、网络配置基础 1.1、网络接口 1.2、设置主机名 二、nmcli配置网络 2.1、配置固定的IP地址等 2.2、连接wifi 三、链路聚合等 一、网络配置基础 1.1、网络接口 先来对比一下RHEL6、RHEL7关于网络接口上的一些差别。 RHEL6 RHEL7 配置文件位置 /etc/sysconfig…