4 \section*{Bacula\raisebox{.6ex}{{\footnotesize
5 \textsuperscript{\textregistered}}} - RPM Packaging FAQ}
6 \label{_ChapterStart34}
7 \index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging }
8 \index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ }
9 \addcontentsline{toc}{section}{Bacula\textsuperscript{\textregistered} - RPM
14 \ilink{How do I build Bacula for platform xxx?}{faq1}
16 \ilink{How do I control which database support gets built?}{faq2}
19 \ilink{What other defines are used?}{faq3}
21 \ilink{I'm getting errors about not having permission when I try to build the
22 packages. Do I need to be root?}{faq4}
24 \ilink{I'm building my own rpms but on all platforms and compiles I get an
25 unresolved dependency for something called
26 /usr/afsws/bin/pagsh.}{faq5}
28 \ilink{I'm building my own rpms because you don't publish for my platform.
29 Can I get my packages released to sourceforge for other people to use?}{faq6}
31 \ilink{Is there an easier way than sorting out all these command line options?}{faq7}
33 \ilink{I just upgraded from 1.36.x to 1.38.x and now my director daemon won't start. It appears to start but dies silently and I get a "connection refused" error when starting the console. What is wrong?}{faq8}
37 \index[general]{Answers }
38 \addcontentsline{toc}{subsection}{Answers}
43 {\bf How do I build Bacula for platform xxx?}
44 The bacula spec file contains defines to build for several platforms:
45 Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1,
46 fc3, fc4, fc5), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux
47 (rhel3, rhel4), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4)
48 and SuSE (su9, su10). The package build is controlled by a mandatory define set at
49 the beginning of the file. These defines basically just control the
50 dependency information that gets coded into the finished rpm package as well
51 as any special configure options required. The platform define may be edited
52 in the spec file directly (by default all defines are set to 0 or "not set").
53 For example, to build the Red Hat 7.x package find the line in the spec file
72 Alternately you may pass the define on the command line when calling rpmbuild:
77 rpmbuild -ba --define "build_rh7 1" bacula.spec
78 rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
85 {\bf How do I control which database support gets built?}
86 Another mandatory build define controls which database support is compiled,
87 one of build\_sqlite, build\_mysql or build\_postgresql. To get the MySQL
88 package and support either set the
110 in the spec file directly or pass it to rpmbuild on the command line:
114 rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec
115 rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec
122 {\bf What other defines are used?}
123 Three other building defines of note are the depkgs\_version, docs\_version and
124 \_rescuever identifiers. These two defines are set with each release and must
125 match the version of those sources that are being used to build the packages.
126 You would not ordinarily need to edit these. See also the Build Options section
127 below for other build time options that can be passed on the command line.
130 {\bf I'm getting errors about not having permission when I try to build the
131 packages. Do I need to be root?}
132 No, you do not need to be root and, in fact, it is better practice to
133 build rpm packages as a non-root user. Bacula packages are designed to
134 be built by a regular user but you must make a few changes on your
135 system to do this. If you are building on your own system then the
136 simplest method is to add write permissions for all to the build
137 directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages).
138 To accomplish this, execute the following command as root:
142 chmod -R 777 /usr/src/redhat
143 chmod -R 777 /usr/src/RPM
144 chmod -R 777 /usr/src/packages
149 If you are working on a shared system where you can not use the method
150 above then you need to recreate the appropriate above directory tree with all
151 of its subdirectories inside your home directory. Then create a file named
155 in your home directory (or edit the file if it already exists)
156 and add the following line:
160 %_topdir /home/myuser/redhat
165 Another handy directive for the .rpmmacros file if you wish to suppress the
166 creation of debug rpm packages is:
170 %debug_package %{nil}
178 {\bf I'm building my own rpms but on all platforms and compiles I get an
179 unresolved dependency for something called /usr/afsws/bin/pagsh.} This
180 is a shell from the OpenAFS (Andrew File System). If you are seeing
181 this then you chose to include the docs/examples directory in your
182 package. One of the example scripts in this directory is a pagsh
183 script. Rpmbuild, when scanning for dependencies, looks at the shebang
184 line of all packaged scripts in addition to checking shared libraries.
185 To avoid this do not package the examples directory. If you are seeing this
186 problem you are building a very old bacula package as the examples have been
187 removed from the doc packaging.
191 {\bf I'm building my own rpms because you don't publish for my platform.
192 Can I get my packages released to sourceforge for other people to use?} Yes,
193 contributions from users are accepted and appreciated. Please examine the
194 directory platforms/contrib-rpm in the source code for further information.
198 {\bf Is there an easier way than sorting out all these command line options?} Yes,
199 there is a gui wizard shell script which you can use to rebuild the src rpm package.
200 Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will
201 allow you to specify build options using gnome dialog screens. It requires zenity.
205 {\bf I just upgraded from 1.36.x to 1.38.x and now my director daemon won't start. It appears to start but dies silently and I get a "connection refused" error when starting the console. What is wrong?} Beginning with 1.38 the rpm packages are configured to run the director and storage daemons as a non-root user. The file daemon runs as user root and group bacula, the storage daemon as user bacula and group disk, and the director as user bacula and group bacula. If you are upgrading you will need to change some file permissions for things to work. Execute the following commands as root:
209 chown bacula.bacula /var/bacula/*
210 chown root.bacula /var/bacula/bacula-fd.9102.state
211 chown bacula.disk /var/bacula/bacula-sd.9103.state
216 Further, if you are using File storage volumes rather than tapes those files will also need to have ownership set to user bacula and group bacula.
219 \item {\bf Support for RHEL3/4, CentOS 3/4 and x86\_64}
220 The examples below show
221 explicit build support for RHEL4 and CentOS 4. Build support
222 for x86\_64 has also been added. Test builds have been done on CentOS but
228 Build with one of these 3 commands:
231 --define "build_rhel4 1" \
232 --define "build_sqlite 1" \
233 bacula-1.38.3-1.src.rpm
236 --define "build_rhel4 1" \
237 --define "build_postgresql 1" \
238 bacula-1.38.3-1.src.rpm
241 --define "build_rhel4 1" \
242 --define "build_mysql4 1" \
243 bacula-1.38.3-1.src.rpm
245 For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
247 For 64 bit support add '--define "build_x86_64 1"'
251 \subsection*{Build Options}
252 \index[general]{Build Options}
253 \addcontentsline{toc}{subsection}{Build Options}
254 The spec file currently supports building on the following platforms:
258 --define "build_rh7 1"
259 --define "build_rh8 1"
260 --define "build_rh9 1"
263 --define "build_fc1 1"
264 --define "build_fc3 1"
265 --define "build_fc4 1"
266 --define "build_fc5 1"
268 Whitebox Enterprise build
269 --define "build_wb3 1"
271 Red Hat Enterprise builds
272 --define "build_rhel3 1"
273 --define "build_rhel4 1"
276 --define "build_centos3 1"
277 --define "build_centos4 1"
280 --define "build_su9 1"
281 --define "build_su10 1"
284 --define "build_mdk 1"
287 --define "build_mdv 1"
290 for mysql 3.23.x support define this
291 --define "build_mysql 1"
292 if using mysql 4.x define this,
293 currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4
294 --define "build_mysql4 1"
295 if using mysql 5.x define this,
296 currently: SuSE 10.1 & FC5
297 --define "build_mysql5 1"
300 --define "build_postgresql 1"
303 --define "build_sqlite 1"
305 Build the client rpm only in place of one of the above database full builds:
306 --define "build_client_only 1"
309 --define "build_x86_64 1"
311 Supress build of gnome console:
312 --define "nobuild_gconsole 1"
314 Build the WXWindows console:
315 requires wxGTK >= 2.6
316 --define "build_wxconsole 1"
318 Build python scripting support:
319 --define "build_python 1"
321 Modify the Packager tag for third party packages:
322 --define "contrib_packager Your Name <youremail@site.org>"
327 \subsection*{RPM Install Problems}
328 \index[general]{RPM Install Problems}
329 \addcontentsline{toc}{subsection}{RPM Install Options}
330 In general the RPMs, once properly built should install correctly.
331 However, when attempting to run the daemons, a number of problems
334 \item [Wrong /var/bacula Permissions]
335 By default, the Director and Storage daemon do not run with
336 root permission. If the /var/bacula is owned by root, then it
337 is possible that the Director and the Storage daemon will not
338 be able to access this directory, which is used as the Working
339 Directory. To fix this, the easiest thing to do is:
341 chown bacula:bacula /var/bacula
343 Note: as of 1.38.8 /var/bacula is installed root:bacula with
345 \item [The Storage daemon cannot Access the Tape drive]
346 This can happen in some older RPM releases where the Storage
347 daemon ran under userid bacula, group bacula. There are two
348 ways of fixing this: the best is to modify the /etc/init.d/bacula-sd
349 file so that it starts the Storage daemon with group "disk".
350 The second way to fix the problem is to change the permissions
351 of your tape drive (usually /dev/nst0) so that Bacula can access it.
352 You will probably need to change the permissions of the SCSI control
353 device as well, which is usually /dev/sg0. The exact names depend
354 on your configuration, please see the Tape Testing chapter for
355 more information on devices.