]> git.sur5r.net Git - bacula/docs/blob - docs/manual/rpm-faq.tex
Remove obsolete .cvsignore files.
[bacula/docs] / docs / manual / rpm-faq.tex
1 %%
2 %%
3
4 \chapter{Bacula RPM Packaging FAQ}
5 \label{RpmFaqChapter}
6 \index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging }
7 \index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ }
8
9 \begin{enumerate}
10 \item 
11    \ilink{How do I build Bacula for platform xxx?}{faq1}  
12 \item 
13    \ilink{How do I control which database support gets built?}{faq2} 
14
15 \item 
16    \ilink{What other defines are used?}{faq3}  
17 \item 
18    \ilink{I'm getting errors about not having permission when I try to build the
19    packages. Do I need to be root?}{faq4}  
20 \item 
21    \ilink{I'm building my own rpms but on all platforms and compiles I get an
22    unresolved dependency for something called
23    /usr/afsws/bin/pagsh.}{faq5} 
24 \item 
25    \ilink{I'm building my own rpms because you don't publish for my platform.
26     Can I get my packages released to sourceforge for other people to use?}{faq6} 
27 \item 
28    \ilink{Is there an easier way than sorting out all these command line options?}{faq7}
29 \item 
30    \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}  
31 \end{enumerate}
32
33 \section{Answers}
34 \index[general]{Answers }
35
36 \begin{enumerate}
37 \item 
38    \label{faq1}
39    {\bf How do I build Bacula for platform xxx?}
40    The bacula spec file contains defines to build for several platforms:
41    Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9), Fedora Core (fc1,
42    fc3, fc4, fc5, fc6), Whitebox Enterprise Linux 3.0 (wb3), Red Hat Enterprise Linux 
43    (rhel3, rhel4), Mandrake 10.x (mdk), Mandriva 2006.x (mdv) CentOS (centos3, centos4) 
44    and SuSE (su9, su10). The package build is controlled by a mandatory define set at 
45    the beginning of the file.  These defines basically just control the 
46    dependency information that gets coded into the finished rpm package as well 
47    as any special configure options required.  The platform define may be edited 
48    in the spec file directly (by default all defines are set to 0 or "not set").  
49    For example, to build the Red Hat 7.x package find the line in the spec file
50    which reads
51
52 \footnotesize
53 \begin{verbatim}
54         %define rh7 0
55         
56 \end{verbatim}
57 \normalsize
58
59 and edit it to read  
60
61 \footnotesize
62 \begin{verbatim}
63         %define rh7 1
64         
65 \end{verbatim}
66 \normalsize
67
68 Alternately you may pass the define on the command line when calling rpmbuild:
69  
70
71 \footnotesize
72 \begin{verbatim}
73         rpmbuild -ba --define "build_rh7 1" bacula.spec
74         rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
75         
76 \end{verbatim}
77 \normalsize
78
79 \item 
80    \label{faq2}
81    {\bf How do I control which database support gets built?}
82    Another mandatory build define controls which database support is compiled,
83    one of  build\_sqlite, build\_mysql or build\_postgresql. To get the MySQL
84    package and support either  set the  
85
86 \footnotesize
87 \begin{verbatim}
88         %define mysql 0
89         OR
90         %define mysql4 0
91         OR
92         %define mysql5 0
93         
94 \end{verbatim}
95 \normalsize
96
97 to  
98
99 \footnotesize
100 \begin{verbatim}
101         %define mysql 1
102         OR
103         %define mysql4 1
104         OR
105         %define mysql5 1
106         
107 \end{verbatim}
108 \normalsize
109
110 in the spec file directly or pass it to rpmbuild on the command line:  
111
112 \footnotesize
113 \begin{verbatim}
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
116         rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec
117         
118 \end{verbatim}
119 \normalsize
120
121 \item 
122    \label{faq3}
123    {\bf What other defines are used?}
124    Three other building defines of note are the depkgs\_version, docs\_version and
125    \_rescuever identifiers. These  two defines are set with each release and must 
126    match the version of those sources that are being used to build the packages. 
127    You would not ordinarily need to edit these.  See also the Build Options section 
128    below for other build time options that can be passed on the command line.
129 \item 
130    \label{faq4}
131    {\bf I'm getting errors about not having permission when I try  to build the
132    packages. Do I need to be root?}
133    No, you do not need to be root and, in fact, it is better practice to
134    build rpm packages as a non-root user.  Bacula packages are designed to
135    be built by a regular user but you must make a few changes on your
136    system to do this.  If you are building on your own system then the
137    simplest method is to add write permissions for all to the build
138    directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages).  
139    To accomplish this, execute the following command as root:
140
141 \footnotesize
142 \begin{verbatim}
143         chmod -R 777 /usr/src/redhat
144         chmod -R 777 /usr/src/RPM
145         chmod -R 777 /usr/src/packages
146         
147 \end{verbatim}
148 \normalsize
149
150 If you are working on a shared system where you can not use the method
151 above then you need to recreate the appropriate above directory tree with all
152 of its subdirectories inside your home directory.  Then create a file named
153
154 {\tt .rpmmacros} 
155
156 in your home directory (or edit  the file if it already exists)
157 and add the following line:  
158
159 \footnotesize
160 \begin{verbatim}
161         %_topdir /home/myuser/redhat
162         
163 \end{verbatim}
164 \normalsize
165
166 Another handy directive for the .rpmmacros file if you wish to suppress the
167 creation of debug rpm packages is:
168
169 \footnotesize
170 \begin{verbatim}
171         %debug_package %{nil}
172         
173 \end{verbatim}
174
175 \normalsize
176
177 \item 
178    \label{faq5}
179    {\bf I'm building my own rpms but on all platforms and compiles I get an
180    unresolved dependency for something called /usr/afsws/bin/pagsh.} This
181    is a shell from the OpenAFS (Andrew File System).  If you are seeing
182    this then you chose to include the docs/examples directory in your
183    package.  One of the example scripts in this directory is a pagsh
184    script.  Rpmbuild, when scanning for dependencies, looks at the shebang
185    line of all packaged scripts in addition to checking shared libraries.
186    To avoid this do not package the examples directory. If you are seeing this 
187    problem you are building a very old bacula package as the examples have been 
188    removed from the doc packaging.
189
190 \item 
191    \label{faq6}
192    {\bf I'm building my own rpms because you don't publish for my platform.
193     Can I get my packages released to sourceforge for other people to use?} Yes, 
194     contributions from users are accepted and appreciated. Please examine the 
195     directory platforms/contrib-rpm in the source code for further information.
196
197 \item 
198    \label{faq7}
199    {\bf Is there an easier way than sorting out all these command line options?} Yes, 
200     there is a gui wizard shell script which you can use to rebuild the src rpm package. 
201    Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will 
202    allow you to specify build options using gnome dialog screens. It requires zenity.
203
204 \item 
205    \label{faq8}
206    {\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:
207
208 \footnotesize
209 \begin{verbatim}
210         chown bacula.bacula /var/bacula/*
211         chown root.bacula /var/bacula/bacula-fd.9102.state
212         chown bacula.disk /var/bacula/bacula-sd.9103.state
213         
214 \end{verbatim}
215 \normalsize
216
217 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.
218
219
220 \item {\bf Support for RHEL3/4, CentOS 3/4 and x86\_64}
221    The examples below show
222    explicit build support for RHEL4 and CentOS 4. Build support 
223    for x86\_64 has also been added. Test builds have been done on CentOS but 
224    not RHEL4.
225 \end{enumerate}
226
227 \footnotesize
228 \begin{verbatim}
229 Build with one of these 3 commands:
230
231 rpmbuild --rebuild \
232         --define "build_rhel4 1" \
233         --define "build_sqlite 1" \
234         bacula-1.38.3-1.src.rpm
235
236 rpmbuild --rebuild \
237         --define "build_rhel4 1" \
238         --define "build_postgresql 1" \
239         bacula-1.38.3-1.src.rpm
240
241 rpmbuild --rebuild \
242         --define "build_rhel4 1" \
243         --define "build_mysql4 1" \
244         bacula-1.38.3-1.src.rpm
245
246 For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
247
248 For 64 bit support add '--define "build_x86_64 1"'
249 \end{verbatim}
250 \normalsize
251
252 \section{Build Options}
253 \index[general]{Build Options}
254 The spec file currently supports building on the following platforms:
255 \footnotesize
256 \begin{verbatim}
257 Red Hat builds
258 --define "build_rh7 1"
259 --define "build_rh8 1"
260 --define "build_rh9 1"
261
262 Fedora Core build
263 --define "build_fc1 1"
264 --define "build_fc3 1"
265 --define "build_fc4 1"
266 --define "build_fc5 1"
267 --define "build_fc6 1"
268
269 Whitebox Enterprise build
270 --define "build_wb3 1"
271
272 Red Hat Enterprise builds
273 --define "build_rhel3 1"
274 --define "build_rhel4 1"
275
276 CentOS build
277 --define "build_centos3 1"
278 --define "build_centos4 1"
279
280 SuSE build
281 --define "build_su9 1"
282 --define "build_su10 1"
283
284 Mandrake 10.x build
285 --define "build_mdk 1"
286
287 Mandriva build
288 --define "build_mdv 1"
289
290 MySQL support:
291 for mysql 3.23.x support define this
292 --define "build_mysql 1"
293 if using mysql 4.x define this,
294 currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4
295 --define "build_mysql4 1"
296 if using mysql 5.x define this,
297 currently: SuSE 10.1 & FC5
298 --define "build_mysql5 1"
299
300 PostgreSQL support:
301 --define "build_postgresql 1"
302
303 Sqlite support:
304 --define "build_sqlite 1"
305
306 Build the client rpm only in place of one of the above database full builds:
307 --define "build_client_only 1"
308
309 X86-64 support:
310 --define "build_x86_64 1"
311
312 Supress build of gnome console:
313 --define "nobuild_gconsole 1"
314
315 Build the WXWindows console:
316 requires wxGTK >= 2.6
317 --define "build_wxconsole 1"
318
319 Build python scripting support:
320 --define "build_python 1"
321
322 Modify the Packager tag for third party packages:
323 --define "contrib_packager Your Name <youremail@site.org>"
324
325 \end{verbatim}
326 \normalsize
327
328 \section{RPM Install Problems}
329 \index[general]{RPM Install Problems}
330 In general the RPMs, once properly built should install correctly.
331 However, when attempting to run the daemons, a number of problems
332 can occur:
333 \begin{itemize}
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:
340 \begin{verbatim}
341   chown bacula:bacula /var/bacula
342 \end{verbatim}
343   Note: as of 1.38.8 /var/bacula is installed root:bacula with
344   permissions 770.
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.
356 \end{itemize}
357