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 # LDFLAGS: newer gnu linkers can use "-Wl,--as-needed", while older ones,
35 # like rhel3 and sles9 can't.
36 %define enable_as_needed --enable-as-needed
38 # Define which Distribution we are building:
39 # Try to detect the distribution we are building:
40 %if %{_vendor} == redhat
41 # Fedora symlinks /etc/fedora-release to /etc/redhat-release for at least
42 # fc3-8. So RHEL and Fedora look at the same file. Different versions have
43 # different numbers of spaces; hence the use if $3 vs. $4..
44 %if %(awk '$1 == "Fedora" && $4 ~ /3.*/ { exit 1; }' /etc/redhat-release; echo $?)
48 %define requires_libtermcap Requires: libtermcap.so.2
51 %if %(awk '$1 == "Fedora" && $4 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
55 %define requires_libtermcap Requires: libtermcap.so.2
58 %if %(awk '$1 == "Fedora" && $4 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
62 %define requires_libtermcap Requires: libtermcap.so.2
65 %if %(awk '$1 == "Fedora" && $4 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
69 %define requires_libtermcap Requires: libtermcap.so.2
72 %if %(awk '$1 == "Fedora" && $3 ~ /7.*/ { exit 1; }' /etc/redhat-release; echo $?)
76 %define requires_libtermcap Requires: libtermcap.so.2
79 # if macro cannot have an empty test and we're just testing the existance
80 %if %{?fedora:yes}%{!?fedora:no} == yes
83 %define distver %{fedora}
85 %define requires_libtermcap Requires: libtermcap.so.2
91 %if %{_host_cpu} == x86_64 && %{_target_cpu} == i686
92 # Do nothing if PKG_CONFIG_PATH was set by the user above.
93 %{!?PKG_CONFIG_PATH: %define PKG_CONFIG_PATH /usr/lib/pkgconfig}
96 %if %(awk '$1 == "Red" && $7 ~ /3.*/ { exit 1; }' /etc/redhat-release; echo $?)
101 %define requires_libtermcap Requires: libtermcap.so.2
103 %define without_ipv6 --without-ipv6
105 %if %(awk '$1 == "Red" && $7 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
110 %define requires_libtermcap Requires: libtermcap.so.2
113 %if %(awk '$1 == "CentOS" && $3 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
118 %define requires_libtermcap Requires: libtermcap.so.2
121 %if %(awk '$1 == "Red" && $7 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
127 %if %(awk '$1 == "CentOS" && $3 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
133 %if %(awk '$1 == "Red" && $7 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
140 # If dist is undefined, we didn't detect.
141 %{!?dist:%define dist unknown}
143 # Detect Suse variants.
144 %if %{_vendor} == "suse"
146 %if %(awk '$1 == "openSUSE" { exit 1; }' /etc/SuSE-release; echo $?)
148 %define distver %(awk '$1=="openSUSE" {print $2}' /etc/SuSE-release)
150 %if %(awk '$1 == "SUSE" { exit 1; }' /etc/SuSE-release; echo $?)
151 %define disttag %(awk '$1=="SUSE" {$3=="Enterprise" ? TAG="sles" : TAG="suse" ; print TAG}' /etc/SuSE-release)
152 %define distver %(awk '$1=="SUSE" {$3=="Enterprise" ? VER=$5 : VER=$3 ; print VER}' /etc/SuSE-release)
153 # Always use quotes in rpm comparisons if values could be interpreted
156 %if "%{distver}" == "9"
157 %undefine enable_as_needed
162 # Set options per distribution
163 %if %{dist} == redhat || %{dist} == fedora
164 %define rpm_group Applications/Archiving
165 %define xinetd_reload restart
166 %define requires_initscripts Requires: initscripts
169 %define rpm_group Productivity/Archiving/Backup
170 %define xinetd_reload restart
173 # Let's die if we haven't detected the distro. This might save some frustration.
174 # RPM does not provide a way to exit gracefully, hence the tag_to_cause_exit.
175 %{!?distver: %{error:"Your distribution and its version were not detected."}; %tag_to_cause_exit }
176 # Set minimum tar version if it wasn't set in the per-distro section
177 %{!?tarver: %define tarver 1.15}
179 %define packer %(%{__id_u} -n)
181 # --- Definitions ---
183 # Define amanda_version using the value determined by
184 # packaging/common/substitute.pl.
185 %{!?amanda_version: %define amanda_version %%VERSION%% }
186 %{!?amanda_release: %define amanda_release 1}
187 %define amanda_version_info "Amanda Community Edition - version %{amanda_version}"
188 %define amanda_user amandabackup
189 %define amanda_group disk
191 Summary: The Amanda Backup and Archiving System
193 Version: %{amanda_version}
194 %define rpm_release %{amanda_release}.%{disttag}%{distver}
196 %define rpm_release %{amanda_release}
198 Release: %{rpm_release}
199 Source: %{name}-%{version}.tar.gz
200 License: http://wiki.zmanda.com/index.php/Amanda_Copyright
202 Packager: www.zmanda.com
203 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{packer}-buildroot
205 # TODO - Need required versions for these:
206 BuildRequires: autoconf
207 BuildRequires: automake
208 BuildRequires: binutils
212 BuildRequires: glib2 >= 2.2.0
213 BuildRequires: glib2-devel
214 BuildRequires: readline
215 # Note: newer distros have changed most *-devel to lib*-devel, and added a
216 # provides tag for backwards compat.
217 BuildRequires: readline-devel
218 BuildRequires: %{curl} >= 7.10.0
219 BuildRequires: %{curl}-devel >= 7.10.0
220 BuildRequires: openssl
221 BuildRequires: openssl-devel
222 BuildRequires: perl(ExtUtils::Embed)
225 Requires: /usr/bin/id
226 Requires: /sbin/ldconfig
228 Requires: /usr/sbin/useradd
229 Requires: /usr/sbin/usermod
233 Requires: %{curl} >= 7.10.0
236 Requires: perl >= 5.6.0
237 Requires: tar >= %{tarver}
239 %{?requires_libtermcap}
240 %{?requires_initscripts}
242 %package backup_client
243 Summary: The Amanda Backup and Archiving Client
248 %{?requires_libtermcap}
249 %{?requires_initscripts}
251 Requires: perl >= 5.6.0
252 Requires: tar >= %{tarver}
254 Provides: amanda-backup_client = %{amanda_version}
255 Provides: libamclient-%{version}.so = %{amanda_version}
256 Provides: libamanda-%{version}.so = %{amanda_version}
257 Conflicts: amanda-backup_server
258 # Native package names
259 Obsoletes: amanda, amanda-client, amanda-server
261 %package backup_server
262 Summary: The Amanda Backup and Archiving Server
267 %{?requires_libtermcap}
268 %{?requires_initscripts}
270 Requires: perl >= 5.6.0
271 Requires: tar >= %{tarver}
272 Provides: amanda-backup_server = %{amanda_version}
273 Provides: libamclient-%{version}.so = %{amanda_version}
274 Provides: libamanda-%{version}.so = %{amanda_version}
275 Provides: libamserver-%{version}.so = %{amanda_version}
276 Provides: libamtape-%{version}.so = %{amanda_version}
277 Provides: libamdevice-%{version}.so = %{amanda_version}
278 Conflicts: amanda-backup_client
279 # Native package names
280 Obsoletes: amanda, amanda-client, amanda-server
281 # --- Package descriptions ---
284 Amanda is the leading Open-Source Backup and Archiving software.
286 The amanda-backup_server package should be installed on the Amanda server, i.e.
287 the machine attached to backup media (such as a tape drive or disk
288 drives) where backups will be written. The amanda-backup_server package
289 includes Amanda client. The amanda-backup_client package needs
290 to be installed on every system that is being backed up.
292 Amanda Forums is located at: http://forums.zmanda.com/
293 Amanda Documentation is available at: http://wiki.zmanda.com/
297 %description backup_server
298 Amanda is the leading Open-Source Backup and Archiving software.
300 This package contains the Amanda server. The amanda-backup_server package
301 should be installed on the Amanda server, i.e. the machine attached
302 to backup media (such as a tape drive or disk drives) where backups
303 will be written. The amanda-backup_server package includes Amanda client.
305 Amanda Forums is located at: http://forums.zmanda.com/
306 Amanda Documentation is available at: http://wiki.zmanda.com/
310 %description backup_client
311 Amanda is the leading Open-Source Backup and Archiving software.
313 This package contains the Amanda client. The amanda-backup_client package
314 needs to be installed on every system that is being backed up.
316 Amanda Forums is located at: http://forums.zmanda.com/
317 Amanda Documentation is available at: http://wiki.zmanda.com/
319 # --- Directory setup ---
321 # Configure directories:
323 %define EPREFIX %{PREFIX}
324 %define BINDIR %{EPREFIX}/bin
325 %define SBINDIR %{EPREFIX}/sbin
326 %define LIBEXECDIR %{EPREFIX}/libexec
327 %define AMLIBEXECDIR %{LIBEXECDIR}/amanda
328 %define DATADIR %{PREFIX}/share
329 %define SYSCONFDIR /etc
330 %define LOCALSTATEDIR /var
331 %define AMANDATES %{AMANDAHOMEDIR}/amandates
332 %define AMANDAHOMEDIR %{LOCALSTATEDIR}/lib/amanda
334 %define LIBDIR %{EPREFIX}/lib64
336 %define LIBDIR %{EPREFIX}/lib
338 %define AMLIBDIR %{LIBDIR}/amanda
339 %define INCLUDEDIR %{PREFIX}/include
340 %define MANDIR %{DATADIR}/man
341 %define LOGDIR /var/log/amanda
342 %define PERLSITELIB %(eval "`perl -V:installsitelib`"; echo $installsitelib)
343 %define AMDATADIR /var/lib/amanda
345 # Installation directories:
346 %define ROOT_SBINDIR %{buildroot}/%{SBINDIR}
347 %define ROOT_LIBEXECDIR %{buildroot}/%{LIBEXECDIR}
348 %define ROOT_DATADIR %{buildroot}/%{DATADIR}
349 %define ROOT_LOCALSTATEDIR %{buildroot}/%{LOCALSTATEDIR}
350 %define ROOT_SYSCONFDIR %{buildroot}/%{SYSCONFDIR}
351 %define ROOT_AMANDAHOMEDIR %{buildroot}/%{AMANDAHOMEDIR}
352 %define ROOT_LIBDIR %{buildroot}/%{LIBDIR}
353 %define ROOT_MANDIR %{buildroot}/%{MANDIR}
354 %define ROOT_LOGDIR %{buildroot}/%{LOGDIR}
355 %define ROOT_AMDATADIR %{buildroot}/%{AMDATADIR}
361 # --- Configure and compile ---
364 %define config_user %{amanda_user}
365 %define config_group %{amanda_group}
367 # Set PKG_CONFIG_PATH=some/path if some/path was set on the command line, or by
368 # the platform detection bits.
369 # without_ipv6 should only be defined on rhel3.
370 # LDFLAGS macro is defined except on rhel3.
371 # --enable-as-needed must be conditional until configure tests whether
372 # ld can accept --as-needed.
374 %{?PKG_CONFIG_PATH: PKG_CONFIG_PATH=%PKG_CONFIG_PATH} \
375 CFLAGS="%{optflags} -g -pipe" CXXFLAGS="%{optflags}" \
376 %{?LDFLAGS:LDFLAGS="${LDFLAGS} %{?LDFLAGS:%LDFLAGS}"} \
377 %{?enable_as_needed:%{enable_as_needed}} \
380 --sysconfdir=%{SYSCONFDIR} \
381 --sharedstatedir=%{LOCALSTATEDIR} \
382 --localstatedir=%{LOCALSTATEDIR} \
384 --includedir=%{INCLUDEDIR} \
386 --with-amdatadir=%{AMDATADIR} \
387 --with-gnuplot=/usr/bin/gnuplot \
388 --with-gnutar=/bin/tar \
389 --with-gnutar-listdir=%{AMANDAHOMEDIR}/gnutar-lists \
390 --with-index-server=localhost \
391 --with-tape-server=localhost \
392 --with-user=%{config_user} \
393 --with-group=%{config_group} \
394 --with-owner=%{packer} \
396 --with-bsd-security \
397 --with-bsdtcp-security \
398 --with-bsdudp-security \
399 --with-ssh-security \
400 --with-debugging=%{LOGDIR} \
402 --disable-installperms \
405 make -s LIBTOOLFLAGS=--silent
407 # --- Install to buildroot ---
410 if [ "%{buildroot}" != "/" ]; then
411 if [ -d "%{buildroot}" ] ; then
415 echo "BuildRoot was somehow set to / !"
419 make -s -j1 LIBTOOLFLAGS=--silent DESTDIR=%{buildroot} install
421 rm -f %{ROOT_AMANDAHOMEDIR}/example/inetd.conf.amandaclient
422 mkdir %{buildroot}/{etc,var/log}
423 mkdir %{ROOT_LOCALSTATEDIR}/amanda
424 mkdir %{ROOT_SYSCONFDIR}/amanda
425 mkdir %{ROOT_AMANDAHOMEDIR}/gnutar-lists
428 echo "%{amanda_version_info}" >%{ROOT_AMANDAHOMEDIR}/amanda-release
430 # --- Clean up buildroot ---
433 if [ "%{buildroot}" != "/" ]; then
434 if [ -d "%{buildroot}" ] ; then
438 echo "BuildRoot was somehow set to / !"
442 # --- Pre/post (un)installation scripts ---
445 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
446 if [ $? -ne 0 ]; then
447 echo "Unable to mktemp!" 1>&2
451 INSTALL_LOG="${LOGDIR}/install.log"
452 INSTALL_ERR="${LOGDIR}/install.err"
454 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
456 # Check for the 'amanda' user
457 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
458 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
459 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user}
460 if [ %{dist} = "SuSE" ]; then
463 # Lock the amanda account until admin sets password
464 passwd -l %{amanda_user} >>/dev/null
467 if [ ${PASSWD_EXIT} -eq 0 ] ; then
468 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
469 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
470 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
471 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
472 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
473 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
474 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
475 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
476 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
477 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
478 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
479 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
480 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
481 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
482 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
483 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
484 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
487 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
488 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
489 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
490 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
491 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
492 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
493 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
494 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
495 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
496 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
497 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
498 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
499 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
500 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
504 # log information about 'amanda' user parameters
505 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
506 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
507 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
508 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
509 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
510 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
511 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
512 echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE}
513 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
514 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
515 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
517 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
518 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
519 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
520 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using amanda !!!" >>${TMPFILE}
521 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
523 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
526 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then
527 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
528 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
529 echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE}
530 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
532 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
535 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
536 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
537 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
538 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
539 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
541 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
543 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
546 if [ -d %{AMANDAHOMEDIR} ] ; then
547 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
548 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
549 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
550 echo "correct." >>${TMPFILE}
553 echo "incorrect!" >>${TMPFILE}
554 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
555 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
561 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
562 if [ ! -e ${LOGDIR} ] ; then
563 # create log directory
564 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
565 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
566 elif [ ! -d ${LOGDIR} ] ; then
567 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
568 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
569 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
570 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
573 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
575 cat ${TMPFILE} >>${INSTALL_ERR}
576 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
577 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
581 cat ${TMPFILE} >>${INSTALL_LOG}
584 echo "`date +'%b %e %Y %T'`: === Amanda installation started. ===" >${TMPFILE}
587 cat ${TMPFILE} >>${INSTALL_LOG}
588 if [ -f "${TMPFILE}" ]; then
593 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX
594 if [ $? -ne 0 ]; then
595 echo "Unable to mktemp!" 1>&2
599 INSTALL_LOG="${LOGDIR}/install.log"
600 INSTALL_ERR="${LOGDIR}/install.err"
602 echo -n "`date +'%b %e %Y %T'`: Updating library cache..." >${TMPFILE}
603 /sbin/ldconfig >>${TMPFILE} 2>&1
604 echo "done." >>${TMPFILE}
606 cat ${TMPFILE} >>${INSTALL_LOG}
608 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
609 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
610 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
611 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
612 if [ -f /etc/xinetd.d/amandaclient ] ; then
613 rm /etc/xinetd.d/amandaclient
615 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
616 if [ "%{xinetd_reload}" == "reload" ] ; then
617 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
619 if [ ${ret_val} -ne 0 ] ; then
620 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
621 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
625 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
628 if [ ${ret_val} -eq 0 ] ; then
629 echo "success." >>${TMPFILE}
631 cat ${TMPFILE} >>${INSTALL_LOG}
633 echo "failed. Please check your system logs." >>${TMPFILE}
635 cat ${TMPFILE} >>${INSTALL_ERR}
640 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
642 if [ ! -f %{AMANDATES} ] ; then
643 touch %{AMANDATES} >>${TMPFILE} 2>&1
645 if [ ${ret_val} -eq 0 ]; then
646 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
649 if [ ${ret_val} -eq 0 ]; then
650 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
651 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
652 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
653 if [ -x /sbin/restorecon ] ; then
654 /sbin/restorecon %{AMANDATES} >>${TMPFILE} 2>&1
657 if [ ${ret_val} -eq 0 ]; then
658 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
660 cat ${TMPFILE} >>${INSTALL_LOG}
662 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
664 cat ${TMPFILE} >>${INSTALL_ERR}
668 # Install .gnupg directory
669 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
671 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
672 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
673 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
675 if [ ${ret_val} -eq 0 ]; then
676 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
678 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
681 if [ ${ret_val} -eq 0 ]; then
682 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
683 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
685 if [ ${ret_val} -eq 0 ]; then
686 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
690 if [ ${ret_val} -eq 0 ]; then
691 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
693 cat ${TMPFILE} >>${INSTALL_LOG}
695 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
697 cat ${TMPFILE} >>${INSTALL_ERR}
700 # Install .amandahosts
701 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
702 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
703 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
705 for host in localhost localhost.localdomain ; do
706 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
707 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
709 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
710 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
713 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
714 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
716 cat ${TMPFILE} >>${INSTALL_LOG}
718 # SSH RSA key generation for amdump
719 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
720 KEYFILE="id_rsa_amdump"
721 COMMENT="%{amanda_user}@server"
722 if [ ! -d ${KEYDIR} ] ; then
723 if [ -f ${KEYDIR} ] ; then
724 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
725 mv ${KEYDIR} ${KEYDIR}.rpmsave
727 cat ${TMPFILE} >>${INSTALL_LOG}
729 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
730 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
732 cat ${TMPFILE} >>${INSTALL_LOG}
734 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
735 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
737 cat ${TMPFILE} >>${INSTALL_LOG}
738 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
740 cat ${TMPFILE} >>${INSTALL_LOG}
742 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
743 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
744 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
745 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
747 cat ${TMPFILE} >>${INSTALL_LOG}
749 # SSH RSA key generation on client for amrecover
750 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
751 KEYFILE="id_rsa_amrecover"
752 COMMENT="root@client"
753 if [ ! -d ${KEYDIR} ] ; then
754 if [ -f ${KEYDIR} ] ; then
755 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
756 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
758 cat ${TMPFILE} >>${INSTALL_LOG}
760 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
761 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
763 cat ${TMPFILE} >>${INSTALL_LOG}
765 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
766 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
767 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
769 cat ${TMPFILE} >>${INSTALL_LOG}
771 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}'" >${TMPFILE}
772 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
773 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
774 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
776 cat ${TMPFILE} >>${INSTALL_LOG}
778 # environment variables (~amandabackup/.profile)
779 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
780 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
781 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
783 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
784 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
786 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >>${TMPFILE}
787 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
788 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
790 cat ${TMPFILE} >>${INSTALL_LOG}
792 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
793 if [ -x /usr/bin/wget ]; then
794 /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
797 echo "`date +'%b %e %Y %T'`: === Amanda installation complete. ===" >${TMPFILE}
800 cat ${TMPFILE} >>${INSTALL_LOG}
801 if [ -f "${TMPFILE}" ]; then
805 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
809 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
810 if [ $? -ne 0 ]; then
811 echo "Unable to mktemp!" 1>&2
816 INSTALL_LOG="${LOGDIR}/install.log"
817 INSTALL_ERR="${LOGDIR}/install.err"
819 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
821 # Check for the 'amanda' user
822 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
823 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
824 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user}
825 if [ %{dist} = "SuSE" ]; then
828 # Lock the amanda account until admin sets password
829 passwd -l %{amanda_user} >>/dev/null
832 if [ ${PASSWD_EXIT} -eq 0 ] ; then
833 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
834 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
835 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
836 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
837 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
838 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
839 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
840 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
841 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
842 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
843 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
844 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
845 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
846 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
847 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
848 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
849 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
852 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
853 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
854 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
855 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
856 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
857 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
858 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
859 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
860 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
861 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
862 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
863 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
864 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
865 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
869 # log information about 'amanda' user parameters
870 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
871 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
872 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
873 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
874 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
875 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
876 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
877 echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE}
878 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
879 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
880 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
882 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
883 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
884 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
885 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
886 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
888 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
891 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then
892 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
893 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
894 echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE}
895 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
897 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
900 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
901 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
902 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
903 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
904 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
906 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
908 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
911 if [ -d %{AMANDAHOMEDIR} ] ; then
912 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
913 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
914 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
915 echo "correct." >>${TMPFILE}
918 echo "incorrect!" >>${TMPFILE}
919 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
920 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
926 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
928 if [ ! -e ${LOGDIR} ] ; then
929 # create log directory
930 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
931 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
932 elif [ ! -d ${LOGDIR} ] ; then
933 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
934 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
935 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
936 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
938 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
940 cat ${TMPFILE} >>${INSTALL_ERR}
941 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
942 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
946 cat ${TMPFILE} >>${INSTALL_LOG}
949 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation started. ===" >${TMPFILE}
952 cat ${TMPFILE} >>${INSTALL_LOG}
953 if [ -f "${TMPFILE}" ]; then
957 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
958 if [ $? -ne 0 ]; then
959 echo "Unable to mktemp!" 1>&2
963 INSTALL_LOG="${LOGDIR}/install.log"
964 INSTALL_ERR="${LOGDIR}/install.err"
966 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
968 echo "done." >>${TMPFILE}
970 cat ${TMPFILE} >>${INSTALL_LOG}
972 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
973 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
974 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
975 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
976 if [ -f /etc/xinetd.d/amandaclient ] ; then
977 rm /etc/xinetd.d/amandaclient
980 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
981 if [ "%{xinetd_reload}" == "reload" ] ; then
982 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
984 if [ ${ret_val} -ne 0 ] ; then
985 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
986 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
990 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
993 if [ ${ret_val} -eq 0 ] ; then
994 echo "success." >>${TMPFILE}
996 cat ${TMPFILE} >>${INSTALL_LOG}
998 echo "failed. Please check your system logs." >>${TMPFILE}
1000 cat ${TMPFILE} >>${INSTALL_ERR}
1005 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
1007 if [ ! -f %{AMANDATES} ] ; then
1008 touch %{AMANDATES} >>${TMPFILE} 2>&1
1010 if [ ${ret_val} -eq 0 ]; then
1011 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
1014 if [ ${ret_val} -eq 0 ]; then
1015 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
1016 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
1017 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
1019 if [ ${ret_val} -eq 0 ]; then
1020 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
1022 cat ${TMPFILE} >>${INSTALL_LOG}
1024 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1026 cat ${TMPFILE} >>${INSTALL_ERR}
1029 # Install .amandahosts to server
1030 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1031 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1032 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1034 for host in localhost localhost.localdomain ; do
1035 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1036 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
1038 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1039 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1042 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1043 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1045 cat ${TMPFILE} >>${INSTALL_LOG}
1047 # Install amanda client configuration file
1048 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1049 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1050 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1052 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1053 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1055 cat ${TMPFILE} >>${INSTALL_LOG}
1057 # install am_passphrase file to server
1058 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1059 if [ ! -f %{AMANDAHOMEDIR}/.am_passphrase ] ; then
1060 echo "`date +'%b %e %Y %T'`: Create '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1061 touch %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1062 phrase=`echo $RANDOM | md5sum | awk '{print $1}'`
1063 echo ${phrase} >>%{AMANDAHOMEDIR}/.am_passphrase
1065 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1066 chmod 0700 %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1069 cat ${TMPFILE} >>${INSTALL_LOG}
1071 # Install .gnupg directory
1072 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1074 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1075 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1076 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1078 if [ ${ret_val} -eq 0 ]; then
1079 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1081 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1084 if [ ${ret_val} -eq 0 ]; then
1085 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1086 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1088 if [ ${ret_val} -eq 0 ]; then
1089 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1093 if [ ${ret_val} -eq 0 ]; then
1094 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1096 cat ${TMPFILE} >>${INSTALL_LOG}
1098 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1100 cat ${TMPFILE} >>${INSTALL_ERR}
1103 # SSH RSA key generation on server for amdump
1104 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1105 KEYFILE="id_rsa_amdump"
1106 COMMENT="%{amanda_user}@server"
1107 if [ ! -d ${KEYDIR} ] ; then
1108 if [ -f ${KEYDIR} ] ; then
1109 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1110 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1112 cat ${TMPFILE} >>${INSTALL_LOG}
1114 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1115 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1117 cat ${TMPFILE} >>${INSTALL_LOG}
1119 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1120 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1121 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1123 cat ${TMPFILE} >>${INSTALL_LOG}
1125 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1126 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1127 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1128 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1130 cat ${TMPFILE} >>${INSTALL_LOG}
1132 # SSH RSA key generation on client for amrecover
1133 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1134 KEYFILE="id_rsa_amrecover"
1135 COMMENT="root@client"
1136 if [ ! -d ${KEYDIR} ] ; then
1137 if [ -f ${KEYDIR} ] ; then
1138 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1139 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1141 cat ${TMPFILE} >>${INSTALL_LOG}
1143 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1144 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1146 cat ${TMPFILE} >>${INSTALL_LOG}
1148 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1149 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1150 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1152 cat ${TMPFILE} >>${INSTALL_LOG}
1154 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}'" >${TMPFILE}
1155 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1156 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1157 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1159 cat ${TMPFILE} >>${INSTALL_LOG}
1161 # environment variables (~amandabackup/.profile)
1162 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1163 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1164 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1166 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1167 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1170 cat ${TMPFILE} >>${INSTALL_LOG}
1172 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1173 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1174 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1176 cat ${TMPFILE} >>${INSTALL_LOG}
1178 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1179 if [ -x /usr/bin/wget ]; then
1180 /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
1183 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation complete. ===" >${TMPFILE}
1186 cat ${TMPFILE} >>${INSTALL_LOG}
1188 if [ -f "${TMPFILE}" ]; then
1189 rm -f "${TMPFILE}" >>${TMPFILE} 2>&1
1192 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1193 %postun backup_server
1196 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1197 if [ $? -ne 0 ]; then
1198 echo "Unable to mktemp!" 1>&2
1202 INSTALL_LOG="${LOGDIR}/install.log"
1203 INSTALL_ERR="${LOGDIR}/install.err"
1205 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
1207 # Check for the 'amanda' user
1208 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
1209 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
1210 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user} >>${TMPFILE} 2>&1
1211 if [ %{dist} = "SuSE" ]; then
1214 # Lock the amanda account until admin sets password
1215 passwd -l %{amanda_user} >>/dev/null
1218 if [ ${PASSWD_EXIT} -eq 0 ] ; then
1219 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1220 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
1221 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
1222 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
1223 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
1224 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
1225 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1226 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
1227 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1228 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
1229 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
1230 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
1231 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
1232 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
1233 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
1234 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
1235 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1238 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1239 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1240 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
1241 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
1242 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
1243 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
1244 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
1245 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
1246 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
1247 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
1248 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1249 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
1250 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1251 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1255 # log information about 'amanda' user parameters
1256 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1257 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
1258 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
1259 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
1260 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
1261 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
1262 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1263 echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE}
1264 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
1265 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
1266 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
1268 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
1269 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1270 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
1271 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
1272 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1274 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
1277 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then
1278 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1279 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
1280 echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE}
1281 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1283 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
1286 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
1287 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1288 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
1289 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
1290 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1292 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
1294 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1297 if [ -d %{AMANDAHOMEDIR} ] ; then
1298 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
1299 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
1300 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
1301 echo "correct." >>${TMPFILE}
1304 echo "incorrect!" >>${TMPFILE}
1305 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
1306 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
1312 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1314 if [ ! -e ${LOGDIR} ] ; then
1315 # create log directory
1316 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1317 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1318 elif [ ! -d ${LOGDIR} ] ; then
1319 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
1320 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1321 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1322 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
1324 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
1326 cat ${TMPFILE} >>${INSTALL_ERR}
1327 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
1328 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1332 cat ${TMPFILE} >>${INSTALL_LOG}
1335 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation started. ===" >${TMPFILE}
1338 cat ${TMPFILE} >>${INSTALL_LOG}
1340 if [ -f "${TMPFILE}" ]; then
1345 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1346 if [ $? -ne 0 ]; then
1347 echo "Unable to mktemp!" 1>&2
1351 INSTALL_LOG="${LOGDIR}/install.log"
1352 INSTALL_ERR="${LOGDIR}/install.err"
1354 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
1356 echo "done." >>${TMPFILE}
1358 cat ${TMPFILE} >>${INSTALL_LOG}
1360 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
1361 if [ ! -f /etc/xinetd.d/amandaclient ] ; then
1362 cp %{AMANDAHOMEDIR}/example/xinetd.amandaclient /etc/xinetd.d/amandaclient
1364 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
1365 if [ "%{xinetd_reload}" == "reload" ] ; then
1366 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1368 if [ ${ret_val} -ne 0 ] ; then
1369 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
1370 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
1374 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1377 if [ ${ret_val} -eq 0 ] ; then
1378 echo "success." >>${TMPFILE}
1380 cat ${TMPFILE} >>${INSTALL_LOG}
1382 echo "failed. Please check your system logs." >>${TMPFILE}
1384 cat ${TMPFILE} >>${INSTALL_LOG}
1389 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
1391 if [ ! -f %{AMANDATES} ] ; then
1392 touch %{AMANDATES} >>${TMPFILE} 2>&1
1394 if [ ${ret_val} -eq 0 ]; then
1395 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
1398 if [ ${ret_val} -eq 0 ]; then
1399 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
1400 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
1401 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
1403 if [ ${ret_val} -eq 0 ]; then
1404 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
1406 cat ${TMPFILE} >>${INSTALL_LOG}
1408 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1410 cat ${TMPFILE} >>${INSTALL_ERR}
1413 # Install .amandahosts to client
1414 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1415 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1416 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1418 for host in localhost localhost.localdomain ; do
1419 if [ -z "`grep \"^${host}[[:blank:]]\+\" %{AMANDAHOMEDIR}/.amandahosts | grep \"[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\"`" ] ; then
1420 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1423 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1424 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1426 cat ${TMPFILE} >>${INSTALL_LOG}
1428 # Install amanda client configuration file
1429 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1430 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1431 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1433 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1434 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1436 cat ${TMPFILE} >>${INSTALL_LOG}
1438 # Install .gnupg directory
1439 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1441 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1442 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1443 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1445 if [ ${ret_val} -eq 0 ]; then
1446 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1448 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1451 if [ ${ret_val} -eq 0 ]; then
1452 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1453 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1455 if [ ${ret_val} -eq 0 ]; then
1456 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1460 if [ ${ret_val} -eq 0 ]; then
1461 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1463 cat ${TMPFILE} >>${INSTALL_LOG}
1465 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1467 cat ${TMPFILE} >>${INSTALL_ERR}
1470 # SSH RSA key generation on client for amrecover
1471 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1472 KEYFILE="id_rsa_amrecover"
1473 COMMENT="root@client"
1474 if [ ! -d ${KEYDIR} ] ; then
1475 if [ -f ${KEYDIR} ] ; then
1476 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1477 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1479 cat ${TMPFILE} >>${INSTALL_LOG}
1481 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1482 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1484 cat ${TMPFILE} >>${INSTALL_LOG}
1486 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1487 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1488 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1490 cat ${TMPFILE} >>${INSTALL_LOG}
1492 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1493 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1494 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1495 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1497 cat ${TMPFILE} >>${INSTALL_LOG}
1499 # environment variables (~amandabackup/.profile)
1500 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1501 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1502 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1504 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1505 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1508 cat ${TMPFILE} >>${INSTALL_LOG}
1509 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1510 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1511 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1513 cat ${TMPFILE} >>${INSTALL_LOG}
1515 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1516 if [ -x /usr/bin/wget ]; then
1517 /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
1520 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation complete. ===" >>${TMPFILE}
1522 cat ${TMPFILE} >>${INSTALL_LOG}
1524 if [ -f "${TMPFILE}" ]; then
1528 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1529 %postun backup_client
1532 # --- Files to install ---
1533 # Notes: Do not use wildcards on directories not wholly owned by amanda. An
1534 # uninstall of the software will attempt to delete whatever matches here.
1535 %files backup_client
1536 %defattr(0755,%{amanda_user},%{amanda_group},0755)
1539 %{PERLSITELIB}/auto/Amanda
1540 %defattr(4750,root,disk)
1541 %{AMLIBEXECDIR}/application/amgtar
1542 %{AMLIBEXECDIR}/application/amstar
1543 %{AMLIBEXECDIR}/calcsize
1544 %{AMLIBEXECDIR}/killpgrp
1545 %{AMLIBEXECDIR}/rundump
1546 %{AMLIBEXECDIR}/runtar
1547 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1549 %{SBINDIR}/amaespipe
1551 %{SBINDIR}/amgpgcrypt
1552 %{SBINDIR}/amoldrecover
1553 %{SBINDIR}/amrecover
1554 %{SYSCONFDIR}/amanda
1555 %defattr(0644,%{amanda_user},%{amanda_group},0755)
1556 %{LOCALSTATEDIR}/amanda
1557 %{PERLSITELIB}/Amanda
1558 %{AMLIBEXECDIR}/amcat.awk
1559 %{AMANDAHOMEDIR}/gnutar-lists
1560 %doc %{AMANDAHOMEDIR}/amanda-release
1561 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaclient
1562 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaserver
1563 %doc %{AMANDAHOMEDIR}/example/amanda-client.conf
1564 %doc %{AMANDAHOMEDIR}/template.d/README
1565 %doc %{AMANDAHOMEDIR}/template.d/dumptypes
1566 %defattr(0644,root,root,0755)
1568 %{MANDIR}/man5/amanda.conf.5.gz
1569 %{MANDIR}/man5/amanda-client.conf.5.gz
1570 %{MANDIR}/man7/amanda-devices.7.gz
1571 %{MANDIR}/man7/amanda-applications.7.gz
1572 %{MANDIR}/man7/amanda-scripts.7.gz
1573 %{MANDIR}/man8/amaespipe.8.gz
1574 %{MANDIR}/man8/amanda.8.gz
1575 %{MANDIR}/man8/amcheckdump.8.gz
1576 %{MANDIR}/man8/amcrypt*
1577 %{MANDIR}/man8/amgpgcrypt.8.gz
1578 %{MANDIR}/man8/amrecover.8.gz
1579 %doc %{DATADIR}/amanda
1581 %files backup_server
1582 %defattr(0755,%{amanda_user},%{amanda_group})
1585 %{PERLSITELIB}/Amanda
1586 %{PERLSITELIB}/auto/Amanda
1588 %{LOCALSTATEDIR}/amanda
1590 %defattr(4750,root,disk)
1591 %{AMLIBEXECDIR}/application/amgtar
1592 %{AMLIBEXECDIR}/application/amstar
1593 %{AMLIBEXECDIR}/calcsize
1594 %{AMLIBEXECDIR}/killpgrp
1595 %{AMLIBEXECDIR}/rundump
1596 %{AMLIBEXECDIR}/runtar
1597 %{AMLIBEXECDIR}/dumper
1598 %{AMLIBEXECDIR}/planner
1600 %{SBINDIR}/amservice
1601 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1603 %{SYSCONFDIR}/amanda
1604 # Files in standard dirs must be listed explicitly
1605 %{SBINDIR}/activate-devpay
1606 %{SBINDIR}/amaespipe
1608 %{SBINDIR}/amcrypt-ossl
1609 %{SBINDIR}/amcrypt-ossl-asym
1610 %{SBINDIR}/amcryptsimple
1611 %{SBINDIR}/amgpgcrypt
1612 %{SBINDIR}/amoldrecover
1613 %{SBINDIR}/amrecover
1614 %defattr(0644,%{amanda_user},%{amanda_group})
1615 %{AMLIBEXECDIR}/amcat.awk
1616 %{AMLIBEXECDIR}/amplot.awk
1617 %{AMLIBEXECDIR}/amplot.g
1618 %{AMLIBEXECDIR}/amplot.gp
1619 %doc %{AMANDAHOMEDIR}/amanda-release
1620 %docdir %{AMANDAHOMEDIR}/example
1621 %docdir %{AMANDAHOMEDIR}/template.d
1622 %defattr(0644,root,root,0755)
1625 %{MANDIR}/man5/disklist.5.gz
1626 %{MANDIR}/man5/tapelist.5.gz
1629 %{MANDIR}/man8/script-email.8.gz
1630 %doc %{DATADIR}/amanda
1635 * Fri Aug 20 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1636 - use %%VERSION%% macro instead of reading a file. error reported by ssgelm
1637 * Thu Aug 19 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1638 - Added detection of openSuSE 11 as suggested by ssgelm