# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 2 Установка MySQL
    • 2.7 Замечания по установке Perl
      • 2.7.1 Установка Perl на Unix
      • 2.7.2 Установка ActiveState Perl на Windows
      • 2.7.3 Установка дистрибутива Perl для MySQL на Windows
      • 2.7.4 Проблемы использования интерфейса Perl DBI/DBD

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

2.7.4 Проблемы использования интерфейса Perl DBI/DBD

Если 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/lib
shell> LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
       /usr/progressive/lib:/usr/skunk/lib
shell> MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
       /usr/skunk/man:

Вначале следует создать модуль Perl, включающий статически слинкованный DBI. Это делается путем выполнения следующих команд в каталоге, где располагается дистрибутив DBI:

shell> perl Makefile.PL -static -config
shell> make
shell> make install
shell> 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 -config
shell> make
shell> make install
shell> make perl

И в завершение осталось установить этот новый модуль Perl. Какую команду для этого использовать, вы опять узнаете из вывода make perl.

User Comments

Posted by Mark on Wednesday June 12 2002, @10:27am[Delete] [Edit]

4th bullet, on Solaris, I had to set LD_LIBRARY_PATH, not LD_RUN_PATH, then it worked

Posted by [name withheld] on Thursday February 27 2003, @8:24am[Delete] [Edit]

Using RH 7.x and 8.0 with the latest available RPM's fails every prepare and/or execution with 'Unrecognized character \xE2'. Note, the rpms are the latest from redhat network as of 2003.02.25 and are probably outdated already.

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.