<?xml version="1.0" encoding="UTF-8" ?>

<bugzilla version="5.2"
          urlbase="https://bugzilla.altlinux.org/"
          
          maintainer="jenya@basealt.ru"
>

    <bug>
          <bug_id>31692</bug_id>
          
          <creation_ts>2016-01-09 10:25:26 +0300</creation_ts>
          <short_desc>неудачные зависимости в пакетах, связанных с бакулой и неудачные настройки использования СУБД в бакуле</short_desc>
          <delta_ts>2026-02-12 10:33:28 +0300</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>4</classification_id>
          <classification>Development</classification>
          <product>Sisyphus</product>
          <component>bacula</component>
          <version>unstable</version>
          <rep_platform>all</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>CLOSED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P3</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>30940</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Стас">stas.grumbler</reporter>
          <assigned_to name="Michael Shigorin">mike</assigned_to>
          <cc>evg</cc>
    
    <cc>nbr</cc>
    
    <cc>real</cc>
    
    <cc>taf</cc>
    
    <cc>vitty</cc>
          
          <qa_contact>qa-sisyphus</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>154509</commentid>
    <comment_count>0</comment_count>
    <who name="Стас">stas.grumbler</who>
    <bug_when>2016-01-09 10:25:26 +0300</bug_when>
    <thetext>Установлен сервер в режиме &quot;офисный сервер&quot;. Обновлён.
Бакула нормально не работает, все адания по бекапу собственной базы бакулы выполняются с ошибкой скрипта создания дампа базы:
01-Jan 23:10 localhost JobId 903: shell command: run BeforeJob &quot;/usr/share/bacula/scripts/make_catalog_backup&quot;
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 &quot;/bin/bash -x /usr/share/bacula/scripts/make_catalog_backup&quot;
+ default_db_type=postgresql
+ &apos;[&apos; 0 -ge 5 &apos;]&apos;
+ &apos;[&apos; -z &apos;&apos; &apos;]&apos;
++ arch
+ &apos;[&apos; x86_64 == x86_64 &apos;]&apos;
++ sed &apos;s,.* points to /usr/lib64/libbaccats-,,&apos;
++ sed &apos;s,-.*$,,&apos;
++ 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
+ &apos;[&apos; -z mysql &apos;]&apos;
+ 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</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154512</commentid>
    <comment_count>1</comment_count>
    <who name="Стас">stas.grumbler</who>
    <bug_when>2016-01-09 20:17:24 +0300</bug_when>
    <thetext>Я выяснил, почему установились два пакета, предоставляющие 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 для &apos;alterator-backup-server&apos;
Следующие дополнительные пакеты будут установлены:
  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
Прервано.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>154518</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Shigorin">mike</who>
    <bug_when>2016-01-10 13:39:38 +0300</bug_when>
    <thetext>Спасибо за обстоятельный разбор -- хорошо бы на alterator-backup-server повесить что-нибудь отдельное, этот пакет в текущем виде должен хотя бы конфликтовать с bacula-director-sqlite3.

А ещё саму bacula надо обновлять до 7.x...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158746</commentid>
    <comment_count>3</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-09-25 07:33:17 +0300</bug_when>
    <thetext>На самом деле, даже если в системе отсутствует bacula-director-mysql, резервное копирование каталога бакулы (на sqlite3) тоже не работает:

=8&lt;===================================================
25-Sep 08:31 dir JobId 3: shell command: run BeforeJob &quot;/usr/share/bacula/scripts/make_catalog_backup&quot;
25-Sep 08:31 dir JobId 3: BeforeJob: + default_db_type=postgresql
25-Sep 08:31 dir JobId 3: BeforeJob: + &apos;[&apos; 0 -ge 5 &apos;]&apos;
25-Sep 08:31 dir JobId 3: BeforeJob: + &apos;[&apos; -z &apos;&apos; &apos;]&apos;
25-Sep 08:31 dir JobId 3: BeforeJob: ++ arch
25-Sep 08:31 dir JobId 3: BeforeJob: + &apos;[&apos; x86_64 == x86_64 &apos;]&apos;
25-Sep 08:31 dir JobId 3: BeforeJob: ++ sed &apos;s,-.*$,,&apos;
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 &apos;s,.* points to /usr/lib64/libbaccats-,,&apos;
25-Sep 08:31 dir JobId 3: BeforeJob: + db_type=sqlite3
25-Sep 08:31 dir JobId 3: BeforeJob: + &apos;[&apos; -z sqlite3 &apos;]&apos;
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&lt;===================================================

т.е. скрипт ожидает (предположительно, обязательный) аргумент запуска, обозначающий имя БД, но не получая его создаёт новую пустую БП sqlite3 в файле с именем &quot;.db&quot; и дампит её в файл с именем &quot;.sql&quot;.

Посмотрел, как это сделано в 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 работает.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>158753</commentid>
    <comment_count>4</comment_count>
    <who name="Evgenii Terechkov">evg</who>
    <bug_when>2016-09-25 09:14:40 +0300</bug_when>
    <thetext>Похоже, в Сизиф ушел пакет, в котором это починено, 5.2.13-alt7.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>