Archiv für den Monat: März 2012

Bacula 5.2.6 auf Ubuntu Natty AMD64 installieren

Am 21. Februar gab es ein Update von Bacula auf Version 5.2.6. Unter Natty ist momentan aber nur Version 5.0.3 in den Repositories und die existierenden PPa’s machten auf mich keinen guten Eindruck. Also blieb nur die Möglichkeit das Ganze selbst zu compilieren.

Da ich aber auf einem Produktivsystem keine Mischung aus selbstcompiliertem und aus Repos installierten Programmen haben will, sollten natürlich Debian Pakete erzeugt werden.

Dies ist eine kleines Merkblatt für mich, wie ich es zum Laufen bekommen habe:

Als erstes müssen die Sourcen heruntergeladen  und entpackt werden werden. Nun fehlen die debian spezifischen Informationen zum bauen der Pakete. Zuerst habe ich einfach diejenigen aus den Sourcen der Version 5.0.3 genommen, die man mit einem

apt-get source bacula

bekommt. Nach dem Ausführen dieses Befehls findet man im aktuellen Verzeichnis die Originalsourcen, eine Beschreibungsdatei, die Patches und das bereits entpackte Sourceverzeichniss:

root@bacula:~/src#> ls -l
drwxr-xr-x 12 root     root    4096 2012-03-13 13:31 bacula-5.0.3
-rw-r–r–     1 root     root    203230 2011-03-07 17:05 bacula_5.0.3-0ubuntu2.diff
-rw-r–r–     1 root     root       2024 2011-03-07 17:05 bacula_5.0.3-0ubuntu2.dsc
-rw-r–r–     1 root     root      3800556 2011-02-14 21:04 bacula_5.0.3.orig.tar.gz

Als erstes habe ich mir den Patch angeschaut, um herauszubekommen, was geändert wurde. Glücklicherweise sind fast keine Änderungen ausserhalb des Debian-Verzeichnisses vorhanden.

Bevor ich damit versucht habe die Pakete zu bauen, bin ich beim stöbern noch über die Bacula Pakete für Precise gestossen, die bereits in Version 5.2.5 vorliegen. Da dachte ich mir doch, nimmste lieber die zur Version passenden Informationen als Basis zur Anpassung. Unter http://archive.ubuntu.com/ubuntu/pool/main/b/bacula/bacula_5.2.5-0ubuntu5.debian.tar.gz kann man die debianspezifischen Dateien herunterladen und im Root-Verzeichnis der entpackten Bacula-sourcen ebenfalls entpacken. Dies ergibt folgende Dateistruktur:

root@bacula:~/src/bacula-5.2.6#>ls -la
drwxr-xr-x 12 root     root   4096 2012-03-13 16:24 .
drwxr-xr-x   3 root     root       4096 2012-03-13 16:23 ..
-rw-r–r–     1 root     root      67472 2012-02-21 16:59 ABOUT-NLS
-rw-r–r–     1 root     root       2165 2012-02-21 16:59 AUTHORS
drwxr-xr-x   6 root     root       4096 2012-02-21 16:59 autoconf
-rw-r–r–     1 root     root     146570 2012-02-21 16:59 ChangeLog
-rw-r–r–     1 root     root       1665 2012-02-21 16:59 CheckList
-rwxr-xr-x    1 root     root         71 2012-02-21 16:59 code-changes
-rwxr-xr-x    1 root     root         69 2012-02-21 16:59 commits
-rwxr-xr-x    1 root     root     955210 2012-02-21 16:59 configure
-rw-r–r–     1 root     root         83 2012-02-21 16:59 COPYING
-rw-r–r–     1 root     root         83 2012-02-21 16:59 COPYRIGHT
drwxr-xr-x   2 root     root       4096 2012-03-13 16:23 debian
drwxr-xr-x 10 root     root       4096 2012-02-21 16:59 examples
-rwxr-xr-x   1 root     root         68 2012-02-21 16:59 get_authors
-rw-r–r–    1 root     root       3223 2012-02-21 16:59 INSTALL
-rw-r–r–    1 root     root      61356 2012-02-21 16:59 kernstodo
-rw-r–r–    1 root     root      43233 2012-02-21 16:59 LICENSE
-rwxr-xr-x   1 root     root       9781 2012-02-21 16:59 Makefile.in
drwxr-xr-x  2 root     root       4096 2012-02-21 16:59 manpages
drwxr-xr-x 22 root     root       4096 2012-02-21 16:59 platforms
drwxr-xr-x  2 root     root       4096 2012-02-21 16:59 po
-rw-r–r–    1 root     root      57243 2012-02-21 16:59 projects
-rw-r–r–    1 root     root       1836 2012-02-21 16:59 README
-rw-r–r–    1 root     root       1927 2012-02-21 16:59 README.AIX
drwxr-xr-x  2 root     root       4096 2012-02-21 16:59 release
-rw-r–r–    1 root     root      39336 2012-02-21 16:59 ReleaseNotes
drwxr-xr-x  3 root     root       4096 2012-02-21 16:59 scripts
drwxr-xr-x 15 root     root       4096 2012-02-21 16:59 src
-rw-r–r–    1 root     root        715 2012-02-21 16:59 SUPPORT
-rw-r–r–    1 root     root     146922 2012-02-21 16:59 technotes
-rw-r–r–    1 root     root       1284 2012-02-21 16:59 unaccepted-projects
drwxr-xr-x  2 root     root       4096 2012-02-21 16:59 updatedb
-rw-r–r–    1 root     root       1472 2012-02-21 16:59 VERIFYING

