--- doc/install/redhat7.3/install.pl 2002/07/22 14:23:04 1.7 +++ doc/install/redhat7.3/install.pl 2003/01/12 19:07:28 1.19 @@ -2,7 +2,7 @@ # The LearningOnline Network # Red Hat 7.3 installation script # -# $Id: install.pl,v 1.7 2002/07/22 14:23:04 harris41 Exp $ +# $Id: install.pl,v 1.19 2003/01/12 19:07:28 matthew Exp $ # # Copyright Michigan State University Board of Trustees # @@ -61,13 +61,15 @@ # perl-DBI-1.21-1.i386.rpm # mod_perl-1.26-5.i386.rpm # perl-suidperl-5.6.1-34.99.6.i386.rpm -# LON-CAPA-systemperl-3.4-rh72.i386.rpm +# LON-CAPA-systemperl-3.5-rh7.i386.rpm # mysql-3.23.49-3.i386.rpm # mysqlclient9-3.23.22-6.i386.rpm # mysql-server-3.23.49-3.i386.rpm # hwcrypto-1.0-3.i386.rpm # m2crypto-0.05_snap4-2.i386.rpm -# netatalk-1.5pre6-1rh7.i386.rpm +# netpbm-9.24-3.i386.rpm +# netpbm-progs-9.24-3.i386.rpm +# krb5-libs-1.2.4-3.i386.rpm # Other files: # httpd.conf # mod_auth_external-2.1.13.tar.gz @@ -85,7 +87,7 @@ my $result; my $test; # note: The filehandle LOG is global. -open LOG,">/tmp/loncapa_install.log" || die "Unable to open log file.\n"; +open LOG,">loncapa_install.log" || die "Unable to open log file.\n"; # Some friendly subroutines sub die_if_nonempty { @@ -145,7 +147,7 @@ END print <<"END"; ******************************************************************** - Welcome to LON-CAPA + Welcome to LON-CAPA 0.6.0 This script will install the base software that LON-CAPA needs to run properly. @@ -163,7 +165,7 @@ chomp($instdir); # my @apache_rpms = ( - "$instdir/apache-1.3.23-14.i386.rpm" + "$instdir/apache-1.3.23-14.i386.rpm", ); my @openssh_rpms = ( @@ -172,68 +174,106 @@ my @openssh_rpms = ( "$instdir/openssh-clients-3.1p1-6.i386.rpm", "$instdir/openssh-server-3.1p1-6.i386.rpm" ); + # Check for gnome-askpass installation. if (-e "/etc/profile.d/gnome-ssh-askpass.sh") { push @openssh_rpms,"$instdir/openssh-askpass-gnome-3.1p1-6.i386.rpm"; } -my @ImageMagick_rpms = ( +my @ImageMagick_rpms = ( "$instdir/ImageMagick-5.4.3.11-1.i386.rpm", "$instdir/ImageMagick-devel-5.4.3.11-1.i386.rpm", "$instdir/ImageMagick-perl-5.4.3.11-1.i386.rpm", ); -my @gnuplot_rpms = ( - "$instdir/gnuplot-3.7.1-5.i386.rpm", - "$instdir/libgd-1.3-4.i386.rpm", - "$instdir/libungif-progs-4.1.0-9.i386.rpm", - "$instdir/ncurses4-5.0-5.i386.rpm", - "$instdir/readline-2.2.1-6.i386.rpm", - "$instdir/readline-4.2a-4.i386.rpm" - ); +my @mysql_rpms = ( + "$instdir/mysql-3.23.49-3.i386.rpm", + "$instdir/mysqlclient9-3.23.22-6.i386.rpm", + "$instdir/mysql-server-3.23.49-3.i386.rpm", + ); + my @perl_rpms = ( "$instdir/perl-DBD-MySQL-1.2216-4.i386.rpm", "$instdir/perl-DBI-1.21-1.i386.rpm", - "$instdir/mod_perl-1.26-5.i386.rpm", "$instdir/perl-suidperl-5.6.1-34.99.6.i386.rpm", ); + +my @old_readline_rpms = ( + "$instdir/readline-2.2.1-6.i386.rpm", # requires -i --oldpackage, + # not -Uvh + ); +my @gnuplot_rpms = ( # must be done after readline-2.2.1-6 + "$instdir/libgd-1.3-4.i386.rpm", + "$instdir/libungif-progs-4.1.0-9.i386.rpm", + "$instdir/ncurses4-5.0-5.i386.rpm", + "$instdir/gnuplot-3.7.1-5.i386.rpm", + ); + my @loncapa_perl_rpms = ( - "$instdir/LON-CAPA-systemperl-3.4-rh72.i386.rpm" + "$instdir/netpbm-9.24-3.i386.rpm", + "$instdir/netpbm-progs-9.24-3.i386.rpm", + "$instdir/krb5-libs-1.2.4-3.i386.rpm", + "$instdir/krb5-devel-1.2.4-3.i386.rpm", + "$instdir/LON-CAPA-krb4-3.1-1.i386.rpm", ); -my @mysql_rpms = ( - "$instdir/mysql-3.23.49-3.i386.rpm", # okay w/o f,nd - "$instdir/mysqlclient9-3.23.22-6.i386.rpm", # okay w/o f,nd - "$instdir/mysql-server-3.23.49-3.i386.rpm", # okay w/o f,nd - ); my @misc_rpms = ( - "$instdir/hwcrypto-1.0-3.i386.rpm", # already installed - "$instdir/m2crypto-0.05_snap4-2.i386.rpm", # okay w/o f,nd - "$instdir/netatalk-1.5pre6-1rh7.i386.rpm" # hmmmm + "$instdir/m2crypto-0.05_snap4-2.i386.rpm", + "$instdir/tetex-dvips-1.0.7-47.i386.rpm", + "$instdir/ntp-4.1.1-1.i386.rpm", + "$instdir/libcap-1.10-8.i386.rpm", ); + +my $systemperl = "$instdir/LON-CAPA-systemperl-3.5-rh7.i386.rpm"; + ## -## Okay, I have tried being nice about this and not doing '--force --nodeps', -## but it is an exercise in frustration. It would be nice to be kind, but -## frankly I do not want to spend the time to figure this out. -## - -print_and_log("Installing Apache packages.\n"); -writelog (`rpm -Uvh @apache_rpms`); -print_and_log("Installing openssh packages.\n"); -writelog (`rpm -Uvh @openssh_rpms`); -system("/etc/init.d/sshd start"); -print_and_log("Installing ImageMagick packages.\n"); -writelog (`rpm -ivh --force --nodeps @ImageMagick_rpms`); -print_and_log("Installing mysql packages.\n"); -writelog (`rpm -ivh --force --nodeps @mysql_rpms`); -print_and_log("Installing gnuplot packages.\n"); -writelog (`rpm -ivh --force --nodeps @gnuplot_rpms`); -print_and_log("Installing LON-CAPA Perl packages.\n"); -writelog (`rpm -ivh --force --nodeps @loncapa_perl_rpms`); -print_and_log("Installing Perl packages.\n"); -writelog (`rpm -ivh --force --nodeps @perl_rpms`); -print_and_log("Installing misc packages.\n"); -writelog (`rpm -ivh --force --nodeps @misc_rpms`); -print_and_log("\n"); +## Some of these rpm commands require being obnoxious (--force --nodeps) +## this is not a nice thing to do and we should be careful about it. +## + +&print_and_log("Installing Apache packages.\n"); +&writelog (`rpm -Uvh @apache_rpms`); +&print_and_log("Installing openssh packages.\n"); +&writelog (`rpm -Uvh @openssh_rpms`); +&writelog(`/etc/init.d/sshd start`); +&print_and_log("Installing ImageMagick packages.\n"); +&writelog (`rpm -Uvh @ImageMagick_rpms`); +&print_and_log("Installing mysql packages.\n"); +&writelog (`rpm -Uvh @mysql_rpms`); +&print_and_log("Installing Perl packages.\n"); +&writelog (`rpm -Uvh @perl_rpms`); +&print_and_log("Installing legacy readline package (required for gnuplot)."); +&writelog(`rpm -i --oldpackage @old_readline_rpms`); +&print_and_log("Installing gnuplot packages.\n"); +&writelog (`rpm -ivh --force --nodeps @gnuplot_rpms`); +&print_and_log("Installing LON-CAPA Perl packages.\n"); +&writelog (`rpm -Uvh @loncapa_perl_rpms`); +&print_and_log("Installing misc packages.\n"); +&writelog (`rpm -Uvh @misc_rpms`); +&print_and_log("Installing LON-CAPA systemperl rpm"); +&writelog(`rpm -ivh --force --nodeps $systemperl`); +&print_and_log("\n"); + + +## +## Remove conflicting packages +## +my @php_rpms = ("php-imap-4.1.2-7", + "asp2php-0.76.2-1", + "php-ldap-4.1.2-7", + "php-devel-4.1.2-7", + "php-4.1.2-7", + "php-pgsql-4.1.2-7"); + +&print_and_log("Removing php packages"); +foreach my $php_rpm (@php_rpms) { + my $remove_error = system("rpm -e --nodeps ".$php_rpm); + if ($remove_error) { + &print_and_log("Unable to remove ".$php_rpm.". ". + "Assuming it is not present.\n"); + } else { + &writelog("Successfully removed ".$php_rpm); + } +} ## ## Fix that stupid little sendmail bug @@ -322,14 +362,9 @@ print_and_log("\n"); ## Set up mysql ## print_and_log("Setting mysqld to start on boot up.\n"); - -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc0.d/K90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc1.d/K90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc2.d/S90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc3.d/S90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc4.d/S90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc5.d/S90mysqld"); -make_link_or_die("/etc/rc.d/init.d/mysqld","/etc/rc.d/rc6.d/K90mysqld"); +system("/sbin/chkconfig --add mysqld"); +system("/sbin/chkconfig mysqld on"); +&writelog(`/sbin/chkconfig --list mysqld`); writelog("mysql links created successfully\n"); writelog(`/etc/rc.d/init.d/mysqld start`); @@ -364,7 +399,8 @@ print MYSQL <<"ENDMYSQL"; CREATE DATABASE loncapa; INSERT INTO user (Host, User, Password) VALUES ('localhost','www',password('localhostkey')); -GRANT ALL PRIVILEGES ON *.* TO www\@localhost; +INSERT INTO db VALUES ('localhost','loncapa','www', +'Y','Y','Y','Y','Y','Y','N','Y','Y','Y'); SET PASSWORD FOR root\@localhost=PASSWORD('$rootpass'); DELETE FROM user WHERE host<>'localhost'; FLUSH PRIVILEGES; @@ -377,42 +413,23 @@ close MYSQL; print_and_log("\n"); ## -## Kill the firewall, if it exists +## Remove the firewall. ## -# -# A better method would be to modify the firewall rules to make -# the lond port open. Someday. -# -if (-e "/etc/init.d/iptables" || -e "/etc/init.d/ipchans") { - print_and_log("Stopping and removing your firewall\n"); - my @tokill = ("/etc/rc.d/rc2.d/S08ipchains", - "/etc/rc.d/rc2.d/S08iptables", - "/etc/rc.d/rc3.d/S08ipchains", - "/etc/rc.d/rc3.d/S08iptables", - "/etc/rc.d/rc4.d/S08ipchains", - "/etc/rc.d/rc4.d/S08iptables", - "/etc/rc.d/rc5.d/S08ipchains", - "/etc/rc.d/rc5.d/S08iptables" ); - foreach (@tokill) { - unlink $_ if (-e $_ ); - } - writelog(`/etc/init.d/ipchains stop`); - writelog(`/etc/init.d/ipchains stop`); - print_and_log("\n"); -} +system("/sbin/chkconfig ipchains off"); +system("/etc/init.d/ipchains stop"); +system("/sbin/chkconfig iptables off"); +system("/etc/init.d/iptables stop"); + +# Someday we will add these to /etc/sysconfig/ipchains. +# "-A input -s 0/0 -d 0/0 8080 -p tcp -y -j ACCEPT", +# "-A input -s 0/0 -d 0/0 5663 -p tcp -y -j ACCEPT" +# Someday we will deal with iptables, too. Soon. ## ## Set up httpd ## print_and_log("Setting httpd to start on boot up.\n"); - -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc0.d/K15httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc1.d/K15httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc2.d/K15httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc3.d/S85httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc4.d/K15httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc5.d/K15httpd"); -make_link_or_die("/etc/rc.d/init.d/httpd","/etc/rc.d/rc6.d/K15httpd"); +system("/sbin/chkconfig httpd on"); ## ## Copy our (probably lousy) httpd.conf to its rightful place @@ -425,12 +442,14 @@ print_and_log("\n"); ## ## Retrieve loncapa.tar.gz ## -if (! -e "$instdir/loncapa-current.tar.gz") { - print_and_log("Retrieving LON-CAPA source files from install.loncapa.org\n"); - system("wget http://install.loncapa.org/versions/loncapa-current.tar.gz 2>/dev/null 1>/dev/null"); - if (! -e "./loncapa-current.tar.gz") { +my $lctarball = 'loncapa-current.tar.gz'; +if (! -e "$instdir/$lctarball") { + print_and_log("Retrieving LON-CAPA source files from install.loncapa.org\n") +; + system("wget http://install.loncapa.org/versions/$lctarball 2>/dev/null 1>/dev/null"); + if (! -e "./$lctarball") { die("Unable to retrieve LON-CAPA source files from\n". - "http://install.loncapa.org/versions/loncapa-current.tar.gz\n"); + "http://install.loncapa.org/versions/$lctarball\n"); } print_and_log("\n"); } else {