5 \chapter{FAQ Création de paquets RPM Bacula}
7 \index[general]{FAQ!Bacula\textsuperscript{\textregistered} - RPM Packaging }
8 \index[general]{Bacula\textsuperscript{\textregistered} - RPM Packaging FAQ }
12 \subsection{Questions}
15 \item \ztitleref{faq1}
16 \item \ztitleref{faq2}
17 \item \ztitleref{faq3}
18 \item \ztitleref{faq4}
19 \item \ztitleref{faq5}
20 \item \ztitleref{faq6}
21 \item \ztitleref{faq7}
22 \item \ztitleref{faq8}
23 \item \ztitleref{faq9}
28 \subsubsection{Comment compiler Bacula pour la plate-forme xxx?}\zlabel{faq1}
29 Le fichier de spec de Bacula contient des \texttt{define} permettant de le
30 compiler pour plusieurs plates-formes :
32 \item Red Hat 7.x (rh7), Red Hat 8.0 (rh8), Red Hat 9 (rh9),
33 \item Fedora Core (fc1, fc3, fc4, fc5, fc6, fc7, fc8),
34 \item Whitebox Enterprise Linux 3.0 (wb3),
35 \item Red Hat Enterprise Linux (rhel3, rhel4, rhel5),
36 \item Mandrake 10.x (mdk), Mandriva 2006.x (mdv),
37 \item CentOS (centos3, centos4, centos5)
38 \item Scientific Linux (sl3, sl4, sl5) and
39 \item SuSE (su9, su10, su102, su103, su110).
42 La construction du paquet est contrôlée par un ensemble de \texttt{define}
43 obligatoires au début du fichier spec. Ces \texttt{define} sont là pour
44 déterminer les informations de dépendances contenues dans les paquets RPM
45 résultants, ainsi que des options spécifiques à \texttt{configure}.
46 Le \texttt{define} de plate-forme peut aussi être modifié directement dans
47 le fichier de spec (par défault tous les \texttt{define} sont à 0 ou "not set"
48 ). Par exemple, pour construire le paquet pour Redhat 7.x, il suffit de
49 trouver la ligne suivante du fichier de spec :
57 et de la modifier de la façon suivante :
65 Une autre possibilité est de passer le define en ligne de commande de rpmbuild :
69 rpmbuild -ba --define "build_rh7 1" bacula.spec
70 rpmbuild --rebuild --define build_rh7 1" bacula-x.x.x-x.src.rpm
75 \subsubsection{Comment décider quel sera le support des bases de données}\zlabel{faq2}
76 Un autre \texttt{define} obligatoire décide du support des bases de données
77 dans le binaire résultant, c'est un des suivants :
79 \item \texttt{build\_sqlite}
80 \item \texttt{build\_mysql}
81 \item \texttt{build\_postgresql}
83 Pour construire le paquet avec le support de MySQL, sans distinction de
84 version, il faut modifier les lignes suivantes :
108 dans le fichier de spec ou bien en les passant en ligne de commande à rpmbuild :
112 rpmbuild -ba --define "build_rh7 1" --define "build_mysql 1" bacula.spec
113 rpmbuild -ba --define "build_rh7 1" --define "build_mysql4 1" bacula.spec
114 rpmbuild -ba --define "build_rh7 1" --define "build_mysql5 1" bacula.spec
119 \subsubsection{Quels autres defines peuvent être utilisés ?}\zlabel{faq3}
120 Trois autres defines à noter sont \texttt{depkgs\_version},
121 \texttt{docs\_version} et \texttt{\_rescuever}. Ces deux defines sont
122 modifiés à chaque release et doivent correspondre à la version des sources
123 utilisées pour construire les paquets. En temps normal, vous n'avez pas
124 besoin de les omdifier. Voyez aussi la section "Build Options" plus bas pour
125 les autres options de construction qui peuvent être passées en ligne de
128 \subsubsection{Je rencontre des erreurs de permissions quand j'essaie de
129 construire les paquets. Dois-je être root ?}\zlabel{faq4}
130 Non, vous n'avez pas besoin d'être root, et c'est en fait une bonne habitude
131 de construire les paquets RPM en utilisateur non privilégié. Les paquets de
132 Bacula sont prévus pour être construits en tant qu'utilisateur normal, mais
133 vous devez effectuez quelques modifications à votre système pour que cela
134 fonctionne. Si vous construisez les paquets sur votre propre système, la
135 méthode la plus simple est d'ajouter des permissions en écriture à tout le
136 monde sur les répertoires de construction (/usr/src/redhat/, /usr/src/RPM or
138 Pour ce faire, tapez les commandes suivantes en tant que root :
142 chmod -R 777 /usr/src/redhat
143 chmod -R 777 /usr/src/RPM
144 chmod -R 777 /usr/src/packages
148 Si vous travaillez sur un système partagé où vous ne pouvez pas utliser la
149 méthode ci-dessus, vous devez créer l'arborescence ci-dessus dans votre
150 répertoire personnel (home). Créez ensuite un fichier appelé {\tt .rpmmacros}
151 dans votre répertoire pesonnel (ou modifiez le fichier s'il existe déjà) pour
152 avoir le contenu de fichier suivant :
156 %_topdir /home/myuser/redhat
161 Une autre directive pratique pour empêcher la création de paquets RPM de debug
162 peut être ajoutée à votre fichier {\tt .rpmmacros} :
166 %debug_package %{nil}
171 \subsubsection{Je construis mes propres RPMs mais sur toutes les
172 plates-formes, j'ai une dépendance non résolue sur /usr/afsws/bin/pagsh.}
174 C'est un shell de l'OpenAFS (Andrew File System). Si vous rencontrez cette
175 erreur, c'est que vous avez choisi d'inclure le répertoire docs/examples dans
176 votre paquet. Un des scripts d'exemple de ce répertoire est un script pagsh.
177 Quand {\tt rpmbuild} analyse les dépendances, il vérifie la présence de la
178 ligne shebang de tous les scripts inclus dans le package, en plus des
179 vérifications de librairies partagées. Pour ne pas avoir cette dépendance, il
180 ne faut pas include le répertoire des exemples dans le paquet. Si vous
181 rencontrez de problème, vous devez être en train de construire un paquet
182 d'une très vieille version de Bacula, car les exemples ont été supprimés du
183 paquet de documentation.
185 \subsubsection{Je construis mes propres RPMs car vous ne les fournissez pas
186 pour ma plate-forme. Puis-je publier mes paquets sur Sourceforge pour qu'ils
187 servent à d'autres ?}\zlabel{faq6}
188 Oui, les contributions de la part d'utilisateurs sont acceptées et bien sûr
189 appréciées ! Consultez le répertoire \texttt{platforms/contrib-rpm} dans les
190 sources pour plus de détails.
192 \subsubsection{Existe-t'il une solution plus simple que d'utiliser toutes ces
193 options en ligne de commmande ?}\zlabel{faq7}
194 Oui, il y a un assistant graphique que vous pouvez utiliser pour construire
195 le paquet src RPM. Vous trouverez dans les sources le script
196 \texttt{platforms/contrib-rpm/rpm\_wizard.sh}, il vous permettra de spécifier
197 les options de construction en passant par une interface graphique GNOME. Ce
198 script nécessite d'avoir zenity installé.
200 \subsubsection{Je viens juste mettre à jour Bacula de la version 1.36.x en
201 1.38.x et le Director Daemon ne démarre plus. Il semble démarrer mais plante
202 en silence, et j'ai une erreur "connection refused" quand je démarre la
203 console.} \zlabel{faq8}
204 A partir de la version 1.38, les paquets RPMS sont paramétrés pour exécuter
205 les daemons Director et Storage en tant qu'utilisateur non privilégié
206 (non-root). Le File Daemon est exécuté en tant qu'utilisateur root et groupe
207 bacula, le Storage Daemon en tant qu'utilisateur bacula et groupe disk, et le
208 Director en tant qu'utilisateur bacula et groupe bacula. Lors de la mise à
209 jour, il faut modifier les droits sur certains fichier pour que tout
210 fonctionne. Lancez les commandes suivantes en tant que root :
214 chown bacula.bacula /var/bacula/*
215 chown root.bacula /var/bacula/bacula-fd.9102.state
216 chown bacula.disk /var/bacula/bacula-sd.9103.state
220 Ensuite, si vous utilisez des volumes de type File plutôt que des bandes, ces
221 fichiers devront appartenir à l'utilisateur bacula et au groupe bacula.
223 \subsubsection{Il y a beaucoup de paquets RPM, duquel ai-je besoin pour quel
225 Pour un serveur Bacula, vous devez choisir le paquet suivant le système de
226 base de données que vous utiliserez pour le catalogue : c'est soit
227 bacula-mysql, bacula-postgresql ou bacula-sqlite. Si votre système ne fournit
228 pas de paquet pour mtx, vous devez installer bacula-mtx pour satisfaire la
229 dépendance. Pour une machine client, vous devez seulement installer
230 bacula-client. Pour soit un serveur ou uyn client, vous pouvez installer
231 les consoles graphiques bacula-gconsole et/ou bacula-wxconsole. BAT (Bacula
232 Administration Tool) est installé par le paquet bacula-bat. Pour finir, le
233 paquet bacula-updatedb est requis seulement lors des mises à jour d'un
234 serveur, de plus d'un niveau de révision de base de données.
237 \section{Support for RHEL3/4/5, CentOS 3/4/5, Scientific Linux 3/4/5 and x86\_64}
239 Les exemples ci-dessous démontrent des constructions avec le support
240 explicite de la RHEL4 et de la CentOS4. Le support de l'architecture x86\_64
241 a également été ajouté.
243 Lancez la construction avec une de ces trois commandes :
248 --define "build_rhel4 1" \
249 --define "build_sqlite 1" \
250 bacula-1.38.3-1.src.rpm
253 --define "build_rhel4 1" \
254 --define "build_postgresql 1" \
255 bacula-1.38.3-1.src.rpm
258 --define "build_rhel4 1" \
259 --define "build_mysql4 1" \
260 bacula-1.38.3-1.src.rpm
264 Pour la CentOS, indiquez {\tt--define "build\_centos4 1"} à la place de rhel4.
265 Pour la Scientific Linux, indiquez {\tt--define "build\_sl4 1"} à la place de
268 Pour le support du 64 bits, ajoutez {\tt--define "build\_x86\_64 1"}
270 \section{Options de construction}
271 \index[general]{Options de construction}
272 Le fichier de spec supporte actuellement la construction sur les plateformes
277 --define "build_rh7 1"
278 --define "build_rh8 1"
279 --define "build_rh9 1"
282 --define "build_fc1 1"
283 --define "build_fc3 1"
284 --define "build_fc4 1"
285 --define "build_fc5 1"
286 --define "build_fc6 1"
287 --define "build_fc7 1"
288 --define "build_fc8 1"
289 --define "build_fc9 1"
291 Whitebox Enterprise build
292 --define "build_wb3 1"
294 Red Hat Enterprise builds
295 --define "build_rhel3 1"
296 --define "build_rhel4 1"
297 --define "build_rhel5 1"
300 --define "build_centos3 1"
301 --define "build_centos4 1"
302 --define "build_centos5 1"
304 Scientific Linux build
305 --define "build_sl3 1"
306 --define "build_sl4 1"
307 --define "build_sl5 1"
310 --define "build_su9 1"
311 --define "build_su10 1"
312 --define "build_su102 1"
313 --define "build_su103 1"
314 --define "build_su110 1"
315 --define "build_su111 1"
318 --define "build_mdk 1"
321 --define "build_mdv 1"
324 for mysql 3.23.x support define this
325 --define "build_mysql 1"
326 if using mysql 4.x define this,
327 currently: Mandrake 10.x, Mandriva 2006.0, SuSE 9.x & 10.0, FC4 & RHEL4
328 --define "build_mysql4 1"
329 if using mysql 5.x define this,
330 currently: SuSE 10.1 & FC5
331 --define "build_mysql5 1"
334 --define "build_postgresql 1"
337 --define "build_sqlite 1"
339 Build the client rpm only in place of one of the above database full builds:
340 --define "build_client_only 1"
343 --define "build_x86_64 1"
345 Supress build of bgnome-console:
346 --define "nobuild_gconsole 1"
348 Build the WXWindows console:
349 requires wxGTK >= 2.6
350 --define "build_wxconsole 1"
352 Build the Bacula Administration Tool:
354 --define "build_bat 1"
356 Build python scripting support:
357 --define "build_python 1"
359 Modify the Packager tag for third party packages:
360 --define "contrib_packager Your Name <youremail@site.org>"
362 Install most files to /opt/bacula directory:
363 --define "single_dir_install 1"
365 Build the rescue files:
366 --define "build_rescue 1"
371 \section{Problèmes d'installation de RPMs}
372 \index[general]{Problèmes d'installation de RPMs}
373 Une fois qu'ils sont correctement construits, les paquets RPM s'installent en
374 général sans problème. Toute fois, certains problèmes peuvent se déclarer au
375 lancement des daemons :
377 \item Mauvaises permissions sur /var/bacula : par défaut, les daemons Director
378 Storage ne sont pas exécutés en root. Si /var/bacula appartient à root, il
379 est possible que les daemons Director et Storage ne soient pas capables
380 d'accéder à ce répertoire, alors que c'est leur répertoire de travail
381 (Working Directory). Pour corriger celà, la méthode la plus simple est :
382 \verb+chown bacula:bacula /var/bacula+.\\
383 Note : à partir de la version 1.38.8, le répertoire /var/bacula est créé avec
384 des permissions en mode 770 et un propriétaire à root:bacula.
385 \item Le Storage daemon ne peut pas accéder au lecteur de bandes : ceci peut
386 arriver dans des anciennes versions de paquets RPM où le Storage Daemon
387 fonctionnait sous l'identité userid bacula, groupe bacula. Il y a deux
388 méthodes pour corriger ceci : la meilleure reste de modifier le script de
389 démarrage /etc/init.d/bacula-sd pour que le Storage daemon soit lancé sous
390 le groupe "disk". La seconde méthode est de changer les droits sur le
391 device du lecteur de bande (habituellement /dev/nst0) pour que Bacula puisse
392 y accéder. Vous devrez certainement aussi changer les permissions sur le
393 device de contrôle SCSI, habituellement /dev/sg0. Les noms exacts de device
394 dépendent de votre configuration, référez-vous au chapitre "Tape Testing"
395 pour plus d'informations sur les devices.