--- /dev/null
+%%
+%%
+
+\chapter{Bacula RPM Packaging FAQ}
+\label{RpmFaqChapter}
+\index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging }
+\index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ }
+
+\begin{enumerate}
+\item
+ \ilink{How do I build Bacula for platform xxx?}{faq1}
+\item
+ \ilink{How do I control which database support gets built?}{faq2}
+
+\item
+ \ilink{What other defines are used?}{faq3}
+\item
+ \ilink{I'm getting errors about not having permission when I try to build the
+ packages. Do I need to be root?}{faq4}
+\item
+ \ilink{I'm building my own rpms but on all platforms and compiles I get an
+ unresolved dependency for something called
+ /usr/afsws/bin/pagsh.}{faq5}
+\item
+ \ilink{I'm building my own rpms because you don't publish for my platform.
+ Can I get my packages released to sourceforge for other people to use?}{faq6}
+\item
+ \ilink{Is there an easier way than sorting out all these command line options?}{faq7}
+\item
+ \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}
+\item
+ \ilink{There are a lot of rpm packages. Which packages do I need for what?}{faq9}
+\end{enumerate}
+
+\section{Answers}
+\index[general]{Answers }
+
+\begin{enumerate}
+\item
+ \label{faq1}
+ {\bf How do I build Bacula for platform xxx?}
+ The bacula spec file contains defines to build for several platforms:
+ Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1,
+ fc3, fc4, fc5, fc6, fc7), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux
+ (rhel3, rhel4, rhel5), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4, centos5)
+ Scientific Linux (sl3, sl4, sl5) and SuSE (su9, su10, su102, su103). 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 as well
+ as any special configure options required. 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 Red Hat 7.x package find the line in the spec file
+ which reads
+
+\footnotesize
+\begin{verbatim}
+ %define rh7 0
+
+\end{verbatim}
+\normalsize
+
+and edit it to read
+
+\footnotesize
+\begin{verbatim}
+ %define rh7 1
+
+\end{verbatim}
+\normalsize
+
+Alternately you may pass the define on the command line when calling rpmbuild:
+
+
+\footnotesize
+\begin{verbatim}
+ rpmbuild -ba --define "build_rh7 1" bacula.spec
+ rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
+
+\end{verbatim}
+\normalsize
+
+\item
+ \label{faq2}
+ {\bf 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
+
+\footnotesize
+\begin{verbatim}
+ %define mysql 0
+ OR
+ %define mysql4 0
+ OR
+ %define mysql5 0
+
+\end{verbatim}
+\normalsize
+
+to
+
+\footnotesize
+\begin{verbatim}
+ %define mysql 1
+ OR
+ %define mysql4 1
+ OR
+ %define mysql5 1
+
+\end{verbatim}
+\normalsize
+
+in the spec file directly or pass it to rpmbuild on the command line:
+
+\footnotesize
+\begin{verbatim}
+ rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec
+ rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec
+ rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec
+
+\end{verbatim}
+\normalsize
+
+\item
+ \label{faq3}
+ {\bf What other defines are used?}
+ Three other building defines of note are the depkgs\_version, docs\_version and
+ \_rescuever 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. See also the Build Options section
+ below for other build time options that can be passed on the command line.
+\item
+ \label{faq4}
+ {\bf 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/, /usr/src/RPM or /usr/src/packages).
+ To accomplish this, execute the following command as root:
+
+\footnotesize
+\begin{verbatim}
+ chmod -R 777 /usr/src/redhat
+ chmod -R 777 /usr/src/RPM
+ chmod -R 777 /usr/src/packages
+
+\end{verbatim}
+\normalsize
+
+If you are working on a shared system where you can not use the method
+above then you need to recreate the appropriate above directory tree with all
+of its subdirectories inside your home directory. Then create a file named
+
+{\tt .rpmmacros}
+
+in your home directory (or edit the file if it already exists)
+and add the following line:
+
+\footnotesize
+\begin{verbatim}
+ %_topdir /home/myuser/redhat
+ %_tmppath /tmp
+
+\end{verbatim}
+\normalsize
+
+Another handy directive for the .rpmmacros file if you wish to suppress the
+creation of debug rpm packages is:
+
+\footnotesize
+\begin{verbatim}
+ %debug_package %{nil}
+
+\end{verbatim}
+
+\normalsize
+
+\item
+ \label{faq5}
+ {\bf 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. If you are seeing this
+ problem you are building a very old bacula package as the examples have been
+ removed from the doc packaging.
+
+\item
+ \label{faq6}
+ {\bf I'm building my own rpms because you don't publish for my platform.
+ Can I get my packages released to sourceforge for other people to use?} Yes,
+ contributions from users are accepted and appreciated. Please examine the
+ directory platforms/contrib-rpm in the source code for further information.
+
+\item
+ \label{faq7}
+ {\bf Is there an easier way than sorting out all these command line options?} Yes,
+ there is a gui wizard shell script which you can use to rebuild the src rpm package.
+ Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will
+ allow you to specify build options using GNOME dialog screens. It requires zenity.
+
+\item
+ \label{faq8}
+ {\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:
+
+\footnotesize
+\begin{verbatim}
+ chown bacula.bacula /var/bacula/*
+ chown root.bacula /var/bacula/bacula-fd.9102.state
+ chown bacula.disk /var/bacula/bacula-sd.9103.state
+
+\end{verbatim}
+\normalsize
+
+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.
+
+\item
+ \label{faq9}
+ {\bf There are a lot of rpm packages. Which packages do I need for
+what?} For a bacula server you need to select the packsge based upon your
+preferred catalog database: one of bacula-mysql, bacula-postgresql or
+bacula-sqlite. If your system does not provide an mtx package you also
+need bacula-mtx to satisfy that dependancy. For a client machine you need
+only install bacula-client. Optionally, for either server or client
+machines, you may install a graphical console bacula-gconsole and/or
+bacula-wxconsole. The Bacula Administration Tool is installed with the
+bacula-bat package. One last package, bacula-updatedb is required only when
+upgrading a server more than one database revision level.
+
+
+
+\item {\bf Support for RHEL3/4/5, CentOS 3/4/5, Scientific Linux 3/4/5 and x86\_64}
+ The examples below show
+ explicit build support for RHEL4 and CentOS 4. Build support
+ for x86\_64 has also been added.
+\end{enumerate}
+
+\footnotesize
+\begin{verbatim}
+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_mysql4 1" \
+ bacula-1.38.3-1.src.rpm
+
+For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
+For Scientific Linux substitute '--define "build_sl4 1"' in place of rhel4.
+
+For 64 bit support add '--define "build_x86_64 1"'
+\end{verbatim}
+\normalsize
+
+\section{Build Options}
+\index[general]{Build Options}
+The spec file currently supports building on the following platforms:
+\footnotesize
+\begin{verbatim}
+Red Hat 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"
+--define "build_fc5 1"
+--define "build_fc6 1"
+--define "build_fc7 1"
+
+Whitebox Enterprise build
+--define "build_wb3 1"
+
+Red Hat Enterprise builds
+--define "build_rhel3 1"
+--define "build_rhel4 1"
+--define "build_rhel5 1"
+
+CentOS build
+--define "build_centos3 1"
+--define "build_centos4 1"
+--define "build_centos5 1"
+
+Scientific Linux build
+--define "build_sl3 1"
+--define "build_sl4 1"
+--define "build_sl5 1"
+
+SuSE build
+--define "build_su9 1"
+--define "build_su10 1"
+--define "build_su102 1"
+--define "build_su103 1"
+
+Mandrake 10.x build
+--define "build_mdk 1"
+
+Mandriva build
+--define "build_mdv 1"
+
+MySQL support:
+for mysql 3.23.x support define this
+--define "build_mysql 1"
+if using mysql 4.x define this,
+currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4
+--define "build_mysql4 1"
+if using mysql 5.x define this,
+currently: SuSE 10.1 & FC5
+--define "build_mysql5 1"
+
+PostgreSQL support:
+--define "build_postgresql 1"
+
+Sqlite support:
+--define "build_sqlite 1"
+
+Build the client rpm only in place of one of the above database full builds:
+--define "build_client_only 1"
+
+X86-64 support:
+--define "build_x86_64 1"
+
+Supress build of bgnome-console:
+--define "nobuild_gconsole 1"
+
+Build the WXWindows console:
+requires wxGTK >= 2.6
+--define "build_wxconsole 1"
+
+Build the Bacula Administration Tool:
+requires QT >= 4.2
+--define "build_bat 1"
+
+Build python scripting support:
+--define "build_python 1"
+
+Modify the Packager tag for third party packages:
+--define "contrib_packager Your Name <youremail@site.org>"
+
+\end{verbatim}
+\normalsize
+
+\section{RPM Install Problems}
+\index[general]{RPM Install Problems}
+In general the RPMs, once properly built should install correctly.
+However, when attempting to run the daemons, a number of problems
+can occur:
+\begin{itemize}
+\item [Wrong /var/bacula Permissions]
+ By default, the Director and Storage daemon do not run with
+ root permission. If the /var/bacula is owned by root, then it
+ is possible that the Director and the Storage daemon will not
+ be able to access this directory, which is used as the Working
+ Directory. To fix this, the easiest thing to do is:
+\begin{verbatim}
+ chown bacula:bacula /var/bacula
+\end{verbatim}
+ Note: as of 1.38.8 /var/bacula is installed root:bacula with
+ permissions 770.
+\item [The Storage daemon cannot Access the Tape drive]
+ This can happen in some older RPM releases where the Storage
+ daemon ran under userid bacula, group bacula. There are two
+ ways of fixing this: the best is to modify the /etc/init.d/bacula-sd
+ file so that it starts the Storage daemon with group "disk".
+ The second way to fix the problem is to change the permissions
+ of your tape drive (usually /dev/nst0) so that Bacula can access it.
+ You will probably need to change the permissions of the SCSI control
+ device as well, which is usually /dev/sg0. The exact names depend
+ on your configuration, please see the Tape Testing chapter for
+ more information on devices.
+\end{itemize}
+