Explorar el Código

- Upgrade to latest release - various improvements

Thomas Lotterer hace 21 años
padre
commit
e6430cb3fe
Se han modificado 5 ficheros con 192 adiciones y 147 borrados
  1. 64 111
      bacula/bacula.patch
  2. 97 26
      bacula/bacula.spec
  3. 0 10
      bacula/bconsole.sh
  4. 22 0
      bacula/bexec.sh
  5. 9 0
      bacula/rc.bacula

+ 64 - 111
bacula/bacula.patch

@@ -1,98 +1,21 @@
-Index: configure
---- configure.orig	2005-06-18 15:34:19.000000000 +0200
-+++ configure	2005-07-20 09:26:54.328806000 +0200
-@@ -5942,15 +5943,15 @@
- 	no) : ;;
- 	yes|*)
- 	  if test "$with_readline" != "yes"; then
--	    CONS_INC="-I${with_readline}"
--	    CONS_LDFLAGS="-L$with_readline"
-+	    CONS_INC="-I${with_readline}/include/readline"
-+	    CONS_LDFLAGS="-L$with_readline/lib"
- 	  else
- 	     with_readline="/usr/include/readline"
- 	  fi
--	  as_ac_Header=`echo "ac_cv_header_${with_readline}/readline.h" | $as_tr_sh`
-+	  as_ac_Header=`echo "ac_cv_header_${with_readline}/include/readline/readline.h" | $as_tr_sh`
- if eval "test \"\${$as_ac_Header+set}\" = set"; then
--  echo "$as_me:$LINENO: checking for ${with_readline}/readline.h" >&5
--echo $ECHO_N "checking for ${with_readline}/readline.h... $ECHO_C" >&6
-+  echo "$as_me:$LINENO: checking for ${with_readline}/include/readline/readline.h" >&5
-+echo $ECHO_N "checking for ${with_readline}/include/readline/readline.h... $ECHO_C" >&6
- if eval "test \"\${$as_ac_Header+set}\" = set"; then
-   echo $ECHO_N "(cached) $ECHO_C" >&6
- fi
-@@ -5958,8 +5959,8 @@
- echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
- else
-   # Is the header compilable?
--echo "$as_me:$LINENO: checking ${with_readline}/readline.h usability" >&5
--echo $ECHO_N "checking ${with_readline}/readline.h usability... $ECHO_C" >&6
-+echo "$as_me:$LINENO: checking ${with_readline}/include/readline/readline.h usability" >&5
-+echo $ECHO_N "checking ${with_readline}/include/readline/readline.h usability... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
- _ACEOF
-@@ -5967,7 +5968,7 @@
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
- $ac_includes_default
--#include <${with_readline}/readline.h>
-+#include <${with_readline}/include/readline/readline.h>
- _ACEOF
- rm -f conftest.$ac_objext
- if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-@@ -6003,15 +6004,15 @@
- echo "${ECHO_T}$ac_header_compiler" >&6
- 
- # Is the header present?
--echo "$as_me:$LINENO: checking ${with_readline}/readline.h presence" >&5
--echo $ECHO_N "checking ${with_readline}/readline.h presence... $ECHO_C" >&6
-+echo "$as_me:$LINENO: checking ${with_readline}/include/readline/readline.h presence" >&5
-+echo $ECHO_N "checking ${with_readline}/include/readline/readline.h presence... $ECHO_C" >&6
- cat >conftest.$ac_ext <<_ACEOF
- /* confdefs.h.  */
- _ACEOF
- cat confdefs.h >>conftest.$ac_ext
- cat >>conftest.$ac_ext <<_ACEOF
- /* end confdefs.h.  */
--#include <${with_readline}/readline.h>
-+#include <${with_readline}/include/readline/readline.h>
- _ACEOF
- if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
-   (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
-@@ -6074,8 +6075,8 @@
-       sed "s/^/$as_me: WARNING:     /" >&2
-     ;;
- esac
--echo "$as_me:$LINENO: checking for ${with_readline}/readline.h" >&5
--echo $ECHO_N "checking for ${with_readline}/readline.h... $ECHO_C" >&6
-+echo "$as_me:$LINENO: checking for ${with_readline}/include/readline/readline.h" >&5
-+echo $ECHO_N "checking for ${with_readline}/include/readline/readline.h... $ECHO_C" >&6
- if eval "test \"\${$as_ac_Header+set}\" = set"; then
-   echo $ECHO_N "(cached) $ECHO_C" >&6
- else
-@@ -6090,7 +6091,7 @@
- #define HAVE_READLINE 1
- _ACEOF
- 
--	       CONS_LIBS="-lreadline -ltermcap"
-+	       CONS_LIBS="-lreadline -lhistory -ltermcap"
- 	       got_readline="yes"
- 
- else
-@@ -22032,7 +22033,7 @@
- s,@WCFLAGS@,$WCFLAGS,;t t
- s,@WLDFLAGS@,$WLDFLAGS,;t t
- s,@OBJLIST@,$OBJLIST,;t t
--s,@hostname@,$hostname,;t t
-+s,@hostname@,localhost,;t t
- s,@TAPEDRIVE@,$TAPEDRIVE,;t t
- s,@PSCMD@,$PSCMD,;t t
- s,@WIN32@,$WIN32,;t t
 Index: scripts/bacula.in
 --- scripts/bacula.in.orig	2005-07-04 21:57:31.000000000 +0200
-+++ scripts/bacula.in	2005-07-20 09:26:30.410660000 +0200
++++ scripts/bacula.in	2005-08-20 13:22:03.830778000 +0200
+@@ -21,11 +21,11 @@
+ #  easier to "steal" this code for the development 
+ #  environment where they are different.
+ #  
+-BACFDBIN=@sbindir@
++BACFDBIN=@scriptdir@
+ BACFDCFG=@sysconfdir@
+-BACSDBIN=@sbindir@
++BACSDBIN=@scriptdir@
+ BACSDCFG=@sysconfdir@
+-BACDIRBIN=@sbindir@
++BACDIRBIN=@scriptdir@
+ BACDIRCFG=@sysconfdir@
+ PIDDIR=@piddir@
+ SUBSYSDIR=@subsysdir@
 @@ -203,9 +203,15 @@
     export LD_ASSUME_KERNEL=2.4.19
  fi
@@ -186,26 +109,22 @@ Index: scripts/bacula.in
        ;;
  
     *)
