]> git.sur5r.net Git - bacula/docs/blob - docs/manual/rpm-faq.tex
Update FOSDEM talk
[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), 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         
92 \end{verbatim}
93 \normalsize
94
95 to  
96
97 \footnotesize
98 \begin{verbatim}
99         %define mysql 1
100         OR
101         %define mysql4 1
102         
103 \end{verbatim}
104 \normalsize
105
106 in the spec file directly or pass it to rpmbuild on the command line:  
107
108 \footnotesize
109 \begin{verbatim}
110         rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec
111         rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec
112         
113 \end{verbatim}
114 \normalsize
115
116 \item 
117    \label{faq3}
118    {\bf What other defines are used?}
119    Three other building defines of note are the depkgs\_version, docs\_version and
120    \_rescuever identifiers. These  two defines are set with each release and must 
121    match the version of those sources that are being used to build the packages. 
122    You would not ordinarily need to edit these.  See also the Build Options section 
123    below for other build time options that can be passed on the command line.
124 \item 
125    \label{faq4}
126    {\bf I'm getting errors about not having permission when I try  to build the
127    packages. Do I need to be root?}
128    No, you do not need to be root and, in fact, it is better practice to
129    build rpm packages as a non-root user.  Bacula packages are designed to
130    be built by a regular user but you must make a few changes on your
131    system to do this.  If you are building on your own system then the
132    simplest method is to add write permissions for all to the build
133    directory (/usr/src/redhat/, /usr/src/RPM or /usr/src/packages).  
134    To accomplish this, execute the following command as root:
135
136 \footnotesize
137 \begin{verbatim}
138         chmod -R 777 /usr/src/redhat
139         chmod -R 777 /usr/src/RPM
140         chmod -R 777 /usr/src/packages
141         
142 \end{verbatim}
143 \normalsize
144
145 If you are working on a shared system where you can not use the method
146 above then you need to recreate the appropriate above directory tree with all
147 of its subdirectories inside your home directory.  Then create a file named
148
149 {\tt .rpmmacros} 
150
151 in your home directory (or edit  the file if it already exists)
152 and add the following line:  
153
154 \footnotesize
155 \begin{verbatim}
156         %_topdir /home/myuser/redhat
157         
158 \end{verbatim}
159 \normalsize
160
161 Another handy directive for the .rpmmacros file if you wish to suppress the
162 creation of debug rpm packages is:
163
164 \footnotesize
165 \begin{verbatim}
166         %debug_package %{nil}
167         
168 \end{verbatim}
169
170 \normalsize
171
172 \item 
173    \label{faq5}
174    {\bf I'm building my own rpms but on all platforms and compiles I get an
175    unresolved dependency for something called /usr/afsws/bin/pagsh.} This
176    is a shell from the OpenAFS (Andrew File System).  If you are seeing
177    this then you chose to include the docs/examples directory in your
178    package.  One of the example scripts in this directory is a pagsh
179    script.  Rpmbuild, when scanning for dependencies, looks at the shebang
180    line of all packaged scripts in addition to checking shared libraries.
181    To avoid this do not package the examples directory. If you are seeing this 
182    problem you are building a very old bacula package as the examples have been 
183    removed from the doc packaging.
184
185 \item 
186    \label{faq6}
187    {\bf I'm building my own rpms because you don't publish for my platform.
188     Can I get my packages released to sourceforge for other people to use?} Yes, 
189     contributions from users are accepted and appreciated. Please examine the 
190     directory platforms/contrib-rpm in the source code for further information.
191
192 \item 
193    \label{faq7}
194    {\bf Is there an easier way than sorting out all these command line options?} Yes, 
195     there is a gui wizard shell script which you can use to rebuild the src rpm package. 
196    Look in the source archive for platforms/contrib-rpm/rpm\_wizard.sh. This script will 
197    allow you to specify build options using gnome dialog screens. It requires zenity.
198
199 \item 
200    \label{faq8}
201    {\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:
202
203 \footnotesize
204 \begin{verbatim}
205         chown bacula.bacula /var/bacula/*
206         chown root.bacula /var/bacula/bacula-fd.9102.state
207         chown bacula.disk /var/bacula/bacula-sd.9103.state
208         
209 \end{verbatim}
210 \normalsize
211
212 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.
213
214
215 \item {\bf Support for RHEL3/4, CentOS 3/4 and x86\_64}
216    The examples below show
217    explicit build support for RHEL4 and CentOS 4. Build support 
218    for x86\_64 has also been added. Test builds have been done on CentOS but 
219    not RHEL4.
220 \end{enumerate}
221
222 \footnotesize
223 \begin{verbatim}
224 Build with one of these 3 commands:
225
226 rpmbuild --rebuild \
227         --define "build_rhel4 1" \
228         --define "build_sqlite 1" \
229         bacula-1.38.3-1.src.rpm
230
231 rpmbuild --rebuild \
232         --define "build_rhel4 1" \
233         --define "build_postgresql 1" \
234         bacula-1.38.3-1.src.rpm
235
236 rpmbuild --rebuild \
237         --define "build_rhel4 1" \
238         --define "build_mysql4 1" \
239         bacula-1.38.3-1.src.rpm
240
241 For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
242
243 For 64 bit support add '--define "build_x86_64 1"'
244 \end{verbatim}
245 \normalsize
246
247 \section{Build Options}
248 \index[general]{Build Options}
249 The spec file currently supports building on the following platforms:
250 \footnotesize
251 \begin{verbatim}
252 Red Hat builds
253 --define "build_rh7 1"
254 --define "build_rh8 1"
255 --define "build_rh9 1"
256
257 Fedora Core build
258 --define "build_fc1 1"
259 --define "build_fc3 1"
260 --define "build_fc4 1"
261 --define "build_fc5 1"
262
263 Whitebox Enterprise build
264 --define "build_wb3 1"
265
266 Red Hat Enterprise builds
267 --define "build_rhel3 1"
268 --define "build_rhel4 1"
269
270 CentOS build
271 --define "build_centos3 1"
272 --define "build_centos4 1"
273
274 SuSE build
275 --define "build_su9 1"
276 --define "build_su10 1"
277
278 Mandrake 10.x build
279 --define "build_mdk 1"
280
281 Mandriva build
282 --define "build_mdv 1"
283
284 MySQL support:
285 for mysql 3.23.x support define this
286 --define "build_mysql 1"
287 if using mysql 4.x define this,
288 currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4
289 --define "build_mysql4 1"
290 if using mysql 5.x define this,
291 currently: SuSE 10.1 & FC5
292 --define "build_mysql5 1"
293
294 PostgreSQL support:
295 --define "build_postgresql 1"
296
297 Sqlite support:
298 --define "build_sqlite 1"
299
300 Build the client rpm only in place of one of the above database full builds:
301 --define "build_client_only 1"
302
303 X86-64 support:
304 --define "build_x86_64 1"
305
306 Supress build of gnome console:
307 --define "nobuild_gconsole 1"
308
309 Build the WXWindows console:
310 requires wxGTK >= 2.6
311 --define "build_wxconsole 1"
312
313 Build python scripting support:
314 --define "build_python 1"
315
316 Modify the Packager tag for third party packages:
317 --define "contrib_packager Your Name <youremail@site.org>"
318
319 \end{verbatim}
320 \normalsize
321
322 \section{RPM Install Problems}
323 \index[general]{RPM Install Problems}
324 In general the RPMs, once properly built should install correctly.
325 However, when attempting to run the daemons, a number of problems
326 can occur:
327 \begin{itemize}
328 \item [Wrong /var/bacula Permissions]
329   By default, the Director and Storage daemon do not run with
330   root permission. If the /var/bacula is owned by root, then it
331   is possible that the Director and the Storage daemon will not
332   be able to access this directory, which is used as the Working
333   Directory. To fix this, the easiest thing to do is:
334 \begin{verbatim}
335   chown bacula:bacula /var/bacula
336 \end{verbatim}
337   Note: as of 1.38.8 /var/bacula is installed root:bacula with
338   permissions 770.
339 \item [The Storage daemon cannot Access the Tape drive]
340   This can happen in some older RPM releases where the Storage
341   daemon ran under userid bacula, group bacula.  There are two
342   ways of fixing this: the best is to modify the /etc/init.d/bacula-sd
343   file so that it starts the Storage daemon with group "disk".
344   The second way to fix the problem is to change the permissions
345   of your tape drive (usually /dev/nst0) so that Bacula can access it.
346   You will probably need to change the permissions of the SCSI control
347   device as well, which is usually /dev/sg0.  The exact names depend
348   on your configuration, please see the Tape Testing chapter for
349   more information on devices.
350 \end{itemize}
351