| Цитата |
|---|
Алексей Горохов написал: Коллеги еще.. 9.0.10
Как такое лечить? 9 пункт потом 2.... | Код |
|---|
Bitrix virtual appliance version 9 . 0 . 10
Certificate configuration
install_driver(mysql) failed: Can 't locate DBD/mysql.pm in @INC (you may need to install the DBD::mysql module) ( @INC contains: /opt/webdir/lib /usr/local/lib64/perl5/5.32 /usr/local/share/perl5/5.32 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at (eval 315) 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, Gofer, Mem, Pg, SQLite, Sponge.
at /opt/webdir/lib/bxSiteFiles.pm line 198.
Not sites on the server
|
|
Опишу способ восстановления, может кому пригодится.
Ошибка вызвана тем, что часть скриптов в menu.sh написана на perl и интерпретатору, для взаимодействия с mysql, необходим пакет perl-DBD-MySQL, который в данном случае отсутствует.
Попытка установить пакет из текущего репозитория решит проблему на несколько секунд, после чего скрипт /opt/webdir/bin/downgrade_perl_mysql.sh, который из крона вызывается 1 раз в минуту, удалит пакет.
По логике скрипта, он проверяет версию пакета и если версия не удовлетворяет, то удаляет установленный пакет и устанавливает необходимый.
В моем случае необходимый пакет был недоступен в текущем репозитории, поэтому ставим его руками:
| Код |
|---|
dnf install -y https://mirror.stream.centos.org/9-stream/AppStream/x86_64/os/Packages/perl-DBD-MySQL-4.050-13.el9.x86_64.rpm |
После установки проверяем работоспособность:
| Код |
|---|
perl -MDBI -e 'my $dr = DBI->install_driver("mysql"); print "OK\n"' |
Должно вернуть "ОК"
Также нужно проверить /etc/dnf/dnf.conf
В нем директива exclude должна быть в единственном числе и содержать perl-DBD-MySQL.
В моем случае директив exclude было две, т.к. скрипт, который внес пакет в исключение не проверил существование этой директивы и просто добавил еще одну, что недопустимо по синтаксису. В результате чего отрабатывала только последняя директива, в которой этот пакет не указан, пакет обновлялся и успешно удалялся сценарием из крона.
Собсно, отсутствие проверки на наличие существующей директивы exclude в файле dnf.conf и привело к поломке menu.sh и написанию этого опуса.
Прошу разработчиков учесть этот момент.