-Index: src/bacula.h
---- src/bacula.h.orig	2005-04-22 10:09:08.000000000 +0200
-+++ src/bacula.h	2005-07-20 09:26:30.424894000 +0200
-@@ -113,10 +113,13 @@
- #include <pthread.h>
- 
- #ifdef HAVE_OPENSSL
-+/* fight OpenSSL namespace pollution */
-+#define STORE OSSL_STORE
- #include <openssl/ssl.h>
- #include <openssl/x509v3.h>
- #include <openssl/rand.h>
- #include <openssl/err.h>
-+#undef STORE
- #endif
- 
- /* Local Bacula includes. Be sure to put all the system
+Index: scripts/btraceback.in
+--- scripts/btraceback.in.orig	2005-05-08 11:18:21.000000000 +0200
++++ scripts/btraceback.in	2005-08-20 20:06:37.084652000 +0200
+@@ -11,6 +11,9 @@
+ PNAME=`basename $1`
+ if test `uname -s` = SunOS ; then
+   gcore -o @working_dir@/${PNAME} $2
++fi
++if test `uname -s` = SunOS &&
++   test -n `which dbx 2>/dev/null` ; then
+   dbx $1 $2 <@scriptdir@/btraceback.dbx 2>&1 \
+    | @sbindir@/bsmtp -h @smtp_host@ -f @dump_email@ -s "Bacula DBX traceback of ${PNAME}" @dump_email@
+ else
 Index: src/lib/tls.c
 --- src/lib/tls.c.orig	2005-06-04 21:20:35.000000000 +0200
-+++ src/lib/tls.c	2005-07-20 09:26:30.426826000 +0200
++++ src/lib/tls.c	2005-08-06 18:58:21.163568000 +0200
 @@ -331,7 +331,7 @@
              X509V3_EXT_METHOD *method;
              STACK_OF(CONF_VALUE) *val;
@@ -215,3 +134,37 @@ Index: src/lib/tls.c
              void *extstr = NULL;
  
              /* Get x509 extension method structure */
+Index: src/dird/bacula-dir.conf.in
+--- src/dird/bacula-dir.conf.in.orig	2005-07-04 21:57:32.000000000 +0200
++++ src/dird/bacula-dir.conf.in	2005-08-24 08:09:43.569070000 +0200
+@@ -29,7 +29,8 @@
+   Level = Incremental
+   Client = @hostname@-fd 
+   FileSet = "Full Set"
+-  Schedule = "WeeklyCycle"
++ #Schedule = "WeeklyCycle"
++  Schedule = "NEVER"
+   Storage = File
+   Messages = Standard
+   Pool = Default
+@@ -105,7 +106,7 @@
+ #    directory to give a reasonable FileSet to backup to
+ #    disk storage during initial testing.
+ #
+-    File = @BUILD_DIR@
++    File = @scriptdir@
+   }
+ 
+ #
+@@ -120,6 +121,11 @@
+   }
+ }
+ 
++# This schedule can be used to disable automatic scheduling
++Schedule {
++  Name = NEVER
++}
++
+ #
+ # When to do the backups, full backup on first sunday of the month,
+ #  differential (i.e. incremental since full) every other sunday,

