#!/usr/bin/env bash _src_base_dir="$(realpath $(dirname $0))" log_file="$(mktemp)" # ------------- # - Functions # ------------- clean_up() { # Perform program exit housekeeping rm -f "$log_file" exit $1 } echononl(){ echo X\\c > /tmp/shprompt$$ if [ `wc -c /tmp/shprompt$$ | awk '{print $1}'` -eq 1 ]; then echo "$*\\c" 1>&2 else echo -e -n "$*" 1>&2 fi rm /tmp/shprompt$$ } error(){ echo "" echo -e "\t[ \033[31m\033[1mFehler\033[m ]: $*" echo "" } echo_ok() { echo -e "\033[75G[ \033[32mok\033[m ]" ## echo -e " [ ok ]" } echo_failed(){ echo -e "\033[75G[ \033[1;31mfailed\033[m ]" ## echo -e " [ failed ]" } echo_skipped() { echo -e "\033[80G[ \033[33m\033[1mskipped\033[m ]" } _needed_packages_base=" alien amavisd-new arc arj aspell-da aspell-de aspell-en aspell-es aspell-fr aspell-it binutils bsd-mailx bzip2 cabextract clamav-base clamav-daemon clamav-docs clamav-freshclam cpanminus cpio\ ftp geoip-bin geoip-database haveged lhasa libclamunrar7 libdbd-mysql libdbd-mysql-perl libdbd-pg-perl libdbd-pgsql libdbi-dev libdbi-perl libemail-sender-perl libemail-valid-perl libgeoip-dev libgeo-ipfree-perl libgeo-ip-perl libgmp10 libgmp-dev libimage-info-perl libio-socket-ssl-perl libio-string-perl libio-zlib-perl libkrb5-dev liblog-log4perl-perl liblz4-tool libmail-dkim-perl libmail-sendmail-perl libmail-spf-perl libmime-encwords-perl libnet-cidr-lite-perl libnet-ident-perl libpq5 libpq-dev libsasl2-modules lrzip lzop melt ncftp nomarch opendkim opendkim-tools p7zip p7zip-full p7zip-rar pax postfix postfix-mysql postfix-pcre postfix-pgsql postgrey pyzor rar re2c ripole rpm sasl2-bin socat spamassassin razor tar tnef unrar unrar-free unzip zip zoo" echo "" echononl " Install needed debian packages" for _pkg in $_needed_packages_base ; do if aptitude search "$_pkg" | grep " $_pkg " | grep -e "^i" > /dev/null 2>&1 ; then continue else needed_packages_base="$needed_packages_base $_pkg" fi done if [[ -n "$needed_packages_base" ]]; then DEBIAN_FRONTEND=noninteractive apt-get -y install $needed_packages_base > /dev/null 2> "$log_file" if [[ $? -eq 0 ]] ; then echo_ok else echo_failed error "$(cat $log_file)" fi else echo_skipped fi echo "" echononl " Install database related CPAN Modules" _failed=false > $log_file _needed_cpan_modules=" CPAN Mail::Sender DBI DBD::mysql DBD::Pg IO::Socket::UNIX Digest::SHA1 Digest::SHA2 Digest::SHA256 Encode::Detect Net::Patricia" for _module in $_needed_cpan_modules ; do cpanm -q --skip-installed $_module >> "$log_file" 2>&1 if [[ "$?" -ne 0 ]] ; then _failed=true fi done if $_failed ; then echo_failed error "$(cat $log_file)" else echo_ok fi echo "" clean_up 0