如何在Snow Leopard上构建mod_auth_mysql?
我决定在答案中记录这些内容,而不是将我的发现隐藏在某些博客评论中。
我遇到以下错误:
May 24 10:43:44 host org.apache.httpd[6764]: httpd: Syntax error on line 120 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_auth_mysql.so into server: dlopen(/usr/libexec/apache2/mod_auth_mysql.so, 10): Symbol not found: _make_scrambled_password\n Referenced from: /usr/libexec/apache2/mod_auth_mysql.so\n Expected in: flat namespace\n in /usr/libexec/apache2/mod_auth_mysql.so
May 24 11:14:06 host org.apache.httpd[10880]: httpd: Syntax error on line 120 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/mod_auth_mysql.so into server: dlopen(/usr/libexec/apache2/mod_auth_mysql.so, 10): Library not loaded: libmysqlclient.18.dylib\n Referenced from: /usr/libexec/apache2/mod_auth_mysql.so\n Reason: image not found
答案 0 :(得分:1)
我不得不稍微调整一下,因此它可以运行在Mac mini核心二重奏(不具备64位代码)上,本质上,你只需要省略对64位架构的引用:
$ sudo apxs -c -i -a -D lmysqlclient -lmysqlclient -lm -lz -I/usr/local/mysql/include/ \
-L/usr/local/mysql/lib/ mod_auth_mysql.c
如果您在找不到XCode工具链的cc时出错:
env:/Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc:没有这样的文件或目录 apxs:错误:命令失败,rc = 65536
然后您必须完全安装XCode,或者将符号链接安装到默认工具链:
$ sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain
另外:Nils Preusker的Blog已关闭。您可能会在Google的缓存中找到答案。另外,我在这里粘贴了相关部分:
在OS X 10.5.6上编译和安装mod_auth_mysql
2009年4月17日,由nils apche模块mod_auth_mysql使得可以使用MySQL数据库而不是例如MySQL数据库。一个passwd文件。有适用于Mac OS X 10.4的模块安装程序,但没有适用于Mac OS X 10.5或更高版本的安装包或端口。我玩了一下源代码,最后设法让它编译和apache开始没有错误消息。我已经创建了一个diff文件来修补mod_auth_mysql.c。以下步骤说明如何应用修补程序,编译模块并测试Apache配置。
我们首先在您的用户目录中创建一个src文件夹,下载mod_auth_mysql并展开它:
$ mkdir ~/src
$ cd ~/src
$ curl -O http://puzzle.dl.sourceforge.net/sourceforge/\
modauthmysql/mod_auth_mysql-3.0.0.tar.gz
$ tar zxvf mod_auth_mysql-3.0.0.tar.gz
现在您拥有mod_auth_mysql-3.0.0文件夹中的模块源代码。在我们编译它之前,必须应用补丁。这是差异文件mod_auth_mysql,将其保存到
〜/ SRC / mod_auth_mysql-3.0.0 / mod_auth_mysql.diff 要应用补丁,我们将更改为sources目录并执行带有原始文件的unix补丁程序,并将diff文件应用为补丁:
$ cd mod_auth_mysql-3.0.0
$ patch mod_auth_mysql.c mod_auth_mysql.diff
继续使用32位或64位代码......
如果diff文件丢失,这里就是......
209c209
< #define STRCAT ap_pstrcat
---
> #define STRCAT apr_pstrcat
592c592
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlhost),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlhost),
596c596
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlport),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlport),
600c600
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlsocket),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlsocket),
604c604
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqluser),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqluser),
608c608
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlpasswd),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlpasswd),
612c612
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlDB),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlDB),
616c616
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlpwtable),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlpwtable),
620c620
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlgrptable),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlgrptable),
624c624
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlNameField),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlNameField),
628c628
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupField),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupField),
632c632
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupUserNameField),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupUserNameField),
636c636
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlPasswordField),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlPasswordField),
640c640
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlEncryptionField),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlEncryptionField),
644c644
< (void*) APR_XtOffsetOf(mysql_auth_config_rec, mysqlSaltField),
---
> (void*) APR_OFFSETOF(mysql_auth_config_rec, mysqlSaltField),
652c652
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlAuthoritative),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlAuthoritative),
656c656
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlNoPasswd),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlNoPasswd),
660c660
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlEnable),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlEnable),
664c664
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlUserCondition),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlUserCondition),
668c668
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlGroupCondition),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlGroupCondition),
672c672
< (void *) APR_XtOffsetOf(mysql_auth_config_rec, mysqlCharacterSet),
---
> (void *) APR_OFFSETOF(mysql_auth_config_rec, mysqlCharacterSet),
答案 1 :(得分:0)
otool -DX /usr/local/mysql/lib/libmysqlclient.18.dylib
sudo install_name_tool -id /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib
-lmysqlclient
添加到apxs命令行:<强>汇编:强>
sudo apxs -c -i -a -D lmysqlclient -lmysqlclient -lm -lz \
-I/usr/local/mysql/include/ \
-L/usr/local/mysql/lib/ -Wc,"-arch x86_64" \
-Wl,"-arch x86_64" mod_auth_mysql.c
干杯!