我如何修补Apache?

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

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

但是我从来没有这样做过。 我不知道该怎么做。 看来我需要重新编译apache,但我甚至找不到合适的软件包(apt-get install apache2-src没有find任何东西)。

任何人都可以帮助我/指导我做这件事吗? 非常感谢你。

下载源码包并构build依赖关系:

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

将补丁应用于源代码:

 cd apache2-2.2.17/ patch -p1 < patchfile 

build立Debian软件包:

 dpkg-buildpackage -uc -us -b 

列出当前安装的apache2软件包:

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

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

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

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

– $

很可能,您已经使用apt-get安装了Apache – 这下载并安装了预编译的二进制包,这些二进制包是以Debian的方式进行自定义的 – 文件位置,默认configuration文件,新贵脚本以及像logwatch这样的细节都是为您处理。

在Ubuntu中从源代码编译软件绝对是可行的,但是就应用将来的补丁和版本升级而言,你自己就可以了 – 这也需要应用connect-method-over-SSL补丁,然后重新编译从源代码(没有更多的apt-get upgrade )。 而且你需要坚持使用当前版本的Apache,而不是你的操作系统附带的版本,因为Ubuntu从新版本中反向安全修复)。

另外,你需要明白,互联网上与Ubuntu上的Apache安装相关的任何东西可能不再适用于你的Apache安装 – 文件path,configuration文件,编译选项都将不同。

如果你设置了这个方法,运行apt-get install build-essential然后按照Apache的指导。 这可能不是值得的头痛 – 你是否考虑过像stunnel一样处理SSL部分,以允许连接打到端口80上的Apache?

最简单的方法是:

  1. 安装apxs2:

apt-get install apache2-prefork-dev (或者如果你正在使用它的话)

  1. 只是得到来源:

    apt-get source apache2 cd apache2-2.2.17 /

  2. 应用你的补丁文件

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