Nun hat man die nötige Dateistruktur zum kompilieren und kann die nötigen Anpassungen machen und natürlich die fehlenden Abhängigkeiten und Tools installieren. Als erstes habe ich die debhelper tools installiert:

apt-get install debhelper

Damit lässt sich herausbekommen, welche Abhängigkeiten vorhanden sind. Mit folgendem Aufruf bekommt man eine Liste der benötigten Pakete:

root@bacula:~/src/bacula-5.2.6# dpkg-checkbuilddeps

Auf meiner Kiste mussten folgende Pakete installiert werden:

aptitude install build-essential libpq-dev libncurses5-dev libssl-dev psmisc mysql-server libmysql++-dev libreadline-dev libsqlite0-dev libsqlite3-dev libwrap0-dev python-dev libgtk2.0-dev libgnome2-dev libacl1-dev libgnomeui-dev libx11-dev libxt-dev libqt4-dev libqwt5-qt4-dev quilt liblzo2-dev

Ein weiteres Paket fehlt, nämlich postgresql-server-dev-9.1. Erstens gibt es auf Natty nur Version 8.4, ausserdem brauche ich es nicht, da ich MySQL benutze.

Also einfach mal die zwei wichtigen Dateien im debian Verzeichniss angeschaut – rules und control. Aus der Control Datei habe ich alle Paketbeschreibungen, die sich auf Postgres beziehen entfernt:

bacula-common-pgsql, bacula-director-pgsql, bacula-sd-pgsql

Danach in der rules Datei alles gelöscht, was Bezug auf Postgres nimmt. Dabei ist mir aufgefallen, dass die aktuelle Version aus der Datei changelog erstellt wird und da ich Version 5.2.6 benutzte musste ich diese Version auch im Changelog angeben. Dafür habe ich einfach folgende Zeilen an den Anfang der Datei gesetzt:

bacula (5.2.6-0ubuntu1) natty; urgency=low

* Just a bug fix release

–My name <my@email.tld>  Wed, 07 Mar 2012 21:32:43 -0700

Jetzt einfach mal testen, ob es geht:

root@bacula:~/src/bacula-5.2.6#> dpkg-buildpackage -rfakeroot -uc -b

Hat auf Anhieb geklappt und lief ohne Probleme durch. Beim Installieren ist dpkg aber doch auf die Schnauze gefallen und die installierten Pakete konnten nicht konfiguriert werden. Nach ein bissen Suche ist mir aufgefallen, dass gawk gebraucht wird, also schnell mal installieren:

aptitude install gawk

Noch einmal versucht und alles lief glatt.

Ein Blick in die Release Notes offbahrt noch, dass sich da DB-Schema geändert hat. Um dies auf die aktuelle Version upzudaten findet man die Skripte unter

bacula-5.2.6/debian/tmp-install-mysql/etc/bacula/scripts/

Normalerweise sollten diese Skripte nach /etc/bacula/scripts kopiert werden. Das war bei mir nicht der Fall, ich habe jetzt aber auch nicht danach gesucht, sondern sie einfach per Hand kopiert. Das auszuführende Skript nennt sich update_mysql_tables. Am Anfang inZeile 11 noch den richtigen Datenbanknamen eingetragen und dann aufgerufen:

update_mysql_tables -p

Danach kann man in der Datenbank überprüfen, ob das Schema auf Version 14 gesetzt wurde, indem man in der Tabelle version nachschaut.

Jetzt kann man die neue Version testen und schauen, ob sie stabil läuft.