Установлен сервер в режиме "офисный сервер". Обновлён. Бакула нормально не работает, все адания по бекапу собственной базы бакулы выполняются с ошибкой скрипта создания дампа базы: 01-Jan 23:10 localhost JobId 903: shell command: run BeforeJob "/usr/share/bacula/scripts/make_catalog_backup" 01-Jan 23:10 localhost JobId 903: Error: Runscript: BeforeJob returned non-zero status=1. ERR=Child exited with code 1 Смотрю - получается, что установлены две библиотеки поддержки СУБД бакулы: bacula-sqlite и bacula-mysql. При этом реально работает база sqlite. Но скрипт не может определить реально работающую базу и пытается сдампить базу mysql. Я попытался удалить пакет bacula-mysql, но при этом по зависимостям удаляются пакеты alterator-backup-server и alterator-distro-backup-server. Пакет alterator-backup-server представляет собой обёртку над пакетом alterator-bacula, а у него в зависимостях зачем-то стоят bacula-director-mysql и , /usr/share/bacula/scripts/make_mysql_tables. Ещё мне непонятно, зачем там MySQL-server-control, mysql-server, mysql-client, /usr/bin/mysql, ntfs-3g. Пакет alterator-distro-backup-server также содержит в зависимостях bacula-director-mysql, /usr/share/bacula/scripts/create_mysql_database и /usr/share/bacula/scripts/make_mysql_tables. И опять же там есть куча *mysql*. IMHO нужно убрать зависимости этих пакетов от bacula-director-mysql (/usr/share/bacula/scripts/make_mysql_tables, /usr/share/bacula/scripts/create_mysql_database). Возможно, и все прочие mysql-пакеты там лишние. Насчёт выбора бакулой базы для работы я не разбирался. Непохоже, что она использует alternatives. Возможно, порядок использования СУБД зашит в коде. Если это так, скрипт /usr/share/bacula/scripts/make_catalog_backup в пакете bacula-dir содержит ошибку. [root@office ~]# su -s /bin/bash -l -c "/bin/bash -x /usr/share/bacula/scripts/make_catalog_backup" + default_db_type=postgresql + '[' 0 -ge 5 ']' + '[' -z '' ']' ++ arch + '[' x86_64 == x86_64 ']' ++ sed 's,.* points to /usr/lib64/libbaccats-,,' ++ sed 's,-.*$,,' ++ alternatives-list /usr/lib64/libbaccats-5.2.13.so /usr/lib64/libbaccats-mysql-5.2.13.so /usr/lib64/libbaccats-mysql.so /usr/lib64/libbaccats-sqlite3-5.2.13.so /usr/lib64/libbaccats-sqlite3.so + db_type=mysql + '[' -z mysql ']' + cd /var/lib/bacula + rm -f .sql + case ${db_type} in + BINDIR=/usr/bin + test 0 -gt 2 + MYSQLPASSWORD= + test 0 -gt 3 + MYSQLHOST= + /usr/bin/mysqldump -u -f --opt [root@office ~]# rpm -qa | grep bacula bacula-storage-5.2.13-alt3.M70P.1 bacula-director-sqlite3-5.2.13-alt3.M70P.1 bacula-common-5.2.13-alt3.M70P.1 bacula-director-mysql-5.2.13-alt3.M70P.1 bacula-director-common-5.2.13-alt3.M70P.1 bacula-console-5.2.13-alt3.M70P.1 alterator-bacula-0.8-alt2 alterator-bacula-functions-0.2-alt1 bacula-client-5.2.13-alt3.M70P.1 [root@office ~]# apt-get remove bacula-director-mysql Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Следующие пакеты будут УДАЛЕНЫ: alterator-backup-server alterator-distro-backup-server bacula-director-mysql
Я выяснил, почему установились два пакета, предоставляющие bacula-dir: bacula-director-sqlite3 и bacula-director-mysql. Причина в том, что при установке пакета bacula по зависимостям устанавливается bacula-director-sqlite3, а при установке alterator-backup-server устанавливается bacula-director-mysql. [root@office ~]# apt-get install alterator-backup-server Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Выбрано alterator-bacula для 'alterator-backup-server' Следующие дополнительные пакеты будут установлены: alterator-bacula bacula-director-mysql Следующие пакеты будут ЗАМЕНЕНЫ: alterator-bacula-functions (by alterator-bacula) Следующие НОВЫЕ пакеты будут установлены: alterator-bacula bacula-director-mysql 0 будет обновлено, 2 новых установлено, 1 пакетов будет заменено, 0 пакетов будет удалено и 320 не будет обновлено. Необходимо получить 42,5kB/69,7kB архивов. После распаковки потребуется дополнительно 139kB дискового пространства. Продолжить? [Y/n] n Прервано. [root@office ~]# apt-get install bacula Чтение списков пакетов... Завершено Построение дерева зависимостей... Завершено Следующие дополнительные пакеты будут установлены: bacula-director-sqlite3 Следующие НОВЫЕ пакеты будут установлены: bacula bacula-director-sqlite3 0 будет обновлено, 2 новых установлено, 0 пакетов будет удалено и 320 не будет обновлено. Необходимо получить 0B/38,1kB архивов. После распаковки потребуется дополнительно 44,6kB дискового пространства. Продолжить? [Y/n] n Прервано.
Спасибо за обстоятельный разбор -- хорошо бы на alterator-backup-server повесить что-нибудь отдельное, этот пакет в текущем виде должен хотя бы конфликтовать с bacula-director-sqlite3. А ещё саму bacula надо обновлять до 7.x...
На самом деле, даже если в системе отсутствует bacula-director-mysql, резервное копирование каталога бакулы (на sqlite3) тоже не работает: =8<=================================================== 25-Sep 08:31 dir JobId 3: shell command: run BeforeJob "/usr/share/bacula/scripts/make_catalog_backup" 25-Sep 08:31 dir JobId 3: BeforeJob: + default_db_type=postgresql 25-Sep 08:31 dir JobId 3: BeforeJob: + '[' 0 -ge 5 ']' 25-Sep 08:31 dir JobId 3: BeforeJob: + '[' -z '' ']' 25-Sep 08:31 dir JobId 3: BeforeJob: ++ arch 25-Sep 08:31 dir JobId 3: BeforeJob: + '[' x86_64 == x86_64 ']' 25-Sep 08:31 dir JobId 3: BeforeJob: ++ sed 's,-.*$,,' 25-Sep 08:31 dir JobId 3: BeforeJob: ++ alternatives-list /usr/lib64/libbaccats-5.2.13.so /usr/lib64/libbaccats-sqlite3-5.2.13.so /usr/lib64/libbaccats-sqlite3.so 25-Sep 08:31 dir JobId 3: BeforeJob: ++ sed 's,.* points to /usr/lib64/libbaccats-,,' 25-Sep 08:31 dir JobId 3: BeforeJob: + db_type=sqlite3 25-Sep 08:31 dir JobId 3: BeforeJob: + '[' -z sqlite3 ']' 25-Sep 08:31 dir JobId 3: BeforeJob: + cd /var/lib/bacula 25-Sep 08:31 dir JobId 3: BeforeJob: + rm -f .sql 25-Sep 08:31 dir JobId 3: BeforeJob: + case ${db_type} in 25-Sep 08:31 dir JobId 3: BeforeJob: + BINDIR=/usr/bin 25-Sep 08:31 dir JobId 3: BeforeJob: + echo .dump 25-Sep 08:31 dir JobId 3: BeforeJob: + /usr/bin/sqlite3 .db =8<=================================================== т.е. скрипт ожидает (предположительно, обязательный) аргумент запуска, обозначающий имя БД, но не получая его создаёт новую пустую БП sqlite3 в файле с именем ".db" и дампит её в файл с именем ".sql". Посмотрел, как это сделано в centos7: там резервное копирование каталога идёт скриптом make_catalog_backup.pl с указанием в конфигурации по умолчанию имени каталога MyCatalog. Код определяет тип и имя БД каталога через утилиту dbcheck и делает резервную копию. У нас этот скрипт также работает. Думаю в новой сборе бакулы тоже сделать так. С моей т.з. требовать в alterator-backup-server пакета bacula-director-mysql и одновременно конфликтовать с bacula-director-sqlite3 это равносильно конфликту bacula-director-mysql и bacula-director-sqlite3. Что противоречит самой идее альтернатив. Т.е. не вижу патчить make_catalog_backup и делать не как у других, если make_catalog_backup.pl работает.
Похоже, в Сизиф ушел пакет, в котором это починено, 5.2.13-alt7.