Возникла следующая ошибка при попытке выполнить сценарий Perl (для резервного копирования LVM). Видно, что какой-то модуль DBD отсутствует. Как мне его разрешить?
[root@localhost mylvmbackup-0.13]# ./mylvmbackup
20120804 02:26:06 Info: Connecting to database...
Uncaught exception from user code:
install_driver(mysql) failed: Can't locate DBD/mysql.pm in @INC (@INC contains: /usr/share/mylvmbackup /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi /usr/lib/perl5/5.8.8 .) at (eval 17) line 3.
Perhaps the DBD::mysql perl module hasn't been fully installed,
or perhaps the capitalisation of 'mysql' isn't right.
Available drivers: DBM, ExampleP, File, Proxy, Sponge.
at ./mylvmbackup line 202
at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/DBI.pm line 756
DBI::install_driver('DBI', 'mysql') called at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/DBI.pm line 600
DBI::connect('DBI', 'DBI:mysql:database=mysql;mysql_read_default_group=client', 'root', '') called at ./mylvmbackup line 202
Когда я попытался решить эту проблему, установив perl-DBD-MYSQL, тоже возник конфликт?
yum install perl-DBD-MySQL
--> Finished Dependency Resolution
mysql-5.0.95-1.el5_7.1.x86_64 from updates has depsolving problems
--> mysql conflicts with MySQL-server-community
Error: mysql conflicts with MySQL-server-community
Похоже, вы установили несовместимые пакеты RPM для MySQL из стороннего источника. Вероятно, они пришли с mysql.org. К сожалению, они плохо интегрированы и вызывают подобные проблемы.
В настоящее время лучшие интегрированные текущие пакеты RPM MySQL, о которых я знаю, представлены в remi репозиторий. Использование этих пакетов предотвратит подобные проблемы в будущем.
Обычно я не советую отменять зависимости от оборотов. Я советую вам попытаться остаться в рамках полностью управляемой системы пакетов (т.е. rpm устанавливает и контролирует все).
Люди, которые собирают пакеты mysql (должны), всегда также создают отдельный пакет общих библиотек, который содержит «совместимые общие библиотеки». Это означает, что они знают, что они создают версию mysql, которая, вероятно, не будет напрямую работать с двоичными файлами, предоставленными вашим дистрибутивом, поэтому они также создают некоторые дополнительные (обычно более старые) общие библиотеки mysql, которые будут предоставлять общие библиотеки правильной версии для вашего ожидаются двоичные файлы, предоставленные дистрибутивом. Найдите и загрузите rpm-пакет MySQL-shared-compat той же версии, которую вы установили с сайта mysql.org, затем установите его. Проверьте свой сценарий, если он работает, все готово.
Теперь, как, возможно, сломать вашу систему Perl DBI:
Сказав все это, я уже был в этой ситуации раньше, когда экспериментировал с другими пакетами mysql, кроме тех, которые предоставляются собственно CentOS. yum не будет устанавливать этот модуль perl из-за неудовлетворенных зависимостей, но эти зависимости обычно являются просто соглашениями об именах. В большинстве случаев необходимая общая библиотека присутствует и может использоваться. Вы можете заставить rpm игнорировать эти зависимости, загрузив perl DBD mysql rpm с зеркала и запустив:
rpm -ivh --force perl-DBD-MySQL*.rpm
Затем выполните быстрый тест, чтобы увидеть, есть ли проблемы с общими библиотеками, выполнив следующие две команды:
# Should print out nothing, nor any errors
CentOS58[root@stats ~]# perl -e 'use DBD::mysql'
CentOS58[root@stats ~]#
CentOS58[root@stats ~]# ldd /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux-thread-multi/auto/DBD/mysql/mysql.so
libmysqlclient.so.15 => /usr/lib64/mysql/libmysqlclient.so.15 (0x00002aaaaacd6000)
<snip>
Если оба из них работают правильно, скорее всего, ваш сценарий будет работать нормально. Если они не работают должным образом, вы можете вернуть свою систему в то состояние, в котором она была, просто удалив (вручную) пакет rpm почти так же, как вы его установили:
# May need to add --nodeps and/or --force
rpm -e perl-DBD-MySQL