| Summary: | неудачные зависимости в пакетах, связанных с бакулой и неудачные настройки использования СУБД в бакуле | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Стас <stas.grumbler> |
| Component: | bacula | Assignee: | Michael Shigorin <mike> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P3 | CC: | evg, nbr, real, vitty |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
| Bug Depends on: | |||
| Bug Blocks: | 30940 | ||
Я выяснил, почему установились два пакета, предоставляющие 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. |
Установлен сервер в режиме "офисный сервер". Обновлён. Бакула нормально не работает, все адания по бекапу собственной базы бакулы выполняются с ошибкой скрипта создания дампа базы: 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