#!/bin/bash # # Copyright (C) 2010 Eric Shubert # # Install/update dependencies for qmail-toaster suite of packages. # This started as spamassassin/perl dependencies, and grew from there. # ################################################################### # # change log # 11/11/13 shubes - added perl-libwww-perl, removed LWP::UserAgent, HTTP::Date # 07/26/12 shubes - Added gnupg for spamassassin (sa-update) # 04/09/11 Jake - Added routine to check for dependencies for the # base OS (ie: rpmbuild and such). Based off of # deps for CentOS, so probably needs testing for other distros. # # 07/29/10 shubes - created from code in qtp-newmodel # ################################################################### ## check and set up the environment # a1_initialization(){ # Make sure we're root if [ "$UID" != "0" ]; then echo "Error: You are not root, please su -" exit 1 fi echo "$me $myver" } ################################################################### ## check to see if rpmforge repo is available or not # a2_rpmforge_repo(){ qtp-install-rpmforge if [ $? == "0" ]; then enableparm="--enablerepo=rpmforge" else enableparm="" fi } ################################################################### ## install dependent packages that aren't already installed # a3_define_packages(){ dep_pkgs="\ gnupg \ ncurses-devel \ perl(Archive::Tar) \ perl(Compress::Zlib) \ perl(Crypt::OpenSSL::Bignum) \ perl(DB_File) \ perl(DBI) \ perl(Digest::SHA1) \ perl(Encode::Detect) \ perl(Getopt::Long) \ perl(HTML::Parser) \ perl(IO::Socket::INET6) \ perl(IO::Socket::SSL) \ perl(IO::Zlib) \ perl(IP::Country::Fast) \ perl(libwww::perl) \ perl(Mail::DKIM) \ perl(Mail::DomainKeys) \ perl(Mail::SPF) \ perl(MIME::Base64) \ perl(Net::DNS) \ perl(Net::Ident) \ perl(Net::SMTP) \ perl(NetAddr::IP) \ perl(Razor2::Client::Agent) \ perl(Time::HiRes) \ procmail \ which \ " } ################################################################### ## install dependent packages that aren't already installed # a3_base_packages(){ base_pkgs="\ autoconf \ automake \ automake17 \ bzip2 \ bzip2-devel \ bzip2-libs \ compat-gcc-34 \ compat-gcc-34-c++ \ compat-glibc \ compat-glibc-headers \ compat-libf2c \ compat-libgcc \ compat-libstdc++-296 \ compat-libsdc++-33 \ curl \ curl-devel \ expect \ expect-devel \ gcc \ gcc-c++ \ gdbm \ gdbm-devel \ gmp \ gmp-devel \ groff \ httpd \ httpd-devel \ httpd-manual \ krb5-auth-dialog \ krb5-devel \ krb5-libs \ krb5-workstation \ libgcc \ libidn \ libidn-devel \ libtool \ libtool-ltdl \ libtool-ltdl-devel \ mysql \ mysql-bench \ mysql-devel \ mysql-server \ mrtg \ ntp \ openssh \ openssh-clients \ openssh-askpass \ openssh-server \ openssl \ openssl-devel \ pcre \ pcre-devel \ php \ php-mysql \ php-pear \ redhat-rpm-config \ rpm \ rpm-build \ rpm-devel \ rpm-libs \ rpm-python \ sed \ setup \ setuptool \ stunnel \ system-config-date \ wget \ which \ zlib \ zlib-devel \ " } ################################################################### ## install dependent packages that aren't already installed # a4_check_installed(){ for pkg in $dep_pkgs; do rpm --query --whatprovides $pkg >/dev/null 2>&1 if [ $? != "0" ]; then pkglist="$pkglist $pkg" fi done } ################################################################### ## install base packages that are missing # a4_check_base(){ for basepkg in $base_pkgs; do rpm --query --whatprovides $basepkg >/dev/null 2>&1 if [ $? != "0" ]; then baselist="$baselist $basepkg" fi done } ################################################################### ## install the packages # a5_install_packages(){ echo "" echo "$me - installing $pkglist ..." yum $enableparm -y install $pkglist rc=$? if [ "$rc" != "0" ]; then echo "$me - installation of dependent packages failed, exiting" exit $rc fi } ################################################################### ## install base packages # a5_install_base(){ echo "" echo "$me - installing $baselist ..." yum -y install $baselist rc=$? if [ "$rc" != "0" ]; then echo "$me - installation of base dependencies failed, exiting" exit $rc fi } ################################################################### ## main script execution begins here # me=${0##*/} myver=v0.3.3 a1_initialization a2_rpmforge_repo a3_define_packages a3_base_packages pkglist="" a4_check_installed a4_check_base if [ ! -z "$pkglist" ]; then a5_install_packages fi if [ ! -a "$baselist" ]; then a5_install_base fi # let's update all dependent packages while we're at it echo "" echo "$me - updating toaster (mostly spamassassin) dependencies ..." yum $enableparm -y update $dep_pkgs exit 0