+ 97 - 26
bacula/bacula.spec

@@ -25,8 +25,8 @@
 #   FIXME: rse: "odoc" support still not in final shape
 
 #   package component versions
-%define       V_bacula     1.37.30
-%define       V_doc        20050717
+%define       V_bacula     1.37.36
+%define       V_doc        20050823
 
 #   package information
 Name:         bacula
@@ -39,23 +39,26 @@ Class:        EVAL
 Group:        System
 License:      GPL
 Version:      %{V_bacula}
-Release:      20050721
+Release:      20050824
 
 #   package options
-%option       with_server   yes
-%option       with_user     %{l_musr}
-%option       with_group    %{l_mgrp}
-%option       with_ssl      yes
-%option       with_db       sqlite
-%option       with_dvd      no
-%option       with_mtx      no
-%option       with_x11      no
+%option       with_server       yes
+%option       with_user         %{l_rusr}
+%option       with_group        %{l_rgrp}
+%option       with_ssl          yes
+%option       with_wrap         no
+%option       with_db           sqlite
+%option       with_dvd          no
+%option       with_mtx          no
+%option       with_python       no
+%option       with_wxconsole    no
+%option       with_traymonitor  no
 
 #   list of sources
 Source0:      http://prdownloads.sourceforge.net/bacula/bacula-%{version}.tar.gz
-Source1:      ftp://ftp.openpkg.org/sources/CPY/VERSIONED/bacula-doc-%{V_doc}.tar.gz
+Source1:      ftp://ftp.openpkg.org/sources/CPY/VERSIONED/bacula/bacula-doc-%{V_doc}.tar.gz
 Source2:      rc.bacula
-Source3:      bconsole.sh
+Source3:      bexec.sh
 Patch0:       bacula.patch
 
 #   build information
@@ -69,6 +72,10 @@ PreReq:       readline, zlib
 BuildPreReq:  openssl >= 0.9.8
 PreReq:       openssl >= 0.9.8
 %endif
+%if "%{with_wrap}" == "yes"
+BuildPreReq:  tcpwrappers
+PreReq:       tcpwrappers
+%endif
 %if "%{with_db}" == "sqlite"
 BuildPreReq:  sqlite
 PreReq:       sqlite
@@ -82,11 +89,25 @@ BuildPreReq:  postgresql
 PreReq:       postgresql
 %endif
 %if "%{with_dvd}" == "yes"
+BuildPreReq:  dvdrw-tools
 PreReq:       dvdrw-tools
 %endif
 %if "%{with_mtx}" == "yes"
+BuildPreReq:  mtx
 PreReq:       mtx
 %endif
+%if "%{with_python}" == "yes" || "%{with_dvd}" == "yes"
+BuildPreReq:  python
+PreReq:       python
+%endif
+%if "%{with_wxconsole}" == "yes"
+BuildPreReq:  wx
+PreReq:       wx
+%endif
+%if "%{with_traymonitor}" == "yes"
+BuildPreReq:  gtk2
+PreReq:       gtk2
+%endif
 AutoReq:      no
 AutoReqProv:  no
 
@@ -110,8 +131,19 @@ AutoReqProv:  no
     %setup -q
     %setup -q -D -T -b 1
     %patch -p0
+    rm src/lib/tcpd.h
 
 %build
+    #   delay generation of default passwords until installation, else
+    #   the config files change on every install leading _always_ to
+    #   the generation of .rpmnew files which prevent rc start/stop/restart
+    for pwd in dir_password fd_password sd_password \
+               mon_dir_password mon_fd_password mon_sd_password; do
+        %{l_shtool} subst \
+            -e "s;^s,@$pwd@,;s,@-$pwd-@,;" \
+            configure
+    done
+
     #   configure
     case "%{with_db}" in
         sqlite ) cfg_db="--with-sqlite=%{l_prefix}"     ;;
@@ -139,17 +171,24 @@ AutoReqProv:  no
 %endif
 %if "%{with_ssl}" == "yes"
         --with-openssl=%{l_prefix} \
