]> git.sur5r.net Git - bacula/docs/blob - docs/manual/rpm-faq.tex
kes Make sure valid argument passed to str_to_utime() where Arno
[bacula/docs] / docs / manual / rpm-faq.tex
1 %%
2 %%
3
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
10 Packaging FAQ}
11
12 \begin{enumerate}
13 \item 
14    \ilink{How do I build Bacula for platform xxx?}{faq1}  
15 \item 
16    \ilink{How do I control which database support gets built?}{faq2} 
17
18 \item 
19    \ilink{What other defines are used?}{faq3}  
20 \item 
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}  
23 \item 
24    \ilink{I'm building my own rpms but on all platforms and compiles I get an
25    unresolved dependancy for something called
26    /usr/afsws/bin/pagsh.}{faq5} 
27 \item 
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} 
30 \item 
31    \ilink{Is there an easier way than sorting out all these command line options?}{faq7}
32 \item 
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}  
34 \end{enumerate}
35
36 \subsection*{Answers}
37 \index[general]{Answers }
38 \addcontentsline{toc}{subsection}{Answers}
39
40 \begin{enumerate}
41 \item 
42    \label{faq1}
43    {\bf How do I build Bacula for platform xxx?}
44    The bacula spec file contains defines to build for several platforms:
45    RedHat 7.x (rh7), RedHat 8.0 (rh8), RedHat 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 RedHat 7.x package find the line in the spec file
54    which reads
55
56 \footnotesize
57 \begin{verbatim}
58         %define rh7 0
59         
60 \end{verbatim}
61 \normalsize
62
63 and edit it to read  
64
65 \footnotesize
66 \begin{verbatim}
67         %define rh7 1
68         
69 \end{verbatim}
70 \normalsize
71
72 Alternately you may pass the define on the command line when calling rpmbuild:
73  
74
75 \footnotesize
76 \begin{verbatim}
77         rpmbuild -ba --define "build_rh7 1" bacula.spec
78         rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
79         
80 \end{verbatim}
81 \normalsize
82
83 \item 
84    \label{faq2}
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  
89
90 \footnotesize
91 \begin{verbatim}
92         %define mysql 0
93         OR
94         %define mysql4 0
95         
96 \end{verbatim}
97 \normalsize
98
99 to  
100
101 \footnotesize
102 \begin{verbatim}
103         %define mysql 1
104         OR
105         %define mysql4 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         
117 \end{verbatim}
118 \normalsize
119
120 \item 
121    \label{faq3}
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.
128 \item 
129    \label{faq4}
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:
139
140 \footnotesize
141 \begin{verbatim}
142         chmod -R 777 /usr/src/redhat
143         chmod -R 777 /usr/src/RPM
144         chmod -R 777 /usr/src/packages
145         
146 \end{verbatim}
147 \normalsize
148
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
152
153 {\tt .rpmmacros} 
154
155 in your home directory (or edit  the file if it already exists)
156 and add the following line:  
157
158 \footnotesize
159 \begin{verbatim}
160         %_topdir /home/myuser/redhat
161         
162 \end{verbatim}
163 \normalsize
164
165 Another handy directive for the .rpmmacros file if you wish to supress the
166 creation of debug rpm packages is:
167
168 \footnotesize
169 \begin{verbatim}
170         %debug_package %{nil}
171         
172 \end{verbatim}
173
174 \normalsize
175
176 \item 
177    \label{faq5}
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.
188
189 \item 
190    \label{faq6}
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.
195
196 \item 
197    \label{faq7}
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.
202
203 \item 
204    \label{faq8}
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:
206
207 \footnotesize
208 \begin{verbatim}
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
212         
213 \end{verbatim}
214 \normalsize
215
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.
217
218
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 
223    not RHEL4.
224 \end{enumerate}
225
226 \footnotesize
227 \begin{verbatim}
228 Build with one of these 3 commands:
229
230 rpmbuild --rebuild \
231         --define "build_rhel4 1" \
232         --define "build_sqlite 1" \
233         bacula-1.38.3-1.src.rpm
234
235 rpmbuild --rebuild \
236         --define "build_rhel4 1" \
237         --define "build_postgresql 1" \
238         bacula-1.38.3-1.src.rpm
239
240 rpmbuild --rebuild \
241         --define "build_rhel4 1" \
242         --define "build_mysql4 1" \
243         bacula-1.38.3-1.src.rpm
244
245 For CentOS substitute '--define "build_centos4 1"' in place of rhel4.
246
247 For 64 bit support add '--define "build_x86_64 1"'
248 \end{verbatim}
249 \normalsize
250
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:
255 \footnotesize
256 \begin{verbatim}
257 RedHat 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
268 Whitebox Enterprise build
269 --define "build_wb3 1"
270
271 RedHat Enterprise builds
272 --define "build_rhel3 1"
273 --define "build_rhel4 1"
274
275 CentOS build
276 --define "build_centos3 1"
277 --define "build_centos4 1"
278
279 SuSE build
280 --define "build_su9 1"
281 --define "build_su10 1"
282
283 Mandrake 10.x build
284 --define "build_mdk 1"
285
286 Mandriva build
287 --define "build_mdv 1"
288
289 MySQL support:
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"
298
299 PostgreSQL support:
300 --define "build_postgresql 1"
301
302 Sqlite support:
303 --define "build_sqlite 1"
304
305 Build the client rpm only in place of one of the above database full builds:
306 --define "build_client_only 1"
307
308 X86-64 support:
309 --define "build_x86_64 1"
310
311 Supress build of gnome console:
312 --define "nobuild_gconsole 1"
313
314 Build the WXWindows console:
315 requires wxGTK >= 2.6
316 --define "build_wxconsole 1"
317
318 Build python scripting support:
319 --define "build_python 1"
320
321 Modify the Packager tag for third party packages:
322 --define "contrib_packager Your Name <youremail@site.org>"
323
324 \end{verbatim}
325 \normalsize
326
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
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  
358