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 LDFLAGS -Wl,--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
106 %if %(awk '$1 == "Red" && $7 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
111 %define requires_libtermcap Requires: libtermcap.so.2
114 %if %(awk '$1 == "CentOS" && $3 ~ /4.*/ { exit 1; }' /etc/redhat-release; echo $?)
119 %define requires_libtermcap Requires: libtermcap.so.2
122 %if %(awk '$1 == "Red" && $7 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
128 %if %(awk '$1 == "CentOS" && $3 ~ /5.*/ { exit 1; }' /etc/redhat-release; echo $?)
134 %if %(awk '$1 == "Red" && $7 ~ /6.*/ { exit 1; }' /etc/redhat-release; echo $?)
141 # If dist is undefined, we didn't detect.
142 %{!?dist:%define dist unknown}
144 # Detect Suse variants.
145 %if %{_vendor} == "suse"
147 %if %(awk '$1 == "openSUSE" { exit 1; }' /etc/SuSE-release; echo $?)
149 %define distver %(awk '$1=="openSUSE" {print $2}' /etc/SuSE-release)
151 %if %(awk '$1 == "SUSE" { exit 1; }' /etc/SuSE-release; echo $?)
152 %define disttag %(awk '$1=="SUSE" {$3=="Enterprise" ? TAG="sles" : TAG="suse" ; print TAG}' /etc/SuSE-release)
153 %define distver %(awk '$1=="SUSE" {$3=="Enterprise" ? VER=$5 : VER=$3 ; print VER}' /etc/SuSE-release)
154 # Always use quotes in rpm comparisons if values could be interpreted
157 %if "%{distver}" == "9"
163 # Set options per distribution
164 %if %{dist} == redhat || %{dist} == fedora
165 %define rpm_group Applications/Archiving
166 %define xinetd_reload restart
167 %define requires_initscripts Requires: initscripts
170 %define rpm_group Productivity/Archiving/Backup
171 %define xinetd_reload restart
174 # Let's die if we haven't detected the distro. This might save some frustration.
175 # RPM does not provide a way to exit gracefully, hence the tag_to_cause_exit.
176 %{!?distver: %{error:"Your distribution and its version were not detected."}; %tag_to_cause_exit }
177 # Set minimum tar version if it wasn't set in the per-distro section
178 %{!?tarver: %define tarver 1.15}
180 %define packer %(%{__id_u} -n)
182 # --- Definitions ---
184 # Define amanda_version using the value determined by
185 # packaging/common/substitute.pl.
186 %{!?amanda_version: %define amanda_version %%VERSION%% }
187 %{!?amanda_release: %define amanda_release 1}
188 %define amanda_version_info "Amanda Community Edition - version %{amanda_version}"
189 %define amanda_user amandabackup
190 %define amanda_group disk
192 Summary: The Amanda Backup and Archiving System
194 Version: %{amanda_version}
195 %define rpm_release %{amanda_release}.%{disttag}%{distver}
197 %define rpm_release %{amanda_release}
199 Release: %{rpm_release}
200 Source: %{name}-%{version}.tar.gz
201 License: http://wiki.zmanda.com/index.php/Amanda_Copyright
203 Packager: www.zmanda.com
204 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-%{packer}-buildroot
206 # TODO - Need required versions for these:
207 BuildRequires: autoconf
208 BuildRequires: automake
209 BuildRequires: binutils
213 BuildRequires: glib2 >= 2.2.0
214 BuildRequires: glib2-devel
215 BuildRequires: readline
216 # Note: newer distros have changed most *-devel to lib*-devel, and added a
217 # provides tag for backwards compat.
218 BuildRequires: readline-devel
219 BuildRequires: %{curl} >= 7.10.0
220 BuildRequires: %{curl}-devel >= 7.10.0
221 BuildRequires: openssl
222 BuildRequires: openssl-devel
223 BuildRequires: perl(ExtUtils::Embed)
226 Requires: /usr/bin/id
227 Requires: /sbin/ldconfig
229 Requires: /usr/sbin/useradd
230 Requires: /usr/sbin/usermod
234 Requires: %{curl} >= 7.10.0
237 Requires: perl >= 5.6.0
238 Requires: tar >= %{tarver}
240 %{?requires_libtermcap}
241 %{?requires_initscripts}
243 %package backup_client
244 Summary: The Amanda Backup and Archiving Client
249 %{?requires_libtermcap}
250 %{?requires_initscripts}
252 Requires: perl >= 5.6.0
253 Requires: tar >= %{tarver}
255 Provides: amanda-backup_client = %{amanda_version}
256 Provides: libamclient-%{version}.so = %{amanda_version}
257 Provides: libamanda-%{version}.so = %{amanda_version}
258 Conflicts: amanda-backup_server
259 # Native package names
260 Obsoletes: amanda, amanda-client, amanda-server
262 %package backup_server
263 Summary: The Amanda Backup and Archiving Server
268 %{?requires_libtermcap}
269 %{?requires_initscripts}
271 Requires: perl >= 5.6.0
272 Requires: tar >= %{tarver}
273 Provides: amanda-backup_server = %{amanda_version}
274 Provides: libamclient-%{version}.so = %{amanda_version}
275 Provides: libamanda-%{version}.so = %{amanda_version}
276 Provides: libamserver-%{version}.so = %{amanda_version}
277 Provides: libamtape-%{version}.so = %{amanda_version}
278 Provides: libamdevice-%{version}.so = %{amanda_version}
279 Conflicts: amanda-backup_client
280 # Native package names
281 Obsoletes: amanda, amanda-client, amanda-server
282 # --- Package descriptions ---
285 Amanda is the leading Open-Source Backup and Archiving software.
287 The amanda-backup_server package should be installed on the Amanda server, i.e.
288 the machine attached to backup media (such as a tape drive or disk
289 drives) where backups will be written. The amanda-backup_server package
290 includes Amanda client. The amanda-backup_client package needs
291 to be installed on every system that is being backed up.
293 Amanda Forums is located at: http://forums.zmanda.com/
294 Amanda Documentation is available at: http://wiki.zmanda.com/
298 %description backup_server
299 Amanda is the leading Open-Source Backup and Archiving software.
301 This package contains the Amanda server. The amanda-backup_server package
302 should be installed on the Amanda server, i.e. the machine attached
303 to backup media (such as a tape drive or disk drives) where backups
304 will be written. The amanda-backup_server package includes Amanda client.
306 Amanda Forums is located at: http://forums.zmanda.com/
307 Amanda Documentation is available at: http://wiki.zmanda.com/
311 %description backup_client
312 Amanda is the leading Open-Source Backup and Archiving software.
314 This package contains the Amanda client. The amanda-backup_client package
315 needs to be installed on every system that is being backed up.
317 Amanda Forums is located at: http://forums.zmanda.com/
318 Amanda Documentation is available at: http://wiki.zmanda.com/
320 # --- Directory setup ---
322 # Configure directories:
324 %define EPREFIX %{PREFIX}
325 %define BINDIR %{EPREFIX}/bin
326 %define SBINDIR %{EPREFIX}/sbin
327 %define LIBEXECDIR %{EPREFIX}/libexec
328 %define AMLIBEXECDIR %{LIBEXECDIR}/amanda
329 %define DATADIR %{PREFIX}/share
330 %define SYSCONFDIR /etc
331 %define LOCALSTATEDIR /var
332 %define AMANDATES %{AMANDAHOMEDIR}/amandates
333 %define AMANDAHOMEDIR %{LOCALSTATEDIR}/lib/amanda
335 %define LIBDIR %{EPREFIX}/lib64
337 %define LIBDIR %{EPREFIX}/lib
339 %define AMLIBDIR %{LIBDIR}/amanda
340 %define INCLUDEDIR %{PREFIX}/include
341 %define MANDIR %{DATADIR}/man
342 %define LOGDIR /var/log/amanda
343 %define PERLSITELIB %(eval "`perl -V:installsitelib`"; echo $installsitelib)
344 %define AMDATADIR /var/lib/amanda
346 # Installation directories:
347 %define ROOT_SBINDIR %{buildroot}/%{SBINDIR}
348 %define ROOT_LIBEXECDIR %{buildroot}/%{LIBEXECDIR}
349 %define ROOT_DATADIR %{buildroot}/%{DATADIR}
350 %define ROOT_LOCALSTATEDIR %{buildroot}/%{LOCALSTATEDIR}
351 %define ROOT_SYSCONFDIR %{buildroot}/%{SYSCONFDIR}
352 %define ROOT_AMANDAHOMEDIR %{buildroot}/%{AMANDAHOMEDIR}
353 %define ROOT_LIBDIR %{buildroot}/%{LIBDIR}
354 %define ROOT_MANDIR %{buildroot}/%{MANDIR}
355 %define ROOT_LOGDIR %{buildroot}/%{LOGDIR}
356 %define ROOT_AMDATADIR %{buildroot}/%{AMDATADIR}
362 # --- Configure and compile ---
365 %define config_user %{amanda_user}
366 %define config_group %{amanda_group}
368 # Set PKG_CONFIG_PATH=some/path if some/path was set on the command line, or by
369 # the platform detection bits.
370 # without_ipv6 should only be defined on rhel3.
371 # LDFLAGS macro is defined except on rhel3.
373 %{?PKG_CONFIG_PATH: PKG_CONFIG_PATH=%PKG_CONFIG_PATH} \
374 CFLAGS="%{optflags} -g -pipe" CXXFLAGS="%{optflags}" \
375 %{?LDFLAGS:LDFLAGS="${LDFLAGS} %{?LDFLAGS:%LDFLAGS}"} \
378 --sysconfdir=%{SYSCONFDIR} \
379 --sharedstatedir=%{LOCALSTATEDIR} \
380 --localstatedir=%{LOCALSTATEDIR} \
382 --includedir=%{INCLUDEDIR} \
384 --with-amdatadir=%{AMDATADIR} \
385 --with-gnuplot=/usr/bin/gnuplot \
386 --with-gnutar=/bin/tar \
387 --with-gnutar-listdir=%{AMANDAHOMEDIR}/gnutar-lists \
388 --with-index-server=localhost \
389 --with-tape-server=localhost \
390 --with-user=%{config_user} \
391 --with-group=%{config_group} \
392 --with-owner=%{packer} \
394 --with-bsd-security \
395 --with-bsdtcp-security \
396 --with-bsdudp-security \
397 --with-ssh-security \
398 --with-debugging=%{LOGDIR} \
400 --disable-installperms \
403 make -s LIBTOOLFLAGS=--silent
405 # --- Install to buildroot ---
408 if [ "%{buildroot}" != "/" ]; then
409 if [ -d "%{buildroot}" ] ; then
413 echo "BuildRoot was somehow set to / !"
417 make -s -j1 LIBTOOLFLAGS=--silent DESTDIR=%{buildroot} install
419 rm -f %{ROOT_AMANDAHOMEDIR}/example/inetd.conf.amandaclient
420 mkdir %{buildroot}/{etc,var/log}
421 mkdir %{ROOT_LOCALSTATEDIR}/amanda
422 mkdir %{ROOT_SYSCONFDIR}/amanda
423 mkdir %{ROOT_AMANDAHOMEDIR}/gnutar-lists
426 echo "%{amanda_version_info}" >%{ROOT_AMANDAHOMEDIR}/amanda-release
428 # --- Clean up buildroot ---
431 if [ "%{buildroot}" != "/" ]; then
432 if [ -d "%{buildroot}" ] ; then
436 echo "BuildRoot was somehow set to / !"
440 # --- Pre/post (un)installation scripts ---
443 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
444 if [ $? -ne 0 ]; then
445 echo "Unable to mktemp!" 1>&2
449 INSTALL_LOG="${LOGDIR}/install.log"
450 INSTALL_ERR="${LOGDIR}/install.err"
452 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
454 # Check for the 'amanda' user
455 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
456 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
457 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user}
458 if [ %{dist} = "SuSE" ]; then
461 # Lock the amanda account until admin sets password
462 passwd -l %{amanda_user} >>/dev/null
465 if [ ${PASSWD_EXIT} -eq 0 ] ; then
466 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
467 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
468 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
469 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
470 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
471 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
472 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
473 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
474 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
475 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
476 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
477 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
478 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
479 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
480 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
481 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
482 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
485 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
486 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
487 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
488 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
489 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
490 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
491 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
492 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
493 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
494 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
495 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
496 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
497 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
498 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
502 # log information about 'amanda' user parameters
503 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
504 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
505 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
506 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
507 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
508 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
509 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
510 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
511 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
512 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
513 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
515 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
516 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
517 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
518 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using amanda !!!" >>${TMPFILE}
519 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
521 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
524 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
525 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
526 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
527 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
528 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
530 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
533 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
534 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
535 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
536 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
537 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
539 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
541 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
544 if [ -d %{AMANDAHOMEDIR} ] ; then
545 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
546 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
547 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
548 echo "correct." >>${TMPFILE}
551 echo "incorrect!" >>${TMPFILE}
552 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
553 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
559 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
560 if [ ! -e ${LOGDIR} ] ; then
561 # create log directory
562 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
563 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
564 elif [ ! -d ${LOGDIR} ] ; then
565 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
566 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
567 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
568 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
571 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
573 cat ${TMPFILE} >>${INSTALL_ERR}
574 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
575 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
579 cat ${TMPFILE} >>${INSTALL_LOG}
582 echo "`date +'%b %e %Y %T'`: === Amanda installation started. ===" >${TMPFILE}
585 cat ${TMPFILE} >>${INSTALL_LOG}
586 if [ -f "${TMPFILE}" ]; then
591 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX
592 if [ $? -ne 0 ]; then
593 echo "Unable to mktemp!" 1>&2
597 INSTALL_LOG="${LOGDIR}/install.log"
598 INSTALL_ERR="${LOGDIR}/install.err"
600 echo -n "`date +'%b %e %Y %T'`: Updating library cache..." >${TMPFILE}
601 /sbin/ldconfig >>${TMPFILE} 2>&1
602 echo "done." >>${TMPFILE}
604 cat ${TMPFILE} >>${INSTALL_LOG}
606 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
607 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
608 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
609 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
610 if [ -f /etc/xinetd.d/amandaclient ] ; then
611 rm /etc/xinetd.d/amandaclient
613 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
614 if [ "%{xinetd_reload}" == "reload" ] ; then
615 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
617 if [ ${ret_val} -ne 0 ] ; then
618 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
619 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
623 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
626 if [ ${ret_val} -eq 0 ] ; then
627 echo "success." >>${TMPFILE}
629 cat ${TMPFILE} >>${INSTALL_LOG}
631 echo "failed. Please check your system logs." >>${TMPFILE}
633 cat ${TMPFILE} >>${INSTALL_ERR}
638 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
640 if [ ! -f %{AMANDATES} ] ; then
641 touch %{AMANDATES} >>${TMPFILE} 2>&1
643 if [ ${ret_val} -eq 0 ]; then
644 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
647 if [ ${ret_val} -eq 0 ]; then
648 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
649 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
650 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
651 if [ -x /sbin/restorecon ] ; then
652 /sbin/restorecon %{AMANDATES} >>${TMPFILE} 2>&1
655 if [ ${ret_val} -eq 0 ]; then
656 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
658 cat ${TMPFILE} >>${INSTALL_LOG}
660 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
662 cat ${TMPFILE} >>${INSTALL_ERR}
666 # Install .gnupg directory
667 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
669 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
670 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
671 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
673 if [ ${ret_val} -eq 0 ]; then
674 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
676 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
679 if [ ${ret_val} -eq 0 ]; then
680 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
681 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
683 if [ ${ret_val} -eq 0 ]; then
684 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
688 if [ ${ret_val} -eq 0 ]; then
689 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
691 cat ${TMPFILE} >>${INSTALL_LOG}
693 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
695 cat ${TMPFILE} >>${INSTALL_ERR}
698 # Install .amandahosts
699 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
700 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
701 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
703 for host in localhost localhost.localdomain ; do
704 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
705 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
707 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
708 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
711 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
712 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
714 cat ${TMPFILE} >>${INSTALL_LOG}
716 # SSH RSA key generation for amdump
717 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
718 KEYFILE="id_rsa_amdump"
719 COMMENT="%{amanda_user}@server"
720 if [ ! -d ${KEYDIR} ] ; then
721 if [ -f ${KEYDIR} ] ; then
722 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
723 mv ${KEYDIR} ${KEYDIR}.rpmsave
725 cat ${TMPFILE} >>${INSTALL_LOG}
727 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
728 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
730 cat ${TMPFILE} >>${INSTALL_LOG}
732 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
733 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
735 cat ${TMPFILE} >>${INSTALL_LOG}
736 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
738 cat ${TMPFILE} >>${INSTALL_LOG}
740 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
741 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
742 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
743 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
745 cat ${TMPFILE} >>${INSTALL_LOG}
747 # SSH RSA key generation on client for amrecover
748 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
749 KEYFILE="id_rsa_amrecover"
750 COMMENT="root@client"
751 if [ ! -d ${KEYDIR} ] ; then
752 if [ -f ${KEYDIR} ] ; then
753 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
754 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
756 cat ${TMPFILE} >>${INSTALL_LOG}
758 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
759 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
761 cat ${TMPFILE} >>${INSTALL_LOG}
763 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
764 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
765 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
767 cat ${TMPFILE} >>${INSTALL_LOG}
769 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}'" >${TMPFILE}
770 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
771 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
772 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
774 cat ${TMPFILE} >>${INSTALL_LOG}
776 # environment variables (~amandabackup/.profile)
777 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
778 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
779 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
781 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
782 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
784 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >>${TMPFILE}
785 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
786 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
788 cat ${TMPFILE} >>${INSTALL_LOG}
790 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
791 if [ -x /usr/bin/wget ]; then
792 /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
795 echo "`date +'%b %e %Y %T'`: === Amanda installation complete. ===" >${TMPFILE}
798 cat ${TMPFILE} >>${INSTALL_LOG}
799 if [ -f "${TMPFILE}" ]; then
803 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
807 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
808 if [ $? -ne 0 ]; then
809 echo "Unable to mktemp!" 1>&2
814 INSTALL_LOG="${LOGDIR}/install.log"
815 INSTALL_ERR="${LOGDIR}/install.err"
817 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
819 # Check for the 'amanda' user
820 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
821 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
822 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user}
823 if [ %{dist} = "SuSE" ]; then
826 # Lock the amanda account until admin sets password
827 passwd -l %{amanda_user} >>/dev/null
830 if [ ${PASSWD_EXIT} -eq 0 ] ; then
831 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
832 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
833 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
834 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
835 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
836 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
837 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
838 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
839 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
840 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
841 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
842 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
843 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
844 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
845 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
846 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
847 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
850 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
851 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
852 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
853 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
854 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
855 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
856 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
857 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
858 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
859 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
860 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
861 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
862 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
863 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
867 # log information about 'amanda' user parameters
868 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
869 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
870 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
871 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
872 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
873 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
874 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
875 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
876 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
877 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
878 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
880 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
881 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
882 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
883 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
884 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
886 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
889 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
890 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
891 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
892 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
893 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
895 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
898 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
899 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
900 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
901 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
902 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
904 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
906 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
909 if [ -d %{AMANDAHOMEDIR} ] ; then
910 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
911 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
912 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
913 echo "correct." >>${TMPFILE}
916 echo "incorrect!" >>${TMPFILE}
917 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
918 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
924 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
926 if [ ! -e ${LOGDIR} ] ; then
927 # create log directory
928 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
929 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
930 elif [ ! -d ${LOGDIR} ] ; then
931 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
932 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
933 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
934 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
936 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
938 cat ${TMPFILE} >>${INSTALL_ERR}
939 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
940 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
944 cat ${TMPFILE} >>${INSTALL_LOG}
947 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation started. ===" >${TMPFILE}
950 cat ${TMPFILE} >>${INSTALL_LOG}
951 if [ -f "${TMPFILE}" ]; then
955 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
956 if [ $? -ne 0 ]; then
957 echo "Unable to mktemp!" 1>&2
961 INSTALL_LOG="${LOGDIR}/install.log"
962 INSTALL_ERR="${LOGDIR}/install.err"
964 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
966 echo "done." >>${TMPFILE}
968 cat ${TMPFILE} >>${INSTALL_LOG}
970 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
971 if [ ! -f /etc/xinetd.d/amandaserver ] ; then
972 cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver
973 chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1
974 if [ -f /etc/xinetd.d/amandaclient ] ; then
975 rm /etc/xinetd.d/amandaclient
978 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
979 if [ "%{xinetd_reload}" == "reload" ] ; then
980 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
982 if [ ${ret_val} -ne 0 ] ; then
983 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
984 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
988 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
991 if [ ${ret_val} -eq 0 ] ; then
992 echo "success." >>${TMPFILE}
994 cat ${TMPFILE} >>${INSTALL_LOG}
996 echo "failed. Please check your system logs." >>${TMPFILE}
998 cat ${TMPFILE} >>${INSTALL_ERR}
1003 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
1005 if [ ! -f %{AMANDATES} ] ; then
1006 touch %{AMANDATES} >>${TMPFILE} 2>&1
1008 if [ ${ret_val} -eq 0 ]; then
1009 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
1012 if [ ${ret_val} -eq 0 ]; then
1013 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
1014 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
1015 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
1017 if [ ${ret_val} -eq 0 ]; then
1018 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
1020 cat ${TMPFILE} >>${INSTALL_LOG}
1022 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1024 cat ${TMPFILE} >>${INSTALL_ERR}
1027 # Install .amandahosts to server
1028 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1029 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1030 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1032 for host in localhost localhost.localdomain ; do
1033 if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1034 echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts
1036 if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then
1037 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1040 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1041 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1043 cat ${TMPFILE} >>${INSTALL_LOG}
1045 # Install amanda client configuration file
1046 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1047 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1048 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1050 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1051 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1053 cat ${TMPFILE} >>${INSTALL_LOG}
1055 # install am_passphrase file to server
1056 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1057 if [ ! -f %{AMANDAHOMEDIR}/.am_passphrase ] ; then
1058 echo "`date +'%b %e %Y %T'`: Create '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE}
1059 touch %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1060 phrase=`echo $RANDOM | md5sum | awk '{print $1}'`
1061 echo ${phrase} >>%{AMANDAHOMEDIR}/.am_passphrase
1063 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1064 chmod 0700 %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1
1067 cat ${TMPFILE} >>${INSTALL_LOG}
1069 # Install .gnupg directory
1070 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1072 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1073 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1074 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1076 if [ ${ret_val} -eq 0 ]; then
1077 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1079 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1082 if [ ${ret_val} -eq 0 ]; then
1083 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1084 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1086 if [ ${ret_val} -eq 0 ]; then
1087 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1091 if [ ${ret_val} -eq 0 ]; then
1092 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1094 cat ${TMPFILE} >>${INSTALL_LOG}
1096 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1098 cat ${TMPFILE} >>${INSTALL_ERR}
1101 # SSH RSA key generation on server for amdump
1102 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1103 KEYFILE="id_rsa_amdump"
1104 COMMENT="%{amanda_user}@server"
1105 if [ ! -d ${KEYDIR} ] ; then
1106 if [ -f ${KEYDIR} ] ; then
1107 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1108 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1110 cat ${TMPFILE} >>${INSTALL_LOG}
1112 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1113 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1115 cat ${TMPFILE} >>${INSTALL_LOG}
1117 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1118 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1119 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1121 cat ${TMPFILE} >>${INSTALL_LOG}
1123 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1124 chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1125 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1126 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1128 cat ${TMPFILE} >>${INSTALL_LOG}
1130 # SSH RSA key generation on client for amrecover
1131 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1132 KEYFILE="id_rsa_amrecover"
1133 COMMENT="root@client"
1134 if [ ! -d ${KEYDIR} ] ; then
1135 if [ -f ${KEYDIR} ] ; then
1136 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1137 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1139 cat ${TMPFILE} >>${INSTALL_LOG}
1141 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1142 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1144 cat ${TMPFILE} >>${INSTALL_LOG}
1146 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1147 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1148 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1150 cat ${TMPFILE} >>${INSTALL_LOG}
1152 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}'" >${TMPFILE}
1153 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1154 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1155 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1157 cat ${TMPFILE} >>${INSTALL_LOG}
1159 # environment variables (~amandabackup/.profile)
1160 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1161 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1162 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1164 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1165 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1168 cat ${TMPFILE} >>${INSTALL_LOG}
1170 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1171 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1172 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1174 cat ${TMPFILE} >>${INSTALL_LOG}
1176 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1177 if [ -x /usr/bin/wget ]; then
1178 /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
1181 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation complete. ===" >${TMPFILE}
1184 cat ${TMPFILE} >>${INSTALL_LOG}
1186 if [ -f "${TMPFILE}" ]; then
1187 rm -f "${TMPFILE}" >>${TMPFILE} 2>&1
1190 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1191 %postun backup_server
1194 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1195 if [ $? -ne 0 ]; then
1196 echo "Unable to mktemp!" 1>&2
1200 INSTALL_LOG="${LOGDIR}/install.log"
1201 INSTALL_ERR="${LOGDIR}/install.err"
1203 echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE}
1205 # Check for the 'amanda' user
1206 echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE}
1207 if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then
1208 useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/sh %{amanda_user} >>${TMPFILE} 2>&1
1209 if [ %{dist} = "SuSE" ]; then
1212 # Lock the amanda account until admin sets password
1213 passwd -l %{amanda_user} >>/dev/null
1216 if [ ${PASSWD_EXIT} -eq 0 ] ; then
1217 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1218 echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE}
1219 echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE}
1220 echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE}
1221 echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE}
1222 echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE}
1223 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1224 echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE}
1225 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1226 echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE}
1227 echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE}
1228 echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE}
1229 echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE}
1230 echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE}
1231 echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE}
1232 echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE}
1233 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1236 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1237 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1238 echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE}
1239 echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE}
1240 echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE}
1241 echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE}
1242 echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE}
1243 echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE}
1244 echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE}
1245 echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE}
1246 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1247 echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE}
1248 echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE}
1249 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1253 # log information about 'amanda' user parameters
1254 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1255 echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE}
1256 echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE}
1257 echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE}
1258 echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE}
1259 echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE}
1260 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1261 echo "`date +'%b %e %Y %T'`: SHELL: /bin/sh" >>${TMPFILE}
1262 echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE}
1263 echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE}
1264 echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE}
1266 if [ "`id -gn %{amanda_user}`" != "disk" ] ; then
1267 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1268 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE}
1269 echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE}
1270 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1272 echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE}
1275 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/sh" ] ; then
1276 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1277 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE}
1278 echo "`date +'%b %e %Y %T'`: !!! /bin/sh, pl correct before start using Amanda !!!" >>${TMPFILE}
1279 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1281 echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE}
1284 if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then
1285 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1286 echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE}
1287 echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE}
1288 echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE}
1290 echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE}
1292 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1295 if [ -d %{AMANDAHOMEDIR} ] ; then
1296 echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE}
1297 if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \
1298 [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then
1299 echo "correct." >>${TMPFILE}
1302 echo "incorrect!" >>${TMPFILE}
1303 echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE}
1304 echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE}
1310 echo "`date +'%b %e %Y %T'`:" >>${TMPFILE}
1312 if [ ! -e ${LOGDIR} ] ; then
1313 # create log directory
1314 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1315 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1316 elif [ ! -d ${LOGDIR} ] ; then
1317 mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1
1318 mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1
1319 chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1
1320 mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1
1322 if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then
1324 cat ${TMPFILE} >>${INSTALL_ERR}
1325 echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2
1326 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1330 cat ${TMPFILE} >>${INSTALL_LOG}
1333 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation started. ===" >${TMPFILE}
1336 cat ${TMPFILE} >>${INSTALL_LOG}
1338 if [ -f "${TMPFILE}" ]; then
1343 TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX`
1344 if [ $? -ne 0 ]; then
1345 echo "Unable to mktemp!" 1>&2
1349 INSTALL_LOG="${LOGDIR}/install.log"
1350 INSTALL_ERR="${LOGDIR}/install.err"
1352 echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE}
1354 echo "done." >>${TMPFILE}
1356 cat ${TMPFILE} >>${INSTALL_LOG}
1358 if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then
1359 if [ ! -f /etc/xinetd.d/amandaclient ] ; then
1360 cp %{AMANDAHOMEDIR}/example/xinetd.amandaclient /etc/xinetd.d/amandaclient
1362 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE}
1363 if [ "%{xinetd_reload}" == "reload" ] ; then
1364 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1366 if [ ${ret_val} -ne 0 ] ; then
1367 echo -n "reload failed. Attempting restart..." >>${TMPFILE}
1368 /etc/init.d/xinetd restart >>${TMPFILE} 2>&1
1372 /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1
1375 if [ ${ret_val} -eq 0 ] ; then
1376 echo "success." >>${TMPFILE}
1378 cat ${TMPFILE} >>${INSTALL_LOG}
1380 echo "failed. Please check your system logs." >>${TMPFILE}
1382 cat ${TMPFILE} >>${INSTALL_LOG}
1387 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE}
1389 if [ ! -f %{AMANDATES} ] ; then
1390 touch %{AMANDATES} >>${TMPFILE} 2>&1
1392 if [ ${ret_val} -eq 0 ]; then
1393 echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE}
1396 if [ ${ret_val} -eq 0 ]; then
1397 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE}
1398 chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1
1399 chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1
1401 if [ ${ret_val} -eq 0 ]; then
1402 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE}
1404 cat ${TMPFILE} >>${INSTALL_LOG}
1406 echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE}
1408 cat ${TMPFILE} >>${INSTALL_ERR}
1411 # Install .amandahosts to client
1412 echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE}
1413 if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then
1414 touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1416 for host in localhost localhost.localdomain ; do
1417 if [ -z "`grep \"^${host}[[:blank:]]\+\" %{AMANDAHOMEDIR}/.amandahosts | grep \"[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\"`" ] ; then
1418 echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts
1421 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1422 chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1
1424 cat ${TMPFILE} >>${INSTALL_LOG}
1426 # Install amanda client configuration file
1427 echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE}
1428 if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then
1429 cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1431 chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1432 chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1
1434 cat ${TMPFILE} >>${INSTALL_LOG}
1436 # Install .gnupg directory
1437 echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE}
1439 if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then
1440 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE}
1441 mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1443 if [ ${ret_val} -eq 0 ]; then
1444 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE}
1446 echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE}
1449 if [ ${ret_val} -eq 0 ]; then
1450 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE}
1451 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1453 if [ ${ret_val} -eq 0 ]; then
1454 chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1
1458 if [ ${ret_val} -eq 0 ]; then
1459 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE}
1461 cat ${TMPFILE} >>${INSTALL_LOG}
1463 echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE}
1465 cat ${TMPFILE} >>${INSTALL_ERR}
1468 # SSH RSA key generation on client for amrecover
1469 KEYDIR="%{AMANDAHOMEDIR}/.ssh"
1470 KEYFILE="id_rsa_amrecover"
1471 COMMENT="root@client"
1472 if [ ! -d ${KEYDIR} ] ; then
1473 if [ -f ${KEYDIR} ] ; then
1474 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE}
1475 mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1
1477 cat ${TMPFILE} >>${INSTALL_LOG}
1479 echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE}
1480 mkdir ${KEYDIR} >>${TMPFILE} 2>&1
1482 cat ${TMPFILE} >>${INSTALL_LOG}
1484 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
1485 echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE}
1486 ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1
1488 cat ${TMPFILE} >>${INSTALL_LOG}
1490 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE}
1491 chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1
1492 chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1
1493 chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1
1495 cat ${TMPFILE} >>${INSTALL_LOG}
1497 # environment variables (~amandabackup/.profile)
1498 echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE}
1499 if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then
1500 touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1502 if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then
1503 echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE}
1506 cat ${TMPFILE} >>${INSTALL_LOG}
1507 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE}
1508 chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1509 chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1
1511 cat ${TMPFILE} >>${INSTALL_LOG}
1513 echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG}
1514 if [ -x /usr/bin/wget ]; then
1515 /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
1518 echo "`date +'%b %e %Y %T'`: === Amanda backup client installation complete. ===" >>${TMPFILE}
1520 cat ${TMPFILE} >>${INSTALL_LOG}
1522 if [ -f "${TMPFILE}" ]; then
1526 echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'."
1527 %postun backup_client
1530 # --- Files to install ---
1531 # Notes: Do not use wildcards on directories not wholly owned by amanda. An
1532 # uninstall of the software will attempt to delete whatever matches here.
1533 %files backup_client
1534 %defattr(0755,%{amanda_user},%{amanda_group},0755)
1537 %{PERLSITELIB}/auto/Amanda
1538 %defattr(4750,root,disk)
1539 %{AMLIBEXECDIR}/application/amgtar
1540 %{AMLIBEXECDIR}/application/amstar
1541 %{AMLIBEXECDIR}/calcsize
1542 %{AMLIBEXECDIR}/killpgrp
1543 %{AMLIBEXECDIR}/rundump
1544 %{AMLIBEXECDIR}/runtar
1545 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1547 %{SBINDIR}/amaespipe
1549 %{SBINDIR}/amgpgcrypt
1550 %{SBINDIR}/amoldrecover
1551 %{SBINDIR}/amrecover
1552 %{SYSCONFDIR}/amanda
1553 %defattr(0644,%{amanda_user},%{amanda_group},0755)
1554 %{LOCALSTATEDIR}/amanda
1555 %{PERLSITELIB}/Amanda
1556 %{AMLIBEXECDIR}/amcat.awk
1557 %{AMANDAHOMEDIR}/gnutar-lists
1558 %doc %{AMANDAHOMEDIR}/amanda-release
1559 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaclient
1560 %doc %{AMANDAHOMEDIR}/example/xinetd.amandaserver
1561 %doc %{AMANDAHOMEDIR}/example/amanda-client.conf
1562 %doc %{AMANDAHOMEDIR}/template.d/README
1563 %doc %{AMANDAHOMEDIR}/template.d/dumptypes
1564 %defattr(0644,root,root,0755)
1566 %{MANDIR}/man5/amanda.conf.5.gz
1567 %{MANDIR}/man5/amanda-client.conf.5.gz
1568 %{MANDIR}/man7/amanda-devices.7.gz
1569 %{MANDIR}/man7/amanda-applications.7.gz
1570 %{MANDIR}/man7/amanda-scripts.7.gz
1571 %{MANDIR}/man8/amaespipe.8.gz
1572 %{MANDIR}/man8/amanda.8.gz
1573 %{MANDIR}/man8/amcheckdump.8.gz
1574 %{MANDIR}/man8/amcrypt*
1575 %{MANDIR}/man8/amgpgcrypt.8.gz
1576 %{MANDIR}/man8/amrecover.8.gz
1577 %doc %{DATADIR}/amanda
1579 %files backup_server
1580 %defattr(0755,%{amanda_user},%{amanda_group})
1583 %{PERLSITELIB}/Amanda
1584 %{PERLSITELIB}/auto/Amanda
1586 %{LOCALSTATEDIR}/amanda
1588 %defattr(4750,root,disk)
1589 %{AMLIBEXECDIR}/application/amgtar
1590 %{AMLIBEXECDIR}/application/amstar
1591 %{AMLIBEXECDIR}/calcsize
1592 %{AMLIBEXECDIR}/killpgrp
1593 %{AMLIBEXECDIR}/rundump
1594 %{AMLIBEXECDIR}/runtar
1595 %{AMLIBEXECDIR}/dumper
1596 %{AMLIBEXECDIR}/planner
1598 %defattr(0750,%{amanda_user},%{amanda_group},0750)
1600 %{SYSCONFDIR}/amanda
1601 # Files in standard dirs must be listed explicitly
1602 %{SBINDIR}/activate-devpay
1603 %{SBINDIR}/amaespipe
1605 %{SBINDIR}/amcrypt-ossl
1606 %{SBINDIR}/amcrypt-ossl-asym
1607 %{SBINDIR}/amcryptsimple
1608 %{SBINDIR}/amgpgcrypt
1609 %{SBINDIR}/amoldrecover
1610 %{SBINDIR}/amrecover
1611 %defattr(0644,%{amanda_user},%{amanda_group})
1612 %{AMLIBEXECDIR}/amcat.awk
1613 %{AMLIBEXECDIR}/amplot.awk
1614 %{AMLIBEXECDIR}/amplot.g
1615 %{AMLIBEXECDIR}/amplot.gp
1616 %doc %{AMANDAHOMEDIR}/amanda-release
1617 %docdir %{AMANDAHOMEDIR}/example
1618 %docdir %{AMANDAHOMEDIR}/template.d
1619 %defattr(0644,root,root,0755)
1622 %{MANDIR}/man5/disklist.5.gz
1623 %{MANDIR}/man5/tapelist.5.gz
1626 %{MANDIR}/man8/script-email.8.gz
1627 %doc %{DATADIR}/amanda
1632 * Fri Aug 20 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1633 - use %%VERSION%% macro instead of reading a file. error reported by ssgelm
1634 * Thu Aug 19 2010 Dan Locks <dwlocks at zmanda dot com> 3.2.0alpha
1635 - Added detection of openSuSE 11 as suggested by ssgelm