好的,我在 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
最简单的方法是:
- 安装 apxs2:
apt-get install apache2-prefork-dev
(或工人,如果你正在使用它)
只需获取源代码:
apt-get 源 apache2 cd apache2-2.2.17/
应用补丁文件
转到 c 文件所在的目录并运行
apxs2 -cia mod_proxy_connect.c