Компиляция mod_auth_mysql на снежном барсе - PullRequest
0 голосов
/ 24 мая 2011

Как собрать mod_auth_mysql на Snow Leopard?

Вместо того, чтобы хоронить свои выводы в каком-либо комментарии к блогу, я решил документировать их здесь в ответ.

У меня есть следующие ошибки:

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

Ответы [ 2 ]

1 голос
/ 06 февраля 2012

Мне пришлось немного подправить это, чтобы оно работало на Mac mini Core Duo (не поддерживающем 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

Если вы получили ошибку, не найдя cc из XCode Toolchain:

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

Также: блог Нильса Преускера недоступен. Вы можете найти ответ еще в кеше Google. Кроме того, я вставил соответствующие части здесь:

Компиляция и установка mod_auth_mysql в OS X 10.5.6

17 апреля 2009 г. по nils Модуль apche mod_auth_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),
0 голосов
/ 24 мая 2011
  • Сначала следуйте инструкциям на блоге Nils Preusker , особенно примените его патч.
  • Проверьте, какая информация о пути хранится в файле mysqls .dylib.
    • 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
  • Убедитесь, что библиотека mysql находится в списке: otool -L /usr/libexec/apache2/mod_auth_mysql.so
  • Проверьте настройки с помощью apachectl configtest

Ура!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...