2 # Copyright (C) 2005 Zmanda Incorporated.
5 # This program is free software; you can redistribute it and/or modify it
6 # under the terms of the GNU General Public License version 2 as published
7 # by the Free Software Foundation.
9 # This program is distributed in the hope that it will be useful, but
10 # WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
11 # or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 # You should have received a copy of the GNU General Public License along
15 # with this program; if not, write to the Free Software Foundation, Inc.,
16 # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 # Contact information: Zmanda Inc, 465 S. Mathilda Ave., Suite 300
19 # Sunnyvale, CA 94086, USA, or: http://www.zmanda.com
24 %{?srpm_only: %define build_srpm 1}
26 # Pkg-config sometimes needs its own path set, and we need to allow users to
27 # override our guess during detection. This macro takes care of that.
28 # If no --define PKG_CONFIG_PATH was passed and env var $PKG_CONFIG_PATH is
29 # set then use the env var.
30 %{!?PKG_CONFIG_PATH: %{expand:%(echo ${PKG_CONFIG_PATH:+"%%define PKG_CONFIG_PATH $PKG_CONFIG_PATH"})}}
32 %{?PKG_CONFIG_PATH:%{echo:PKG_CONFIG_PATH = %{PKG_CONFIG_PATH}}}
34 # Define which Distribution we are building:
35 # Try to detect the distribution we are building:
36 %if %{_vendor} == redhat
37 # Fedora symlinks /etc/fedora-release to /etc/redhat-release for at least
38 # fc3-8. So RHEL and Fedora look at the same file. Different versions have
39 # different numbers of spaces; hence the use if $3 vs. $4..
40 %if %(awk '$1 == "Fedora" && $4 ~ /3.*/ { exit 1; }' /etc/redhat-release; echo $?)
44 %define requires_libtermcap Requires: libtermcap.so.2
46 %if %(awk '$1 == "Fedora" && $4 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
50 %define requires_libtermcap Requires: libtermcap.so.2
52 %if %(awk '$1 == "Fedora" && $4 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
56 %define requires_libtermcap Requires: libtermcap.so.2
58 %if %(awk '$1 == "Fedora" && $4 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
62 %define requires_libtermcap Requires: libtermcap.so.2
64 %if %(awk '$1 == "Fedora" && $3 ~ /7.*/ { exit 1; }' /etc/redhat-release; echo $?)
68 %define requires_libtermcap Requires: libtermcap.so.2
70 # if macro cannot have an empty test and we're just testing the existance
71 %if %{?fedora:yes}%{!?fedora:no} == yes
74 %define distver %{fedora}
76 %define requires_libtermcap Requires: libtermcap.so.2
78 %if %{_host_cpu} == x86_64 && %{_target_cpu} == i686
79 # Do nothing if PKG_CONFIG_PATH was set by the user above.
80 %{!?PKG_CONFIG_PATH: %define PKG_CONFIG_PATH /usr/lib/pkgconfig}
83 %if %(awk '$1 == "Red" && $7 ~ /3.*/ { exit 1; }' /etc/redhat-release; echo $?)
88 %define requires_libtermcap Requires: libtermcap.so.2
89 %define without_ipv6 --without-ipv6
91 %if %(awk '$1 == "Red" && $7 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
96 %define requires_libtermcap Requires: libtermcap.so.2
98 %if %(awk '$1 == "CentOS" && $3 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
103 %define requires_libtermcap Requires: libtermcap.so.2
105 %if %(awk '$1 == "Red" && $7 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
109 %define requires_libtermcap Requires: libtermcap.so.2
111 %if %(awk '$1 == "CentOS" && $3 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
115 %define requires_libtermcap Requires: libtermcap.so.2
118 # If dist is undefined, we didn't detect.
119 %{!?dist:%define dist unknown}
121 # Detect Suse variants.
122 %if %{_vendor} == "suse"
124 %if %(awk '$1 == "openSUSE" { exit 1; }' /etc/SuSE-release; echo $?)
126 %define distver %(awk '$1=="openSUSE" {print $2}' /etc/SuSE-release)
128 %if %(awk '$1 == "SUSE" { exit 1; }' /etc/SuSE-release; echo $?)
129 %define disttag %(awk '$1=="SUSE" {$3=="Enterprise" ? TAG="sles" : TAG="suse" ; print TAG}' /etc/SuSE-release)
130 %define distver %(awk '$1=="SUSE" {$3=="Enterprise" ? VER=$5 : VER=$3 ; print VER}' /etc/SuSE-release)
134 # Set options per distribution
135 %if %{dist} == redhat || %{dist} == fedora
136 %define rpm_group Applications/Archiving
137 %define xinetd_reload restart
138 %define requires_initscripts Requires: initscripts
141 %define rpm_group Productivity/Archiving/Backup
142 %define xinetd_reload restart
145 # Let's die if we haven't detected the distro. This might save some frustration.
146 # RPM does not provide a way to exit gracefully, hence the tag_to_cause_exit.
147 %{!?distver: %{error:"Your distribution and its version were not detected."}; %tag_to_cause_exit }
148 # Set minimum tar version if it wasn't set in the per-distro section
149 %{!?tarver: %define tarver 1.15}
151 %define packer %(%{__id_u} -n)
153 # --- Definitions ---
155 # Define amanda_version using the value determined by
156 # packaging/common/substitute.pl.
157 %{!?amanda_version: %define amanda_version %%VERSION%% }
158 %{!?amanda_release: %define amanda_release 1}
159 %define amanda_version_info "Amanda Community Edition - version %{amanda_version}"
160 %define amanda_user amandabackup
161 %define amanda_group disk
163 Summary: The Amanda Backup and Archiving System
165 Version: %{amanda_version}
166 %define rpm_release %{amanda_release}.%{disttag}%{distver}
168 %define rpm_release %{amanda_release}
170 Release: %{rpm_release}
171 Source: %{name}-%{version}.tar.gz
172 License: http://wiki.zmanda.com/index.php/Amanda_Copyright
174 Packager: www.zmanda.com
175 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{packer}-buildroot
177 # TODO - Need required versions for these:
178 BuildRequires: autoconf
179 BuildRequires: automake
180 BuildRequires: binutils
184 BuildRequires: glib2 >= 2.2.0
185 BuildRequires: glib2-devel
186 BuildRequires: readline
187 # Note: newer distros have changed most *-devel to lib*-devel, and added a
188 # provides tag for backwards compat.
189 BuildRequires: readline-devel
190 BuildRequires: curl >= 7.10.0
191 BuildRequires: curl-devel >= 7.10.0
192 BuildRequires: openssl
193 BuildRequires: openssl-devel
194 BuildRequires: perl(ExtUtils::Embed)
197 Requires: /usr/bin/id
198 Requires: /sbin/ldconfig
200 Requires: /usr/sbin/useradd
201 Requires: /usr/sbin/usermod
207 Requires: libnsl.so.1
208 Requires: curl >= 7.10.0
211 Requires: perl >= 5.6.0
212 Requires: tar >= %{tarver}
214 %{?requires_libtermcap}
215 %{?requires_initscripts}
217 %package backup_client
218 Summary: The Amanda Backup and Archiving Client
223 %{?requires_libtermcap}
224 %{?requires_initscripts}
228 Requires: libnsl.so.1
229 Requires: perl >= 5.6.0
230 Requires: tar >= %{tarver}
232 Provides: amanda-backup_client = %{amanda_version}
233 Provides: libamclient-%{version}.so = %{amanda_version}
234 Provides: libamanda-%{version}.so = %{amanda_version}
235 Conflicts: amanda-backup_server
236 # Native package names
237 Obsoletes: amanda, amanda-client, amanda-server
239 %package backup_server
240 Summary: The Amanda Backup and Archiving Server
247 Requires: libnsl.so.1
248 %{?requires_libtermcap}
249 %{?requires_initscripts}
251 Requires: perl >= 5.6.0
252 Requires: tar >= %{tarver}
253 Provides: amanda-backup_server = %{amanda_version}
254 Provides: libamclient-%{version}.so = %{amanda_version}
255 Provides: libamanda-%{version}.so = %{amanda_version}
256 Provides: libamserver-%{version}.so = %{amanda_version}
257 Provides: libamtape-%{version}.so = %{amanda_version}
258 Provides: libamdevice-%{version}.so = %{amanda_version}
259 Conflicts: amanda-backup_client
260 # Native package names
261 Obsoletes: amanda, amanda-client, amanda-server
262 # --- Package descriptions ---
265 Amanda is the leading Open-Source Backup and Archiving software.
267 The amanda-backup_server package should be installed on the Amanda server, i.e.
268 the machine attached to backup media (such as a tape drive or disk
269 drives) where backups will be written. The amanda-backup_server package
270 includes Amanda client. The amanda-backup_client package needs
271 to be installed on every system that is being backed up.
273 Amanda Forums is located at: http://forums.zmanda.com/
274 Amanda Documentation is available at: http://wiki.zmanda.com/
278 %description backup_server
279 Amanda is the leading Open-Source Backup and Archiving software.
281 This package contains the Amanda server. The amanda-backup_server package
282 should be installed on the Amanda server, i.e. the machine attached
283 to backup media (such as a tape drive or disk drives) where backups
284 will be written. The amanda-backup_server package includes Amanda client.
286 Amanda Forums is located at: http://forums.zmanda.com/
287 Amanda Documentation is available at: http://wiki.zmanda.com/
291 %description backup_client
292 Amanda is the leading Open-Source Backup and Archiving software.
294 This package contains the Amanda client. The amanda-backup_client package
295 needs to be installed on every system that is being backed up.
297 Amanda Forums is located at: http://forums.zmanda.com/
298 Amanda Documentation is available at: http://wiki.zmanda.com/
300 # --- Directory setup ---
302 # Configure directories:
304 %define EPREFIX %{PREFIX}
305 %define BINDIR %{EPREFIX}/bin
306 %define SBINDIR %{EPREFIX}/sbin
307 %define LIBEXECDIR %{EPREFIX}/libexec
308 %define AMLIBEXECDIR %{LIBEXECDIR}/amanda
309 %define DATADIR %{PREFIX}/share
310 %define SYSCONFDIR /etc
311 %define LOCALSTATEDIR /var
312 %define AMANDATES %{AMANDAHOMEDIR}/amandates
313 %define AMANDAHOMEDIR %{LOCALSTATEDIR}/lib/amanda
315 %define LIBDIR %{EPREFIX}/lib64
317 %define LIBDIR %{EPREFIX}/lib
319 %define AMLIBDIR %{LIBDIR}/amanda
320 %define INCLUDEDIR %{PREFIX}/include
321 %define MANDIR %{DATADIR}/man
322 %define LOGDIR /var/log/amanda
323 %define PERLSITELIB %(eval "`perl -V:installsitelib`"; echo $installsitelib)
324 %define AMDATADIR /var/lib/amanda
326 # Installation directories:
327 %define ROOT_SBINDIR %{buildroot}/%{SBINDIR}
328 %define ROOT_LIBEXECDIR %{buildroot}/%{LIBEXECDIR}
329 %define ROOT_DATADIR %{buildroot}/%{DATADIR}
330 %define ROOT_LOCALSTATEDIR %{buildroot}/%{LOCALSTATEDIR}
331 %define ROOT_SYSCONFDIR %{buildroot}/%{SYSCONFDIR}
332 %define ROOT_AMANDAHOMEDIR %{buildroot}/%{AMANDAHOMEDIR}
333 %define ROOT_LIBDIR %{buildroot}/%{LIBDIR}
334 %define ROOT_MANDIR %{buildroot}/%{MANDIR}
335 %define ROOT_LOGDIR %{buildroot}/%{LOGDIR}
336 %define ROOT_AMDATADIR %{buildroot}/%{AMDATADIR}
342 # --- Configure and compile ---
345 %define config_user %{amanda_user}
346 %define config_group %{amanda_group}
348 # Set PKG_CONFIG_PATH=some/path if some/path was set on the command line, or by
349 # the platform detection bits.
350 # without_ipv6 should only be defined on rhel3.
352 %{?PKG_CONFIG_PATH: PKG_CONFIG_PATH=%PKG_CONFIG_PATH} \
353 CFLAGS="%{optflags} -g -pipe" CXXFLAGS="%{optflags}" \
356 --sysconfdir=%{SYSCONFDIR} \
357 --sharedstatedir=%{LOCALSTATEDIR} \
358 --localstatedir=%{LOCALSTATEDIR} \
360 --includedir=%{INCLUDEDIR} \
362 --with-amdatadir=%{AMDATADIR} \
363 --with-gnuplot=/usr/bin/gnuplot \
364 --with-gnutar=/bin/tar \
365 --with-gnutar-listdir=%{AMANDAHOMEDIR}/gnutar-lists \
366 --with-index-server=localhost \
367 --with-tape-server=localhost \
368 --with-user=%{config_user} \
369 --with-group=%{config_group} \
370 --with-owner=%{packer} \
372 --with-bsd-security \
373 --with-bsdtcp-security \
374 --with-bsdudp-security \
375 --with-ssh-security \
376 --with-debugging=%{LOGDIR} \
378 --disable-installperms \
381 make -s LIBTOOLFLAGS=--silent
383 # --- Install to buildroot ---
386 if [ "%{buildroot}" != "/" ]; then
387 if [ -d "%{buildroot}" ] ; then
391 echo "BuildRoot was somehow set to / !"
395 make -s -j1 LIBTOOLFLAGS=--silent DESTDIR=%{buildroot} install
397 rm -f %{ROOT_AMANDAHOMEDIR}/example/inetd.conf.amandaclient
398 mkdir %{buildroot}/{etc,var/log}
399 mkdir %{ROOT_LOCALSTATEDIR}/amanda
400 mkdir %{ROOT_SYSCONFDIR}/amanda
401 mkdir %{ROOT_AMANDAHOMEDIR}/gnutar-lists
404 echo "%{amanda_version_info}" >%{ROOT_AMANDAHOMEDIR}/amanda-release
406 # --- Clean up buildroot ---
409 if [ "%{buildroot}" != "/" ]; then
410 if [ -d "%{buildroot}" ] ; then
414 echo "BuildRoot was somehow set to / !"
418 # --- Pre/post (un)installation scripts ---
421 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
422 if [ $? -ne 0 ]; then
423 echo "Unable to mktemp!" 1>&2
427 INSTALL_LOG="${LOGDIR}/install.log"
428 INSTALL_ERR="${LOGDIR}/install.err"
430 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
432 # Check for the 'amanda' user
433 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
434 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
435 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user}
436 if [ %{dist} = "SuSE" ]; then
439 # Lock the amanda account until admin sets password
440 passwd -l %{amanda_user} >>/dev/null
443 if [ ${PASSWD_EXIT} -eq 0 ] ; then
444 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
445 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
446 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
447 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
448 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
449 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
450 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
451 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
452 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
453 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
454 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
455 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
456 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
457 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
458 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
459 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
460 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
463 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
464 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
465 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
466 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
467 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
468 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
469 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
470 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
471 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
472 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
473 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
474 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
475 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
476 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
480 # log information about 'amanda' user parameters
481 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
482 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
483 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
484 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
485 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
486 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
487 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
488 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
489 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
490 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
491 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
493 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
494 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
495 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
496 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using amanda !!!" >>${TMPFILE}
497 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
499 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
502 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
503 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
504 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
505 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
506 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
508 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
511 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
512 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
513 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
514 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
515 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
517 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
519 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
522 if [ -d %{AMANDAHOMEDIR} ] ; then
523 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
524 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
525 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
526 echo "correct." >>${TMPFILE}
529 echo "incorrect!" >>${TMPFILE}
530 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
531 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
537 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
538 if [ ! -e ${LOGDIR} ] ; then
539 # create log directory
540 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
541 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
542 elif [ ! -d ${LOGDIR} ] ; then
543 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
544 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
545 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
546 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
549 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
551 cat ${TMPFILE} >>${INSTALL_ERR}
552 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
553 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
557 cat ${TMPFILE} >>${INSTALL_LOG}
560 echo "`date +'%b %e %Y %T'`: === Amanda installation started. ===" >${TMPFILE}
563 cat ${TMPFILE} >>${INSTALL_LOG}
564 if [ -f "${TMPFILE}" ]; then
569 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX
570 if [ $? -ne 0 ]; then
571 echo "Unable to mktemp!" 1>&2
575 INSTALL_LOG="${LOGDIR}/install.log"
576 INSTALL_ERR="${LOGDIR}/install.err"
578 echo -n "`date +'%b %e %Y %T'`: Updating library cache..." >${TMPFILE}
579 /sbin/ldconfig >>${TMPFILE} 2>&1
580 echo "done." >>${TMPFILE}
582 cat ${TMPFILE} >>${INSTALL_LOG}
584 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
585 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
586 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
587 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
588 if [ -f /etc/xinetd.d/amandaclient ] ; then
589 rm /etc/xinetd.d/amandaclient
591 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
592 if [ "%{xinetd_reload}" == "reload" ] ; then
593 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
595 if [ ${ret_val} -ne 0 ] ; then
596 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
597 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
601 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
604 if [ ${ret_val} -eq 0 ] ; then
605 echo "success." >>${TMPFILE}
607 cat ${TMPFILE} >>${INSTALL_LOG}
609 echo "failed. Please check your system logs." >>${TMPFILE}
611 cat ${TMPFILE} >>${INSTALL_ERR}
616 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
618 if [ ! -f %{AMANDATES} ] ; then
619 touch %{AMANDATES} >>${TMPFILE} 2>&1
621 if [ ${ret_val} -eq 0 ]; then
622 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
625 if [ ${ret_val} -eq 0 ]; then
626 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
627 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
628 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
629 if [ -x /sbin/restorecon ] ; then
630 /sbin/restorecon %{AMANDATES} >>${TMPFILE} 2>&1
633 if [ ${ret_val} -eq 0 ]; then
634 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
636 cat ${TMPFILE} >>${INSTALL_LOG}
638 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
640 cat ${TMPFILE} >>${INSTALL_ERR}
644 # Install .gnupg directory
645 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
647 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
648 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
649 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
651 if [ ${ret_val} -eq 0 ]; then
652 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
654 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
657 if [ ${ret_val} -eq 0 ]; then
658 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
659 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
661 if [ ${ret_val} -eq 0 ]; then
662 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
666 if [ ${ret_val} -eq 0 ]; then
667 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
669 cat ${TMPFILE} >>${INSTALL_LOG}
671 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
673 cat ${TMPFILE} >>${INSTALL_ERR}
676 # Install .amandahosts
677 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
678 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
679 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
681 for host in localhost localhost.localdomain ; do
682 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
683 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
685 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
686 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
689 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
690 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
692 cat ${TMPFILE} >>${INSTALL_LOG}
694 # SSH RSA key generation for amdump
695 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
696 KEYFILE="id_rsa_amdump"
697 COMMENT="%{amanda_user}@server"
698 if [ ! -d ${KEYDIR} ] ; then
699 if [ -f ${KEYDIR} ] ; then
700 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
701 mv ${KEYDIR} ${KEYDIR}.rpmsave
703 cat ${TMPFILE} >>${INSTALL_LOG}
705 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
706 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
708 cat ${TMPFILE} >>${INSTALL_LOG}
710 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
711 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
713 cat ${TMPFILE} >>${INSTALL_LOG}
714 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
716 cat ${TMPFILE} >>${INSTALL_LOG}
718 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
719 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
720 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
721 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
723 cat ${TMPFILE} >>${INSTALL_LOG}
725 # SSH RSA key generation on client for amrecover
726 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
727 KEYFILE="id_rsa_amrecover"
728 COMMENT="root@client"
729 if [ ! -d ${KEYDIR} ] ; then
730 if [ -f ${KEYDIR} ] ; then
731 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
732 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
734 cat ${TMPFILE} >>${INSTALL_LOG}
736 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
737 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
739 cat ${TMPFILE} >>${INSTALL_LOG}
741 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
742 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
743 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
745 cat ${TMPFILE} >>${INSTALL_LOG}
747 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}'" >${TMPFILE}
748 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
749 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
750 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
752 cat ${TMPFILE} >>${INSTALL_LOG}
754 # environment variables (~amandabackup/.profile)
755 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
756 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
757 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
759 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
760 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
762 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >>${TMPFILE}
763 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
764 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
766 cat ${TMPFILE} >>${INSTALL_LOG}
768 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
769 if [ -x /usr/bin/wget ]; then
770 /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=server
773 echo "`date +'%b %e %Y %T'`: === Amanda installation complete. ===" >${TMPFILE}
776 cat ${TMPFILE} >>${INSTALL_LOG}
777 if [ -f "${TMPFILE}" ]; then
781 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
785 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
786 if [ $? -ne 0 ]; then
787 echo "Unable to mktemp!" 1>&2
792 INSTALL_LOG="${LOGDIR}/install.log"
793 INSTALL_ERR="${LOGDIR}/install.err"
795 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
797 # Check for the 'amanda' user
798 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
799 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
800 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user}
801 if [ %{dist} = "SuSE" ]; then
804 # Lock the amanda account until admin sets password
805 passwd -l %{amanda_user} >>/dev/null
808 if [ ${PASSWD_EXIT} -eq 0 ] ; then
809 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
810 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
811 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
812 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
813 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
814 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
815 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
816 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
817 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
818 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
819 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
820 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
821 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
822 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
823 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
824 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
825 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
828 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
829 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
830 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
831 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
832 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
833 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
834 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
835 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
836 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
837 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
838 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
839 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
840 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
841 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
845 # log information about 'amanda' user parameters
846 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
847 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
848 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
849 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
850 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
851 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
852 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
853 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
854 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
855 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
856 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
858 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
859 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
860 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
861 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
862 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
864 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
867 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
868 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
869 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
870 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
871 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
873 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
876 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
877 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
878 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
879 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
880 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
882 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
884 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
887 if [ -d %{AMANDAHOMEDIR} ] ; then
888 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
889 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
890 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
891 echo "correct." >>${TMPFILE}
894 echo "incorrect!" >>${TMPFILE}
895 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
896 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
902 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
904 if [ ! -e ${LOGDIR} ] ; then
905 # create log directory
906 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
907 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
908 elif [ ! -d ${LOGDIR} ] ; then
909 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
910 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
911 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
912 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
914 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
916 cat ${TMPFILE} >>${INSTALL_ERR}
917 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
918 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
922 cat ${TMPFILE} >>${INSTALL_LOG}
925 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation started. ===" >${TMPFILE}
928 cat ${TMPFILE} >>${INSTALL_LOG}
929 if [ -f "${TMPFILE}" ]; then
933 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
934 if [ $? -ne 0 ]; then
935 echo "Unable to mktemp!" 1>&2
939 INSTALL_LOG="${LOGDIR}/install.log"
940 INSTALL_ERR="${LOGDIR}/install.err"
942 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
944 echo "done." >>${TMPFILE}
946 cat ${TMPFILE} >>${INSTALL_LOG}
948 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
949 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
950 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
951 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
952 if [ -f /etc/xinetd.d/amandaclient ] ; then
953 rm /etc/xinetd.d/amandaclient
956 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
957 if [ "%{xinetd_reload}" == "reload" ] ; then
958 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
960 if [ ${ret_val} -ne 0 ] ; then
961 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
962 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
966 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
969 if [ ${ret_val} -eq 0 ] ; then
970 echo "success." >>${TMPFILE}
972 cat ${TMPFILE} >>${INSTALL_LOG}
974 echo "failed. Please check your system logs." >>${TMPFILE}
976 cat ${TMPFILE} >>${INSTALL_ERR}
981 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
983 if [ ! -f %{AMANDATES} ] ; then
984 touch %{AMANDATES} >>${TMPFILE} 2>&1
986 if [ ${ret_val} -eq 0 ]; then
987 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
990 if [ ${ret_val} -eq 0 ]; then
991 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
992 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
993 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
995 if [ ${ret_val} -eq 0 ]; then
996 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
998 cat ${TMPFILE} >>${INSTALL_LOG}
1000 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1002 cat ${TMPFILE} >>${INSTALL_ERR}
1005 # Install .amandahosts to server
1006 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1007 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1008 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1010 for host in localhost localhost.localdomain ; do
1011 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1012 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
1014 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1015 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1018 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1019 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1021 cat ${TMPFILE} >>${INSTALL_LOG}
1023 # Install amanda client configuration file
1024 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1025 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1026 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1028 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1029 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1031 cat ${TMPFILE} >>${INSTALL_LOG}
1033 # install am_passphrase file to server
1034 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1035 if [ ! -f %{AMANDAHOMEDIR}/.am_passphrase ] ; then
1036 echo "`date +'%b %e %Y %T'`: Create '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1037 touch %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1038 phrase=`echo $RANDOM | md5sum | awk '{print $1}'`
1039 echo ${phrase} >>%{AMANDAHOMEDIR}/.am_passphrase
1041 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1042 chmod 0700 %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1045 cat ${TMPFILE} >>${INSTALL_LOG}
1047 # Install .gnupg directory
1048 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1050 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1051 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1052 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1054 if [ ${ret_val} -eq 0 ]; then
1055 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1057 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1060 if [ ${ret_val} -eq 0 ]; then
1061 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1062 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1064 if [ ${ret_val} -eq 0 ]; then
1065 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1069 if [ ${ret_val} -eq 0 ]; then
1070 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1072 cat ${TMPFILE} >>${INSTALL_LOG}
1074 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1076 cat ${TMPFILE} >>${INSTALL_ERR}
1079 # SSH RSA key generation on server for amdump
1080 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1081 KEYFILE="id_rsa_amdump"
1082 COMMENT="%{amanda_user}@server"
1083 if [ ! -d ${KEYDIR} ] ; then
1084 if [ -f ${KEYDIR} ] ; then
1085 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1086 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1088 cat ${TMPFILE} >>${INSTALL_LOG}
1090 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1091 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1093 cat ${TMPFILE} >>${INSTALL_LOG}
1095 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1096 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1097 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1099 cat ${TMPFILE} >>${INSTALL_LOG}
1101 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1102 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1103 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1104 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1106 cat ${TMPFILE} >>${INSTALL_LOG}
1108 # SSH RSA key generation on client for amrecover
1109 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1110 KEYFILE="id_rsa_amrecover"
1111 COMMENT="root@client"
1112 if [ ! -d ${KEYDIR} ] ; then
1113 if [ -f ${KEYDIR} ] ; then
1114 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1115 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1117 cat ${TMPFILE} >>${INSTALL_LOG}
1119 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1120 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1122 cat ${TMPFILE} >>${INSTALL_LOG}
1124 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1125 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1126 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1128 cat ${TMPFILE} >>${INSTALL_LOG}
1130 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}'" >${TMPFILE}
1131 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1132 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1133 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1135 cat ${TMPFILE} >>${INSTALL_LOG}
1137 # environment variables (~amandabackup/.profile)
1138 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1139 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1140 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1142 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1143 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1146 cat ${TMPFILE} >>${INSTALL_LOG}
1148 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1149 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1150 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1152 cat ${TMPFILE} >>${INSTALL_LOG}
1154 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1155 if [ -x /usr/bin/wget ]; then
1156 /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=server
1159 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation complete. ===" >${TMPFILE}
1162 cat ${TMPFILE} >>${INSTALL_LOG}
1164 if [ -f "${TMPFILE}" ]; then
1165 rm -f "${TMPFILE}" >>${TMPFILE} 2>&1
1168 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1169 %postun backup_server
1172 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1173 if [ $? -ne 0 ]; then
1174 echo "Unable to mktemp!" 1>&2
1178 INSTALL_LOG="${LOGDIR}/install.log"
1179 INSTALL_ERR="${LOGDIR}/install.err"
1181 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
1183 # Check for the 'amanda' user
1184 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
1185 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
1186 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user} >>${TMPFILE} 2>&1
1187 if [ %{dist} = "SuSE" ]; then
1190 # Lock the amanda account until admin sets password
1191 passwd -l %{amanda_user} >>/dev/null
1194 if [ ${PASSWD_EXIT} -eq 0 ] ; then
1195 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1196 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
1197 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
1198 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
1199 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
1200 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
1201 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1202 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
1203 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1204 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
1205 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
1206 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
1207 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
1208 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
1209 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
1210 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
1211 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1214 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1215 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1216 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
1217 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
1218 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
1219 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
1220 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
1221 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
1222 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
1223 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
1224 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1225 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
1226 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1227 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1231 # log information about 'amanda' user parameters
1232 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1233 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
1234 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
1235 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
1236 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
1237 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
1238 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1239 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
1240 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
1241 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
1242 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
1244 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
1245 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1246 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
1247 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
1248 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1250 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
1253 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
1254 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1255 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
1256 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
1257 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1259 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
1262 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
1263 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1264 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
1265 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
1266 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1268 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
1270 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1273 if [ -d %{AMANDAHOMEDIR} ] ; then
1274 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
1275 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
1276 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
1277 echo "correct." >>${TMPFILE}
1280 echo "incorrect!" >>${TMPFILE}
1281 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
1282 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
1288 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1290 if [ ! -e ${LOGDIR} ] ; then
1291 # create log directory
1292 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1293 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1294 elif [ ! -d ${LOGDIR} ] ; then
1295 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
1296 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1297 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1298 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
1300 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
1302 cat ${TMPFILE} >>${INSTALL_ERR}
1303 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
1304 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1308 cat ${TMPFILE} >>${INSTALL_LOG}
1311 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation started. ===" >${TMPFILE}
1314 cat ${TMPFILE} >>${INSTALL_LOG}
1316 if [ -f "${TMPFILE}" ]; then
1321 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1322 if [ $? -ne 0 ]; then
1323 echo "Unable to mktemp!" 1>&2
1327 INSTALL_LOG="${LOGDIR}/install.log"
1328 INSTALL_ERR="${LOGDIR}/install.err"
1330 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
1332 echo "done." >>${TMPFILE}
1334 cat ${TMPFILE} >>${INSTALL_LOG}
1336 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
1337 if [ ! -f /etc/xinetd.d/amandaclient ] ; then
1338 cp %{AMANDAHOMEDIR}/example/xinetd.amandaclient /etc/xinetd.d/amandaclient
1340 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
1341 if [ "%{xinetd_reload}" == "reload" ] ; then
1342 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1344 if [ ${ret_val} -ne 0 ] ; then
1345 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
1346 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
1350 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1353 if [ ${ret_val} -eq 0 ] ; then
1354 echo "success." >>${TMPFILE}
1356 cat ${TMPFILE} >>${INSTALL_LOG}
1358 echo "failed. Please check your system logs." >>${TMPFILE}
1360 cat ${TMPFILE} >>${INSTALL_LOG}
1365 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
1367 if [ ! -f %{AMANDATES} ] ; then
1368 touch %{AMANDATES} >>${TMPFILE} 2>&1
1370 if [ ${ret_val} -eq 0 ]; then
1371 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
1374 if [ ${ret_val} -eq 0 ]; then
1375 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
1376 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
1377 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
1379 if [ ${ret_val} -eq 0 ]; then
1380 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
1382 cat ${TMPFILE} >>${INSTALL_LOG}
1384 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1386 cat ${TMPFILE} >>${INSTALL_ERR}
1389 # Install .amandahosts to client
1390 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1391 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1392 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1394 for host in localhost localhost.localdomain ; do
1395 if [ -z "`grep \"^${host}[[:blank:]]\+\" %{AMANDAHOMEDIR}/.amandahosts | grep \"[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\"`" ] ; then
1396 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1399 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1400 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1402 cat ${TMPFILE} >>${INSTALL_LOG}
1404 # Install amanda client configuration file
1405 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1406 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1407 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1409 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1410 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1412 cat ${TMPFILE} >>${INSTALL_LOG}
1414 # Install .gnupg directory
1415 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1417 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1418 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1419 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1421 if [ ${ret_val} -eq 0 ]; then
1422 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1424 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1427 if [ ${ret_val} -eq 0 ]; then
1428 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1429 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1431 if [ ${ret_val} -eq 0 ]; then
1432 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1436 if [ ${ret_val} -eq 0 ]; then
1437 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1439 cat ${TMPFILE} >>${INSTALL_LOG}
1441 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1443 cat ${TMPFILE} >>${INSTALL_ERR}
1446 # SSH RSA key generation on client for amrecover
1447 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1448 KEYFILE="id_rsa_amrecover"
1449 COMMENT="root@client"
1450 if [ ! -d ${KEYDIR} ] ; then
1451 if [ -f ${KEYDIR} ] ; then
1452 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1453 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1455 cat ${TMPFILE} >>${INSTALL_LOG}
1457 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1458 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1460 cat ${TMPFILE} >>${INSTALL_LOG}
1462 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1463 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1464 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1466 cat ${TMPFILE} >>${INSTALL_LOG}
1468 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1469 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1470 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1471 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1473 cat ${TMPFILE} >>${INSTALL_LOG}
1475 # environment variables (~amandabackup/.profile)
1476 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1477 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1478 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1480 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1481 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1484 cat ${TMPFILE} >>${INSTALL_LOG}
1485 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1486 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1487 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1489 cat ${TMPFILE} >>${INSTALL_LOG}
1491 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1492 if [ -x /usr/bin/wget ]; then
1493 /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=client
1496 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation complete. ===" >>${TMPFILE}
1498 cat ${TMPFILE} >>${INSTALL_LOG}
1500 if [ -f "${TMPFILE}" ]; then
1504 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1505 %postun backup_client
1508 # --- Files to install ---
1509 # Notes: Do not use wildcards on directories not wholly owned by amanda. An
1510 # uninstall of the software will attempt to delete whatever matches here.
1511 %files backup_client
1512 %defattr(0755,%{amanda_user},%{amanda_group},0755)
1515 %{PERLSITELIB}/auto/Amanda
1516 %defattr(4750,root,disk)
1517 %{AMLIBEXECDIR}/application/amgtar
1518 %{AMLIBEXECDIR}/application/amstar
1519 %{AMLIBEXECDIR}/calcsize
1520 %{AMLIBEXECDIR}/killpgrp
1521 %{AMLIBEXECDIR}/rundump
1522 %{AMLIBEXECDIR}/runtar
1523 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1525 %{SBINDIR}/amaespipe
1527 %{SBINDIR}/amgpgcrypt
1528 %{SBINDIR}/amoldrecover
1529 %{SBINDIR}/amrecover
1530 %{SYSCONFDIR}/amanda
1531 %defattr(0644,%{amanda_user},%{amanda_group},0755)
1532 %{LOCALSTATEDIR}/amanda
1533 %{PERLSITELIB}/Amanda
1534 %{AMLIBEXECDIR}/amcat.awk
1535 %{AMANDAHOMEDIR}/gnutar-lists
1536 %doc %{AMANDAHOMEDIR}/amanda-release
1537 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaclient
1538 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaserver
1539 %doc %{AMANDAHOMEDIR}/example/amanda-client.conf
1540 %doc %{AMANDAHOMEDIR}/template.d/README
1541 %doc %{AMANDAHOMEDIR}/template.d/dumptypes
1542 %defattr(0644,root,root,0755)
1544 %{MANDIR}/man5/amanda.conf.5.gz
1545 %{MANDIR}/man5/amanda-client.conf.5.gz
1546 %{MANDIR}/man7/amanda-devices.7.gz
1547 %{MANDIR}/man7/amanda-applications.7.gz
1548 %{MANDIR}/man7/amanda-scripts.7.gz
1549 %{MANDIR}/man8/amaespipe.8.gz
1550 %{MANDIR}/man8/amanda.8.gz
1551 %{MANDIR}/man8/amcheckdump.8.gz
1552 %{MANDIR}/man8/amcrypt*
1553 %{MANDIR}/man8/amgpgcrypt.8.gz
1554 %{MANDIR}/man8/amrecover.8.gz
1555 %doc %{DATADIR}/amanda
1557 %files backup_server
1558 %defattr(0755,%{amanda_user},%{amanda_group})
1561 %{PERLSITELIB}/Amanda
1562 %{PERLSITELIB}/auto/Amanda
1564 %{LOCALSTATEDIR}/amanda
1566 %defattr(4750,root,disk)
1567 %{AMLIBEXECDIR}/application/amgtar
1568 %{AMLIBEXECDIR}/application/amstar
1569 %{AMLIBEXECDIR}/calcsize
1570 %{AMLIBEXECDIR}/killpgrp
1571 %{AMLIBEXECDIR}/rundump
1572 %{AMLIBEXECDIR}/runtar
1573 %{AMLIBEXECDIR}/dumper
1574 %{AMLIBEXECDIR}/planner
1576 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1578 %{SYSCONFDIR}/amanda
1579 # Files in standard dirs must be listed explicitly
1580 %{SBINDIR}/activate-devpay
1581 %{SBINDIR}/amaespipe
1583 %{SBINDIR}/amcrypt-ossl
1584 %{SBINDIR}/amcrypt-ossl-asym
1585 %{SBINDIR}/amcryptsimple
1586 %{SBINDIR}/amgpgcrypt
1587 %{SBINDIR}/amoldrecover
1588 %{SBINDIR}/amrecover
1589 %defattr(0644,%{amanda_user},%{amanda_group})
1590 %{AMLIBEXECDIR}/amcat.awk
1591 %{AMLIBEXECDIR}/amplot.awk
1592 %{AMLIBEXECDIR}/amplot.g
1593 %{AMLIBEXECDIR}/amplot.gp
1594 %doc %{AMANDAHOMEDIR}/amanda-release
1595 %docdir %{AMANDAHOMEDIR}/example
1596 %docdir %{AMANDAHOMEDIR}/template.d
1597 %defattr(0644,root,root,0755)
1600 %{MANDIR}/man5/disklist.5.gz
1601 %{MANDIR}/man5/tapelist.5.gz
1604 %{MANDIR}/man8/script-email.8.gz
1605 %doc %{DATADIR}/amanda
1610 * Fri Aug 20 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1611 - use %%VERSION%% macro instead of reading a file. error reported by ssgelm
1612 * Thu Aug 19 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1613 - Added detection of openSuSE 11 as suggested by ssgelm