我该如何修补 Apache?

我该如何修补 Apache?

好的,我在 Ubuntu(Natty Narwhal)盒子上使用 apache 2.2.17。

我需要应用从以下网址下载的补丁程序(mod_proxy_connect-2.2.16.patch)https://issues.apache.org/bugzilla/attachment.cgi?id=26225&action=edit

但是我以前从未这样做过。我不知道该怎么做。似乎我需要重新编译 apache,但我甚至找不到正确的软件包(apt-get install apache2-src 没有找到任何东西)。

有人能帮助我/指导我吗?非常感谢。

答案1

下载源码包并构建依赖项:

apt-get source apache2
apt-get build-dep apache2

将补丁应用到源:

cd apache2-2.2.17/
patch -p1 < patchfile

构建 debian 包:

dpkg-buildpackage -uc -us -b

列出当前安装的 apache2 包:

dpkg -l | egrep '^i+ +apache2'

安装适当的新建软件包(上一步列出的所有软件包)并重新启动 apache:

cd ..
dpkg -i apache2_2.2.17******.deb
.......

apache2ctl restart

来源:http://base6.com/2009/06/07/patching-apache-on-debian/

-$

答案2

最有可能的是,您已经使用 Apache 进行了安装apt-get- 它将下载并安装预先构建的二进制包,这些包是按照 Debian 方式定制的 - 文件位置、默认配置文件、upstart 脚本以及 logwatch 等细节都由它为您处理。

在 Ubuntu 中从源代码编译软件绝对是可行的,但您需要自行应用未来的补丁和版本升级 - 这还需要应用 connect-method-over-SSL 补丁,然后从源代码重新编译(不再需要apt-get upgrade)。并且您需要坚持使用当前版本的 Apache,而不是操作系统自带的版本,因为 Ubuntu 会从新版本中反向移植安全修复程序。

此外,您需要了解,互联网上与 Ubuntu 上安装的 Apache 相关的任何内容可能不再适用于您安装的 Apache - 文件路径、配置文件、编译选项都会不同。

如果你打算采用这种方法,请运行apt-get install build-essential并按照 Apache 指南进行操作这里。这可能不值得这么头疼 - 您是否考虑过只设置类似 stunnel 的东西来处理 SSL 部分,以允许连接在端口 80 上到达 Apache?

答案3

最简单的方法是:

  1. 安装 apxs2:

apt-get install apache2-prefork-dev(或工人,如果你正在使用它)

  1. 只需获取源代码:

    apt-get 源 apache2 cd apache2-2.2.17/

  2. 应用补丁文件

  3. 转到 c 文件所在的目录并运行apxs2 -cia mod_proxy_connect.c

相关内容