Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mac Leopard-Can';从源代码构建SVN1.6.2后,不要启动Apache2_Svn_Macos_Apache2 - Fatal编程技术网

Mac Leopard-Can';从源代码构建SVN1.6.2后,不要启动Apache2

Mac Leopard-Can';从源代码构建SVN1.6.2后,不要启动Apache2,svn,macos,apache2,Svn,Macos,Apache2,上周四,我在运行Leopard 10.5.7的Mac上从源代码构建了SVN,以便获得SVN+ssh功能。(由于某些原因,使用Collabnet中的二进制文件无法使用该功能。) 构建是成功的,我能够使用SVN afterwords,但是apache停止了启动 当我追踪到错误时,我得到的是: Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec /apache2/mod_dav_sv

上周四,我在运行Leopard 10.5.7的Mac上从源代码构建了SVN,以便获得SVN+ssh功能。(由于某些原因,使用Collabnet中的二进制文件无法使用该功能。)

构建是成功的,我能够使用SVN afterwords,但是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

我怀疑进行构建会把事情搞砸,但我不确定从这里该怎么办。

看起来它是为错误的体系结构编译的。可能是64位?

问题在于,苹果将Apache构建为fat二进制,因此它支持四种体系结构,因此它将只加载构建为fat二进制的模块。您可以使用该实用程序了解某些内容是如何构建的:

lorien$ lipo -info /usr/sbin/httpd
Architectures in the fat file: /usr/sbin/httpd are: ppc7400 ppc64 i386 x86_64
你很可能会看到这样的情况:

lorien$ lipo -info /usr/libexec/apache2/modules/mod_dav_svn.so
Non-fat file: /usr/libexec/apache2/modules/mod_dav_svn.so is architecture: i386
您可以使用强制命令以一种或另一种模式运行,或者使用
lipo
实用程序修改二进制文件并删除某些变体。总的来说,在个案的基础上处理这件事是相当痛苦的

另一个选择是将所有内容编译成fat二进制文件,这是我最近一直在做的事情。使用基于autoconf的东西(几乎任何带有
configure
脚本的东西),您通常可以使用环境变量控制大部分流程。我有一堆脚本来包装构建过程,以确保它们得到正确设置。使用以下命令重建svn:

lorien$ cd ~/src/svn-1.6.2
lorien$ cat env-sh
ARCHFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64"
DEVPATH='/Developer/SDKs/MacOSX10.5.sdk'
CPPFLAGS="-isysroot $DEVPATH"
CFLAGS="$ARCHFLAGS $CPPFLAGS"
CXXFLAGS="$CFLAGS"
LDFLAGS="-Wl,-syslibroot,$DEVPATH $ARCHFLAGS"
MACOS_DEPLOYMENT_TARGET=10.5
export CFLAGS CXXFLAGS LDFLAGS MACOS_DEPLOYMENT_TARGET
lorien$ . env-sh
lorien$ ./configure ... 
lorien$ make -j2
lorien$ lipo -info subversion/mod_dav_svn/.libs/mod_dav_svn.so
Architectures in the fat file: subversion/mod_dav_svn/.libs/mod_dav_svn.so are: ppc7400 ppc64 i386 x86_64
我在我的主目录中保留了一份环境副本。每当我构建某个东西时,我都会复制
env sh
,根据需要编辑它,获取它的源代码,然后进行构建。在
developer.apple.com
like的深处隐藏着更多的信息


祝你好运。我知道我仍然在这片充满乐趣的泥潭中前行。

D.Shawley的答案对我不起作用(我在制作过程中出错),但也许我做得不对。 但是因为我在http服务器中没有使用svn,所以我通过在httpd.conf中注释所有svn模块来“解决”这个问题。就我而言:

文件:/etc/apache2/httpd.conf

#LoadModule dav_svn_module libexec/apache2/mod_dav_svn.so

#LoadModule authz_svn_module libexec/apache2/mod_authz_svn.so


在评论了这些行之后,我再次启动了apache。

我试着运行上面的步骤,但是当我运行lipo时,生成的mod_dav_svn.so仍然是i386。我安装了最新的SDK(iPhone3.0套件附带的SDK)。你说的每句话都很有道理。除了i386,我没有把它作为任何东西来构建。我确实遇到了一些包的问题,这些包没有在适当的位置使用CFLAGS和LDFLAGS,但是subversion正确地实现了这一点。在运行配置脚本之前,请确保在顶层执行“Make distclean”。我尝试了svn-1.6.2,它在我的MacBookPro上运行正常。您正在查看的是内置的,而不是已安装的,对吗?这非常有用,谢谢。作为补充说明,我必须完成后面提到的envvars/DYLD_LIBRARY_路径技巧: