![在 FreeBSD 上与现有的 Apache13 安装并行安装 Apache22](https://linux22.com/image/497588/%E5%9C%A8%20FreeBSD%20%E4%B8%8A%E4%B8%8E%E7%8E%B0%E6%9C%89%E7%9A%84%20Apache13%20%E5%AE%89%E8%A3%85%E5%B9%B6%E8%A1%8C%E5%AE%89%E8%A3%85%20Apache22.png)
我正在运行 FreeBSD (6.3-STABLE) 生产服务器,其中通过 ports 安装了 apache13。出于各种原因,我需要将其升级到 apache22,最好也通过 ports 安装。由于我的维护窗口真的很短,我考虑与 apache13 并行安装 apache22,对其进行配置和测试(在端口 :81 左右),然后在维护期间切换。(当然有备份)。
问题是,apache22 端口设置与 apache13 冲突,我找不到方法来覆盖它。
[root@desearth ~]# portupgrade -fNW www/apache22
...
===> Installing for apache-2.2.13
===> apache-2.2.13 conflicts with installed package(s):
apache-1.3.34_4
apr-db42-1.2.8_2
出于同样的原因,在 /usr/ports/www/apache22 目录中使用 -DFORCE_PKG_REGISTER 执行“make install”也会失败。
有什么想法可以解决这个问题吗?
答案1
我很笨。我总是更关心 /usr/local/etc/apache* 中的配置文件,但从未考虑过二进制文件(即 httpd 和 apachectl)。当然,它们最终会出现在同一个地方,这就是 ports 的 Makefile 中的 CONFLICT 的原因。
serverfault 之外为我提供的一个解决方案是使用 jail,在那里测试 apache22 配置,然后在实时系统上进行切换。这似乎是可行的方法。
答案2
您还可以指定 PREFIX 来在不同的目录中安装 apache,例如 /usr/local/apache22,例如:
make PREFIX=/usr/local/apache2