Mac OS - 从源代码构建SVN,现在Apache2没有加载站点

时间:2009-06-15 21:08:22

标签: svn apache macos tomcat

这与我今天早些时候提出的另一个问题有关。

我从源代码构建了SVN 1.6.2。在这个过程中,它完全搞砸了我的开发环境。

我构建SVN后,Apache没有加载。它给了我这个错误:

Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec
/apache2/mod_dav_svn.so into server: dlopen(/usr/libexec/apache2/mod_dav_svn.so, 10): no
suitable image found.  Did find:\n\t/usr/libexec/apache2/mod_dav_svn.so: mach-o, but
wrong architecture

似乎SVN覆盖了旧的mod_dav_svn.so并且我无法将其构建为FAT,我无法恢复原来的那些。

我通过注释掉加载mod_dav_svn.so的行来解决这个问题(暂时?),并让Apache在此时启动。

但是,即使Apache正在运行,我现在在尝试访问我的开发站点时收到此错误:

Directory index forbidden by Options directive: /usr/share/tomcat6/webapps/ROOT/

我让Apache2坐在Tomcat6前面。我使用内部名称“http://localthesite”访问我的本地开发站点。我已经设置了虚拟目录,直到这个SVN崩溃。

Tomcat安装在/ usr / local / apache-tomcat,webapps是/ usr / local / apache-tomcat / webapps。

我们的生产服务器将tomcat部署到/ usr / share / tomcat6,因此我在系统上设置了符号链接来复制它。这些指向实际的安装路径。这一切都很好。

我们对Apache2,Tomcat或.htaccess的配置都没有改变。在周末,我在系统上执行了“修复磁盘权限”。这是在我发现mod_dav_svn.so问题之前。

我整个上午都在阅读这篇文章,最常见的答案是有一个Options -Indexes集。我们在配置文件中有这个,但是之前和我在测试期间删除它时,我仍然从Apache获得了相同的错误。

此时,我假设我要么在这台Mac上完全使用原生Apache2安装,要么在某个地方存在我遗漏的权限错误。权限错误可能来自SVN安装,也可能来自我的修复过程。

有没有人任何想法可能是什么问题?我现在完全被阻止了,不知道接下来要去哪里检查。

2 个答案:

答案 0 :(得分:0)

尝试

grep -n Options /etc/httpd/*

获取存在Options指令的所有行。如果您有任何行-Indexes,那么可能就是这样。您可能还需要检查文件。 (在/private/etc/httpd/users/*我认为..)

另一件事是权限。 (这听起来更有可能。)我相信Apache需要一个文件夹上的+ x来显示其内容的索引。尝试

ls -l /usr/share/tomcat6/webapps/

寻找

drwxr-xr-x  1 user  user  100 Jun 15 13:37 ROOT/
         ^

您可能需要使用

进行设置
chmod a+x /usr/share/tomcat6/webapps/ROOT

我不确定这一点,因为我自己没有遇到同样的问题。希望它有效!
干杯!

(旁注:这可能不是你想要的,但我强烈推荐MacPorts - 它是一个工具,允许你自动安装软件(如apache,svn,mysql等),依赖关系解析成沙子框,以便您的默认Mac OS X不受影响。您可以停用并激活软件,从而轻松尝试不同的版本等。链接:www.macports.org

答案 1 :(得分:0)

这可能与您所遇到的“选项指令”问题有关,也可能没有关系,但第一次错误中的关键位是

Did find:\n\t/usr/libexec/apache2/mod_dav_svn.so: mach-o, but wrong architecture

我在Apache和SVN之间遇到了类似的问题,但是有一个不同的库。我的记忆在这方面有点模糊,但我想有一段时间后苹果转向64位二进制文​​件。 Mac OS X上的大多数库都是i386或x86_64架构。您可以使用'file'命令找到架构,例如:

file /usr/libexec/apache2/mod_dav_svn.so

可能会输出

mod_dav_svn.so: Mach-O 64-bit dynamically linked shared library x86_64

如果比较svn和httpd可执行文件的体系结构以及mod_dav_svn插件,可能会发现冲突。