Если Perl сообщает, что не может
найти модуль ../mysql/mysql.so,
то проблема, возможно, заключается
в том, что Perl не может найти
динамическую библиотеку
libmysqlclient.so.
Эту проблему можно устранить, используя любой из следующих методов:
Для сборки дистрибутива
Msql-Mysql-modules используйте
perl Makefile.PL -static -config
вместо perl Makefile.PL.
Скопируйте libmysqlclient.so
в каталог, где находятся другие
динамические библиотеки
(/usr/lib или
/lib).
Под Linux можно добавить путь к
каталогу, где находится
libmysqlclient.so в файл
/etc/ld.so.conf.
Добавьте каталог, в котором
находится libmysqlclient.so,
в переменную окружения
LD_RUN_PATH.
Если вы получаете от
DBD-mysql представленные
ниже ошибки, то, скорее всего, у вас
используется компилятор
gcc (или старый бинарный
код, скомпилированный с
gcc):
/usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3'
Добавьте в команду линкования при
сборке библиотеки mysql.so,
-L/usr/lib/gcc-lib/... -lgcc (нужно
проверить вывод из make
для mysql.so при компиляции
клиента Perl). Опция -L
должна указывать путь к каталогу,
где находится libgcc.a в
вашей системе.
Еще одна причина появления ошибок
может заключаться в том, что оба
модуля - Perl и MySQL не скомпилированы
вместе компилятором gcc. В
этом случае данное несоответствие
можно устранить, скомпилировав оба
модуля компилятором gcc.
Если при выполнении тестов вы
получаете от модуля
Msql-Mysql-modules следующие
ошибки:
t/00base............install_driver(mysql) failed: Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mysql: ../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol: uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 169,
то это означает, что в строку
линкования необходимо включить
библиотеку сжатия -lz. Для
этого необходимо внести следующее
изменение в файл
lib/DBD/mysql/Install.pm:
$sysliblist .= " -lm"; на $sysliblist .= " -lm -lz";
После этого необходимо выполнить
команду make realclean и затем
повторить процесс инсталляции
сначала.
Если вы хотите использовать эти
модули в системе, которая не
поддерживает динамического
линкования (вроде Caldera/SCO), то можно
сгенерировать статическую версию
Perl, включающую DBI и
DBD-mysql. Она будет работать
следующим образом: нужно создать
версию Perl, слинкованную с кодом
DBI, и установить ее
поверх текущего Perl. Затем эта
версия используется для сборки
версии Perl, которая дополнительно
включает слинкованный код DBD,
и устанавливается уже
она.
В операционной системе Caldera (SCO) необходимо иметь следующий набор переменных окружения:
shell>LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/libили shell>LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\/usr/progressive/lib:/usr/skunk/libshell>LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\/usr/progressive/lib:/usr/skunk/libshell>MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\/usr/skunk/man:
Вначале следует создать модуль Perl,
включающий статически
слинкованный DBI. Это
делается путем выполнения
следующих команд в каталоге, где
располагается дистрибутив
DBI:
shell>perl Makefile.PL -static -configshell>makeshell>make installshell>make perl
Затем необходимо установить новый
модуль Perl. Вывод команды make
perl укажет точную команду
make, которую необходимо
будет выполнить для завершения
установки. Для Caldera (SCO) это будет
команда make -f Makefile.aperl inst_perl
MAP_TARGET=perl.
Затем нужно использовать только
что созданный модуль Perl для
создания еще одного модуля Perl,
который также включает в себя
статически слинкованный модуль
DBD::mysql. Это делается
путем выполнения следующих команд
в каталоге, где располагается
дистрибутив Msql-Mysql-modules:
shell>perl Makefile.PL -static -configshell>makeshell>make installshell>make perl
И в завершение осталось установить
этот новый модуль Perl. Какую команду
для этого использовать, вы опять
узнаете из вывода make perl.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
© 1995-2005 MySQL AB. All rights reserved.
