Next: The Bootstrap File
Up: Bacula User's Guide
Previous: Using Bacula to Improve
Contents
Index
Subsections
Bacula® - RPM Packaging FAQ
- How do I build Bacula for platform xxx?
- How do I control which database support gets built?
- What other defines are used?
- I'm getting errors about not having permission when I try to build the
packages. Do I need to be root?
- I'm building my own rpms but on all platforms and compiles I get an
unresolved dependancy for something called
/usr/afsws/bin/pagsh.
- How do I build Bacula for platform xxx?
The bacula spec file contains defines to build for several platforms:
RedHat 7.x (rh7), RedHat 8.0 (rh8), RedHat 9 (rh9), Fedora Core (fc1,
fc3, fc4), Whitebox Enterprise Linux (RHEL) 3.0 (wb3), Mandrake 10.x
(mdk) and SuSE 9.x (su9). The package build is controlled by a
mandatory define set at the beginning of the file. These defines
basically just control the dependency information that gets coded into
the finished rpm package. The platform define may be edited in the spec
file directly (by default all defines are set to 0 or "not set"). For
example, to build the RedHat 7.x package find the line in the spec file
which reads
%define rh7 0
and edit it to read
%define rh7 1
Alternately you may pass the define on the command line when calling rpmbuild:
rpmbuild -ba --define "build_rh7 1" bacula.spec
rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
- How do I control which database support gets built?
Another mandatory build define controls which database support is compiled,
one of build_sqlite, build_mysql or build_postgresql. To get the MySQL
package and support either set the
%define mysql 0
to
%define mysql 1
in the spec file directly or pass it to rpmbuild on the command line:
rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec
- What other defines are used?
Two other building defines of note are the depkgs_version and tomsrtbt
identifiers. These two defines are set with each release and must match the
version of those sources that are being used to build the packages. You would
not ordinarily need to edit these.
- I'm getting errors about not having permission when I try to build the
packages. Do I need to be root?
No, you do not need to be root and, in fact, it is better practice to
build rpm packages as a non-root user. Bacula packages are designed to
be built by a regular user but you must make a few changes on your
system to do this. If you are building on your own system then the
simplest method is to add write permissions for all to the build
directory (/usr/src/redhat/). To accomplish this, execute the following
command as root:
chmod -R 777 /usr/src/redhat
If you are working on a shared system where you can not use the method
above then you need to recreate the /usr/src/redhat directory tree with all
of its subdirectories inside your home directory. Then create a file named
.rpmmacros
in your home directory (or edit the file if it already exists)
and add the following line:
%_topdir /home/myuser/redhat
- I'm building my own rpms but on all platforms and compiles I get an
unresolved dependency for something called /usr/afsws/bin/pagsh. This
is a shell from the OpenAFS (Andrew File System). If you are seeing
this then you chose to include the docs/examples directory in your
package. One of the example scripts in this directory is a pagsh
script. Rpmbuild, when scanning for dependencies, looks at the shebang
line of all packaged scripts in addition to checking shared libraries.
To avoid this do not package the examples directory.
Support for RHEL4, CentOS 4 and x86_64
The examples below
explicit build support for RHEL4 (I think) and CentOS 4. Build support
for x86_64 has also been added. Test builds have been done on CentOS but
not RHEL4.
Build with one of these 3 commands:
rpmbuild --rebuild \
--define "build_rhel4 1" \
--define "build_sqlite 1" \
bacula-1.38.3-1.src.rpm
rpmbuild --rebuild \
--define "build_rhel4 1" \
--define "build_postgresql 1" \
bacula-1.38.3-1.src.rpm
rpmbuild --rebuild \
--define "build_rhel4 1" \
--define "build_mysql 1" \
--define "build_mysql4 1" \
bacula-1.38.3-1.src.rpm
For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
For 64 bit support add '--define "build_x86_64 1"'
The spec file currently supports building on the following platforms:
# RedHat builds
--define "build_rh7 1"
--define "build_rh8 1"
--define "build_rh9 1"
# Fedora Core build
--define "build_fc1 1"
--define "build_fc3 1"
--define "build_fc4 1"
# Whitebox Enterprise build
--define "build_wb3 1"
# RedHat Enterprise builds
--define "build_rhel3 1"
--define "build_rhel4 1"
# CentOS build
--define "build_centos4 1"
# SuSE build
--define "build_su9 1"
# Mandrake build
--define "build_mdk 1"
MySQL support:
--define "build_mysql 1"
# if using mysql 4.x define this and mysql above
# currently: Mandrake 10.x, SuSE 9.x, RHEL4
--define "build_mysql4 1"
PostgreSQL support:
--define "build_postgresql 1"
Sqlite support:
--define "build_sqlite 1"
Next: The Bootstrap File
Up: Bacula User's Guide
Previous: Using Bacula to Improve
Contents
Index
2006-01-19