+%endif
+%if "%{with_wrap}" == "yes"
+        --with-tcp-wrappers=yes \
 %endif
         $cfg_db \
-%if "%{with_x11}" == "yes"
-        --with-x \
+%if "%{with_python}" == "yes" || "%{with_dvd}" == "yes"
+        --with-python=%{l_prefix} \
+%endif
+%if "%{with_wxconsole}" == "yes"
+        --enable-wx-console=yes \
 %endif
         --sysconfdir=%{l_prefix}/etc/bacula \
         --mandir=%{l_prefix}/man \
         --with-scriptdir=%{l_prefix}/libexec/bacula \
         --with-working-dir=%{l_prefix}/var/bacula \
         --with-pid-dir=%{l_prefix}/var/bacula/run \
-        --with-subsys-dir=%{l_prefix}/var/bacula/run/subsys
+        --with-subsys-dir=%{l_prefix}/var/bacula/run/subsys \
+        --disable-nls
 
     #   build
     %{l_make} %{l_mflags -O}
@@ -163,6 +202,7 @@ AutoReqProv:  no
         $RPM_BUILD_ROOT%{l_prefix}/sbin \
         $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula \
         $RPM_BUILD_ROOT%{l_prefix}/etc/bacula \
+        $RPM_BUILD_ROOT%{l_prefix}/etc/bacula/clients \
         $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \
         $RPM_BUILD_ROOT%{l_prefix}/var/bacula \
         $RPM_BUILD_ROOT%{l_prefix}/var/bacula/run \
@@ -177,7 +217,8 @@ AutoReqProv:  no
     %{l_make} %{l_mflags} install DESTDIR=$RPM_BUILD_ROOT
 
     #   strip down installation
