| Цитата | ||
|---|---|---|
| Алексей Горохов написал: Коллеги еще.. 9.0.10 Как такое лечить? 9 пункт потом 2....
|
Опишу способ восстановления, может кому пригодится.
Ошибка вызвана тем, что часть скриптов в 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 и написанию этого опуса.
Прошу разработчиков учесть этот момент.