-    strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* 2>/dev/null || true
+    #   do not strip binaries, to make it easier to diagnose problems
+    #   strip $RPM_BUILD_ROOT%{l_prefix}/sbin/* 2>/dev/null || true
     ( cd $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula &&
       for unwanted in bconsole startmysql stopmysql; do
           rm -f $unwanted
@@ -186,20 +227,30 @@ AutoReqProv:  no
     rm -f $RPM_BUILD_ROOT%{l_prefix}/man/man8/bacula.8.gz
 
     #   install additional files
-    %{l_shtool} install -c -m 755 %{l_value -s -a} \
-        %{SOURCE bconsole.sh} $RPM_BUILD_ROOT%{l_prefix}/bin/bconsole
+    %{l_shtool} install -c -m 754 %{l_value -s -a} \
+        %{SOURCE bexec.sh} $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec
+
+    #   wrap binaries to avoid to specify "-c" for each run
+    ( cd $RPM_BUILD_ROOT%{l_prefix}/sbin
+      for bin in bacula-dir bacula-fd bacula-sd \
+                 bconsole bcopy bextract bls bscan dbcheck \
+                 tray-monitor wx-console; do
+          if [ -x $bin ]; then
+              mv $bin $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula
+              ln $RPM_BUILD_ROOT%{l_prefix}/libexec/bacula/bexec ./$bin
+          fi
+      done
+    ) || exit $?
 
     #   install run-command script
     %{l_shtool} install -c -m 644 %{l_value -s -a} \
         -e 's,@with_server@,%{with_server},g' \
         %{SOURCE rc.bacula} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/
 
-    #   documentation/examples
+    #   install documentation/examples
     %{l_shtool} install -c -m 644 \
         -e 's,/usr/share/doc/bacula-<version>,%{l_prefix}/doc/bacula,' \
         scripts/bacula.man $RPM_BUILD_ROOT%{l_prefix}/man/man8/bacula.8
-
-    #   install documentation
     if %{l_odoc} -F; then
         echo "WARNING: will not package auxiliary documentation" 1>&2
     else
@@ -213,10 +264,21 @@ AutoReqProv:  no
         '%attr(750,%{with_user},%{with_group}) %{l_prefix}/var/bacula' \
         '%attr(750,%{with_user},%{with_group}) %{l_prefix}/var/bacula/run' \
         '%attr(750,%{with_user},%{with_group}) %{l_prefix}/var/bacula/run/subsys' \
-        '%config %{l_prefix}/etc/bacula/bconsole.conf' \
-        '%config %{l_prefix}/etc/bacula/bacula-sd.conf' \
-        '%config %{l_prefix}/etc/bacula/bacula-fd.conf' \
-        '%config %{l_prefix}/etc/bacula/bacula-dir.conf'
+        '%attr(-,-,%{with_group}) %{l_prefix}/libexec/bacula/dvd-freespace' \
+        '%attr(-,-,%{with_group}) %{l_prefix}/libexec/bacula/dvd-writepart' \
+        '%attr(-,-,%{with_group}) %{l_prefix}/libexec/bacula/mtx-changer' \
+        '%attr(-,-,%{with_group}) %{l_prefix}/libexec/bacula/make_catalog_backup' \
+        '%attr(-,-,%{with_group}) %{l_prefix}/libexec/bacula/delete_catalog_backup'\
+        '%config(noreplace) %{l_prefix}/etc/bacula/bacula-sd.conf' \
+        '%config(noreplace) %{l_prefix}/etc/bacula/bacula-fd.conf' \
+        '%config(noreplace) %{l_prefix}/etc/bacula/bacula-dir.conf' \
+%if "%{with_wxconsole}" == "yes"
+        '%config(noreplace) %{l_prefix}/etc/bacula/wx-console.conf' \
+%endif
+%if "%{with_traymonitor}" == "yes"
+        '%config(noreplace) %{l_prefix}/etc/bacula/tray-monitor.conf' \
+%endif
+        '%config(noreplace) %{l_prefix}/etc/bacula/bconsole.conf'
 
 %files -f files
     %docdir %{l_docdir}
@@ -232,6 +294,15 @@ AutoReqProv:  no
         chown %{with_user}:%{with_group} $RPM_INSTALL_PREFIX/var/bacula/bacula.db
     fi
 
+    #   generate default passwords
+    for pwd in dir_password fd_password sd_password \
+               mon_dir_password mon_fd_password mon_sd_password; do
+        %{l_shtool} subst \
+            -e "s;@$pwd@;`openssl rand -base64 33`;" \
+            $RPM_INSTALL_PREFIX/etc/bacula/*.conf \
+            $RPM_INSTALL_PREFIX/etc/bacula/*.conf.rpmnew 2>/dev/null
+    done
+
     #   after upgrade, restart service
     [ $1 -eq 2 ] || exit 0
     eval `%{l_rc} bacula status 2>/dev/null`

+ 0 - 10
bacula/bconsole.sh

@@ -1,10 +0,0 @@
-#!/bin/sh
-if [ $# = 1 ]; then
-   case "$1" in
-       -* ) ;;
-        * ) set -- -c $1.conf ;;
-   esac
-fi
-#   The following works, because bconsole accepts multiple '-c' options.
-#   The last '-c' wins.
-exec @l_prefix@/sbin/bconsole -c @l_prefix@/etc/bacula/bconsole.conf "$@"

+ 22 - 0
bacula/bexec.sh

@@ -0,0 +1,22 @@
+#!/bin/sh
+myName=`basename $0`
+cfgPath="@l_prefix@/etc/bacula"
+case "$myName" in
+     bacula-dir   ) cfg="bacula-dir.conf"   ;;
+     bacula-fd    ) cfg="bacula-fd.conf"    ;;
+     bacula-sd    ) cfg="bacula-sd.conf"    ;;
+     bconsole     ) cfg="bconsole.conf"     ;;
+     bcopy        ) cfg="bacula-sd.conf"    ;;
+     bextract     ) cfg="bacula-sd.conf"    ;;
+     bls          ) cfg="bacula-sd.conf"    ;;
+     bscan        ) cfg="bacula-sd.conf"    ;;
+     dbcheck      ) cfg="bacula-dir.conf"   ;;
+     tray-monitor ) cfg="tray-monitor.conf" ;;
+     wx-console   ) cfg="wx-console.conf"   ;;
+     *            ) echo "bexec: illegal link to '$0'"
+                    exit 1                  ;;
+esac
+cfg="$cfgPath/$cfg"
+#   The user is still able to specify own config files, because
+#   bconsole accepts multiple '-c' options. The last '-c' wins.
+exec @l_prefix@/libexec/bacula/$myName -c $cfg "$@"

+ 9 - 0
bacula/rc.bacula

@@ -9,6 +9,8 @@
     bacula_sd_enable=@with_server@
     bacula_fd_enable=yes
     bacula_debug=""
+    bacula_log_files="@l_prefix@/var/bacula/log"
+    bacula_log_numfiles=4
 
 %status -u @l_susr@ -o
     bacula_usable="no"
@@ -35,3 +37,10 @@
     sleep 5
     rc bacula start
 
+%weekly -u @l_susr@
+    rcService bacula enable yes || exit 0
+    if [ ".$bacula_log_files" != . ]; then
+        shtool rotate -f \
+            -n ${bacula_log_numfiles} -z 9 -m 640 -r $bacula_log_files
+    fi
+