#!/usr/bin/perl -w # please develop with -w
-# $Id$
-
#use diagnostics;
-# Copyright 2000-2002 Katipo Communications
-#
-# This file is part of Koha.
-#
-# Koha is free software; you can redistribute it and/or modify it under the
-# terms of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-#
-# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
-# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
-# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-
+use Install;
use strict; # please develop with the strict pragma
-if ($<) {
- print "\n\nYou must run $0 as root.\n\n";
- exit;
-}
-unless ($< == 0) {
- print "You must be root to run this script.\n";
- exit 1;
-}
-
-my $kohaversion=`cat koha.version`;
-chomp $kohaversion;
+use vars qw( $input );
+Install::setlanguage 'en';
-if ($kohaversion =~ /RC/) {
- print qq|
-=====================
-= RELEASE CANDIDATE =
-=====================
-
-WARNING WARNING WARNING WARNING WARNING
+my $domainname = `hostname`; # Note: must not have any arguments (portability)
+if ($domainname =~ /^[^\s\.]+\.([-a-z0-9\.]+)$/) {
+ $domainname = $1;
+} else {
+ undef $domainname;
+ if (open(INPUT, "</etc/resolv.conf")) {
+ while (<INPUT>) {
+ $domainname = $1 if /^domain\s+([-a-z0-9\.]+)\s*$/i;
+ last if defined $domainname;
+ }
+ close INPUT;
+ }
+ elsif (open(INPUT, "</etc/hostname")) {
+ $domainname = <INPUT>;
+ }
+}
+Install::setdomainname $domainname;
-You are about to install Koha version $kohaversion. This version of Koha is a
-release candidate. It is not intended to be installed on production systems.
-It is being released so that users can test it before we release a final
-version.
+###############################################
+# SET THE etcdir ENVIRONMENT VAR INSTEAD #
+###############################################
+my $etcdir = $ENV{etcdir}||'/etc';
+system("mkdir -p $etcdir");
-|;
- print "Are you sure you want to install Koha $kohaversion? (Y/[N]): ";
+Install::setetcdir $etcdir;
- my $answer = <STDIN>;
- chomp $answer;
+unless (-d 'intranet-html') {
+ print <<EOP;
+You seem to be installing from CVS. Please run the "buildrelease" script
+and install from the resulting release tarball.
+EOP
+ exit 1;
+}
- if ($answer eq "Y" || $answer eq "y") {
- print "Great! continuing setup... \n";
- } else {
- print qq|
+my $kohaversion=`cat koha.version`;
+chomp $kohaversion;
+Install::setkohaversion $kohaversion;
-Watch for announcements of Koha releases on the Koha mailing list or the Koha
-web site (http://www.koha.org/).
-|;
- exit;
- };
+if ($kohaversion =~ /RC/) {
+ releasecandidatewarning();
}
-if (-e "/etc/koha.conf") {
- my $installedversion=`grep kohaversion= /etc/koha.conf`;
+checkabortedinstall();
+
+if (-e "$etcdir/koha.conf") {
+ my $installedversion=`grep kohaversion= "$etcdir/koha.conf"`;
chomp $installedversion;
$installedversion=~m/kohaversion=(.*)/;
$installedversion=$1;
+ my $installedversionmsg;
if ($installedversion) {
- $installedversion="You currently have Koha $installedversion on your system.\n";
+ $installedversionmsg=getmessage('KohaVersionInstalled', [$installedversion]);
} else {
- $installedversion="I am not able to determine what version of Koha is installed now.\n";
+ $installedversionmsg=getmessage('KohaUnknownVersionInstalled');
}
- print qq|
- ==========================
- = Koha already installed =
- ==========================
-
-It looks like Koha is already installed on your system (/etc/koha.conf exists
-already). If you would like to upgrade your system to $kohaversion, please use
-the koha.upgrade script in this directory.
-
-$installedversion
-
-|;
+ my $message=getmessage('KohaAlreadyInstalled', [$etcdir, $kohaversion, $installedversionmsg]);
+ showmessage($message, 'none');
exit;
}
-system('clear');
-print qq|
-**********************************
-* Welcome to the Koha Installer *
-**********************************
-Welcome to the Koha install script! This script will prompt you for some
-basic information about your desired setup, then install Koha according to
-your specifications. To accept the default value for any question, simply hit
-Enter at the prompt.
-
-Please be sure to read the documentation, or visit the Koha website at
-http://www.koha.org for more information.
-
-Are you ready to begin the installation? (Y/[N]):
-|;
+my $continuingmsg=getmessage('continuing');
-my $answer = <STDIN>;
-chomp $answer;
+my $message=getmessage('WelcomeToKohaInstaller');
+my $answer=showmessage($message, 'yn');
if ($answer eq "Y" || $answer eq "y") {
- print "Great! continuing setup... \n";
+ print $continuingmsg;
} else {
print qq|
This installer currently does not support a completely automated
exit;
};
-print "\n";
+# Check for missing Perl Modules
+checkperlmodules();
-#
-# Test for Perl and Modules
-#
-print qq|
+# Ask for installation directories
+getapacheinfo();
-PERL & MODULES
-==============
+getinstallationdirectories();
-|;
+getdatabaseinfo();
-print "\nChecking perl modules ...\n";
- unless (eval "require 5.004") {
- die "Sorry, you need at least Perl 5.004\n";
-}
+getapachevhostinfo();
-my @missing = ();
-unless (eval {require DBI}) { push @missing,"DBI" };
-unless (eval {require Date::Manip}) { push @missing,"Date::Manip" };
-unless (eval {require DBD::mysql}) { push @missing,"DBD::mysql" };
-unless (eval {require Net::Z3950}) {
- print qq|
+updateapacheconf();
-The Net::Z3950 module is missing. This module is necessary if you want to use
-Koha's Z39.50 client to download bibliographic records from other libraries.
-To install this module, you will need the yaz client installed from
-http://www.indexdata.dk/yaz/ and then you can install the perl module with the
-command:
+basicauthentication();
-perl -MCPAN -e 'install Net::Z3950'
+installfiles();
-Press the <ENTER> key to continue:
-|;
- <STDIN>;
-}
-
-#
-# Print out a list of any missing modules
-#
-if (@missing > 0) {
- print "\n\n";
- print "You are missing some Perl modules which are required by Koha.\n";
- print "Once these modules have been installed, rerun this installer.\n";
- print "They can be installed by running (as root) the following:\n";
- foreach my $module (@missing) {
- print " perl -MCPAN -e 'install \"$module\"'\n";
- exit(1);
- }} else{
- print "All modules appear to be installed, continuing...\n";
-};
-
-
-print "\n";
-my $input;
-my $domainname = `hostname -d`;
-chomp $domainname;
-my $opacdir = '/usr/local/koha/opac';
-my $kohadir = '/usr/local/koha/intranet';
-my $getdirinfo=1;
-while ($getdirinfo) {
- # Loop until opac directory and koha directory are different
- print qq|
-
-OPAC DIRECTORY
-==============
-Please supply the directory you want Koha to store its OPAC files in. Leave off
-the trailing slash. This directory will be auto-created for you if it doesn't
-exist.
-
-Usually $opacdir
-|;
-
- print "Enter directory [$opacdir]: ";
- chomp($input = <STDIN>);
-
- if ($input) {
- $opacdir = $input;
- }
-
-
- print qq|
-
-INTRANET/LIBRARIANS DIRECTORY
-=============================
-Please supply the directory you want Koha to store its Intranet/Librarians files
-in. Leave off the trailing slash. This directory will be auto-created for you if
-it doesn't exist.
-
-|;
+backupmycnf();
- print "Enter directory [$kohadir]: ";
- chomp($input = <STDIN>);
+databasesetup();
- if ($input) {
- $kohadir = $input;
- }
- if ($kohadir eq $opacdir) {
- print qq|
-
-You must specify different directories for the OPAC and INTRANET files!
-
-|;
- } else {
- $getdirinfo=0;
- }
-}
-
-#
-#KOHA conf
-#
-my $etcdir = '/etc';
-my $dbname = 'Koha';
-my $hostname = 'localhost';
-my $user = 'kohaadmin';
-my $pass = '';
-
-print qq|
+updatedatabase();
-KOHA.CONF
-=========
-Koha uses a small configuration file that is placed in your /etc/ files
-directory. The configuration file, will be created in this directory.
+populatedatabase();
-|;
+restoremycnf();
-#Get the path to the koha.conf directory
-#print "Enter the path to your configuration directory [$etcdir]: ";
-#chomp($input = <STDIN>);
-#
-#if ($input) {
-# $etcdir = $input;
-#}
+finalizeconfigfile();
+restartapache();
-#Get the database name
-print qq|
-Please provide the name of the mysql database for your koha installation.
-This is normally "$dbname".
-|;
-print "Enter database name [$dbname]: ";
-chomp($input = <STDIN>);
+showmessage(getmessage('AuthenticationWarning', [$etcdir]), 'PressEnter');
-if ($input) {
- $dbname = $input;
-}
+showmessage(getmessage('Completed', [ Install::getservername(), Install::getintranetport(), Install::getservername(), Install::getopacport()]), 'PressEnter');
-#Get the hostname for the database
-print qq|
-Please provide the hostname for mysql. Unless the database is located on another
-machine this will be "localhost".
-|;
-print "Enter hostname [$hostname]: ";
-chomp($input = <STDIN>);
-if ($input) {
- $hostname = $input;
-}
-
-#Get the username for the database
-print qq|
-
-Please provide the name of the user, who will have full administrative rights
-to the $dbname database, when authenticating from $hostname.
-
-If no user is entered it will default to $user.
-|;
-
-print "Enter username [$user]:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $user = $input;
-}
-
-#Get the password for the database user
-print qq|
-
-Please provide a good password for the user $user.
-|;
-
-print "Enter password:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $pass = $input;
-}
-
-print "\n";
-
-
-
-print "Successfully created the Koha configuration file.\n";
-
-my $httpduser;
-my $realhttpdconf;
-
-foreach my $httpdconf (qw(/usr/local/apache/conf/httpd.conf
- /usr/local/etc/apache/httpd.conf
- /usr/local/etc/apache/apache.conf
- /var/www/conf/httpd.conf
- /etc/apache/conf/httpd.conf
- /etc/apache/conf/apache.conf
- /etc/apache-ssl/conf/apache.conf
- /etc/httpd/conf/httpd.conf
- /etc/httpd/httpd.conf)) {
- if ( -f $httpdconf ) {
- $realhttpdconf=$httpdconf;
- open (HTTPDCONF, $httpdconf) or warn "Insufficient privileges to open $httpdconf for reading.\n";
- while (<HTTPDCONF>) {
- if (/^\s*User\s+"?([-\w]+)"?\s*$/) {
- $httpduser = $1;
- }
- }
- close(HTTPDCONF);
- }
-}
-unless ($realhttpdconf) {
- print qq|
-
-I was not able to find your apache configuration file. It is usually
-called httpd.conf or apache.conf.
-|;
- print "Where is your Apache configuratin file? ";
- chomp($input = <STDIN>);
-
- if ($input) {
- $realhttpdconf = $input;
- } else {
- $realhttpdconf='';
- }
- if ( -f $realhttpdconf ) {
- open (HTTPDCONF, $realhttpdconf) or warn "Insufficient privileges to open $realhttpdconf for reading.\n";
- while (<HTTPDCONF>) {
- if (/^\s*User\s+"?([-\w]+)"?\s*$/) {
- $httpduser = $1;
- }
- }
- close(HTTPDCONF);
- }
-}
-
-unless ($httpduser) {
- print qq|
-
-I was not able to determine the user that Apache is running as. This
-information is necessary in order to set the access privileges correctly on
-/etc/koha.conf. This user should be set in one of the Apache configuration
-files using the "User" directive.
-|;
- print "What is your Apache user? ";
- chomp($input = <STDIN>);
-
- if ($input) {
- $httpduser = $input;
- } else {
- $httpduser='Undetermined';
+if (-f "kohareporter") {
+ my $reply=showmessage('Would you like to complete a survey about your library?', 'yn', 'y');
+ if ($reply=~/y/i) {
+ system("perl kohareporter");
}
}
-
-
-#
-#SETUP opac
-#
-my $svr_admin = "webmaster\@$domainname";
-my $servername=`hostname -f`;
-chomp $servername;
-my $opacport=80;
-my $kohaport=8080;
-
-print qq|
-
-OPAC and KOHA/LIBRARIAN CONFIGURATION
-=====================================
-Koha needs to setup your Apache configuration file for the
-OPAC and LIBRARIAN virtual hosts. By default this installer
-will do this by using one ip address and two different ports
-for the virtual hosts. There are other ways to set this up,
-and the installer will leave comments in httpd.conf detailing
-what these other options are.
-
-Please enter the e-mail address for your webserver admin.
-Usually $svr_admin
-|;
-
-print "Enter e-mail address [$svr_admin]:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $svr_admin = $input;
-}
-
-
-print qq|
-
-
-Please enter the domain name or ip address of your computer.
-|;
-print "Enter server name/ip address [$servername]:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $servername = $input;
-}
-
-print qq|
-
-Please enter the port for your OPAC interface.
-|;
-print "Enter OPAC port [$opacport]:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $opacport = $input;
-}
-
-print qq|
-
-Please enter the port for your Intranet/Librarian interface.
-|;
-print "Enter intranet port [$kohaport]:";
-chomp($input = <STDIN>);
-
-if ($input) {
- $kohaport = $input;
-}
-
-
-#
-# Update Apache Conf File.
-#
-#
-
-my $logfiledir=`grep ^ErrorLog $realhttpdconf`;
-chomp $logfiledir;
-
-if ($logfiledir) {
- $logfiledir=~m#ErrorLog (.*)/[^/]*$#;
- $logfiledir=$1;
-}
-
-unless ($logfiledir) {
- $logfiledir='logs';
-}
-print qq|
-
-UPDATING APACHE.CONF
-====================
-
-|;
-
-
-print "Checking for modules that need to be loaded...\n";
-my $httpdconf='';
-my $envmodule=0;
-my $includesmodule=0;
-open HC, $realhttpdconf;
-while (<HC>) {
- if (/^\s*#\s*LoadModule env_module /) {
- s/^\s*#\s*//;
- print " Loading env_module in httpd.conf\n";
- $envmodule=1;
- }
- if (/^\s*#\s*LoadModule includes_module /) {
- s/^\s*#\s*//;
- print " Loading includes_module in httpd.conf\n";
- }
- if (/\s*LoadModule includes_module / ) {
- $includesmodule=1;
- }
- $httpdconf.=$_;
-}
-
-my $apachebackupmade=0;
-if ($envmodule || $includesmodule) {
- system("mv -f $realhttpdconf $realhttpdconf\.prekoha");
- $apachebackupmade=1;
- open HC, ">$realhttpdconf";
- print HC $httpdconf;
- close HC;
-}
-
-
-if (`grep 'VirtualHost $servername' $realhttpdconf`) {
- print qq|
-$realhttpdconf appears to already have an entry for Koha
-Virtual Hosts. You may need to edit $realhttpdconf
-if anything has changed since it was last set up. This
-script will not attempt to modify an existing Koha apache
-configuration.
-
-|;
- print "Press <ENTER> to continue...";
- <STDIN>;
- print "\n";
-} else {
- unless ($apachebackupmade) {
- system("cp -f $realhttpdconf $realhttpdconf\.prekoha");
- }
- my $includesdirectives='';
- if ($includesmodule) {
- $includesdirectives.="Options +Includes\n";
- $includesdirectives.=" AddHandler server-parsed .html\n";
- }
- open(SITE,">>$realhttpdconf") or warn "Insufficient priveleges to open $realhttpdconf for writing.\n";
- print SITE <<EOP
-
-
-# Ports to listen to for Koha
-Listen $opacport
-Listen $kohaport
-
-# NameVirtualHost is used by one of the optional configurations detailed below
-
-#NameVirtualHost 11.22.33.44
-
-# KOHA's OPAC Configuration
-<VirtualHost $servername\:$opacport>
- ServerAdmin $svr_admin
- DocumentRoot $opacdir/htdocs
- ServerName $servername
- ScriptAlias /cgi-bin/koha/ $opacdir/cgi-bin/
- ErrorLog $logfiledir/opac-error_log
- TransferLog $logfiledir/opac-access_log
- SetEnv PERL5LIB "$kohadir/modules"
- $includesdirectives
-</VirtualHost>
-
-# KOHA's INTRANET Configuration
-<VirtualHost $servername\:$kohaport>
- ServerAdmin $svr_admin
- DocumentRoot $kohadir/htdocs
- ServerName $servername
- ScriptAlias /cgi-bin/koha/ "$kohadir/cgi-bin/"
- ErrorLog $logfiledir/koha-error_log
- TransferLog $logfiledir/koha-access_log
- SetEnv PERL5LIB "$kohadir/modules"
- $includesdirectives
-</VirtualHost>
-
-# If you want to use name based Virtual Hosting:
-# 1. remove the two Listen lines
-# 2. replace $servername\:$opacport wih your.opac.domain.name
-# 3. replace ServerName $servername wih ServerName your.opac.domain.name
-# 4. replace $servername\:$kohaport wih your intranet domain name
-# 5. replace ServerName $servername wih ServerName your.intranet.domain.name
-#
-# If you want to use NameVirtualHost'ing (using two names on one ip address):
-# 1. Follow steps 1-5 above
-# 2. Uncomment the NameVirtualHost line and set the correct ip address
-
-EOP
-;
-
-
- print qq|
-
-Intranet Authentication
-=======================
-
-I can set it up so that the Intranet/Librarian site is password protected.
-|;
-print "Would you like to do this? ([Y]/N): ";
-chomp($input = <STDIN>);
-
-my $apacheauthusername='librarian';
-my $apacheauthpassword='';
-unless ($input=~/^n/i) {
- print "\nEnter a userid to login with [$apacheauthusername]: ";
- chomp ($input = <STDIN>);
- if ($input) {
- $apacheauthusername=$input;
- $apacheauthusername=~s/[^a-zA-Z0-9]//g;
- }
- while (! $apacheauthpassword) {
- print "\nEnter a password for the $apacheauthusername user: ";
- chomp ($input = <STDIN>);
- if ($input) {
- $apacheauthpassword=$input;
- }
- if (!$apacheauthpassword) {
- print "\nPlease enter a password.\n";
- }
- }
- open AUTH, ">/etc/kohaintranet.pass";
- my $chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
- my $salt=substr($chars, int(rand(length($chars))),1);
- $salt.=substr($chars, int(rand(length($chars))),1);
- print AUTH $apacheauthusername.":".crypt($apacheauthpassword, $salt)."\n";
- close AUTH;
- print SITE <<EOP
-
-<Directory $kohadir>
- AuthUserFile /etc/kohaintranet.pass
- AuthType Basic
- AuthName "Koha Intranet (for librarians only)"
- Require valid-user
-</Directory>
-EOP
-}
-
- close(SITE);
-
- print "Successfully updated Apache Configuration file.\n";
-}
-
-print qq|
-
-SETTING UP Z39.50 DAEMON
-========================
-|;
-
-my $kohalogdir='/var/log/koha';
-print "Directory for logging by Z39.50 daemon [$kohalogdir]: ";
-chomp($input = <STDIN>);
-if ($input) {
- $kohalogdir=$input;
-}
-
-unless (-e "$kohalogdir") {
- my $result = mkdir "$kohalogdir", 0770;
- if ($result==0) {
- my @dirs = split(m#/#, $kohalogdir);
- my $checkdir='';
- foreach (@dirs) {
- $checkdir.="$_/";
- unless (-e "$checkdir") {
- mkdir($checkdir, 0775);
- }
- }
- }
-}
-
-#
-# Setup the modules directory
-#
-print qq|
-
-CREATING REQUIRED DIRECTORIES
-=============================
-
-|;
-
-
-unless ( -d $kohadir ) {
- print "Creating $kohadir...\n";
- my $result=mkdir ($kohadir, 0770);
- if ($result==0) {
- my @dirs = split(m#/#, $kohadir);
- my $checkdir='';
- foreach (@dirs) {
- $checkdir.="$_/";
- unless (-e "$checkdir") {
- mkdir($checkdir, 0775);
- }
- }
- }
- chown (0, (getgrnam($httpduser))[2], "$kohadir");
- chmod (0770, "$kohadir");
-}
-unless ( -d "$kohadir/htdocs" ) {
- print "Creating $kohadir/htdocs...\n";
- mkdir ("$kohadir/htdocs", 0750);
-}
-unless ( -d "$kohadir/cgi-bin" ) {
- print "Creating $kohadir/cgi-bin...\n";
- mkdir ("$kohadir/cgi-bin", 0750);
-}
-unless ( -d "$kohadir/modules" ) {
- print "Creating $kohadir/modules...\n";
- mkdir ("$kohadir/modules", 0750);
-}
-unless ( -d "$kohadir/scripts" ) {
- print "Creating $kohadir/scripts...\n";
- mkdir ("$kohadir/scripts", 0750);
-}
-unless ( -d $opacdir ) {
- print "Creating $opacdir...\n";
- my $result=mkdir ($opacdir, 0770);
- if ($result==0) {
- my @dirs = split(m#/#, $opacdir);
- my $checkdir='';
- foreach (@dirs) {
- $checkdir.="$_/";
- unless (-e "$checkdir") {
- mkdir($checkdir, 0775);
- }
- }
- }
- chown (0, (getgrnam($httpduser))[2], "$opacdir");
- chmod (0770, "$opacdir");
-}
-unless ( -d "$opacdir/htdocs" ) {
- print "Creating $opacdir/htdocs...\n";
- mkdir ("$opacdir/htdocs", 0750);
-}
-unless ( -d "$opacdir/cgi-bin" ) {
- print "Creating $opacdir/cgi-bin...\n";
- mkdir ("$opacdir/cgi-bin", 0750);
-}
-
-
-
-print "\n\nINSTALLING KOHA...\n";
-print "\n\n==================\n";
-print "Copying internet-html files to $kohadir/htdocs...\n";
-system("cp -R intranet-html/* $kohadir/htdocs/");
-print "Copying intranet-cgi files to $kohadir/cgi-bin...\n";
-system("cp -R intranet-cgi/* $kohadir/cgi-bin/");
-print "Copying script files to $kohadir/scripts...\n";
-system("cp -R scripts/* $kohadir/scripts/");
-print "Copying module files to $kohadir/modules...\n";
-system("cp -R modules/* $kohadir/modules/");
-print "Copying opac-html files to $opacdir/htdocs...\n";
-system("cp -R opac-html/* $opacdir/htdocs/");
-print "Copying opac-cgi files to $opacdir/cgi-bin...\n";
-system("cp -R opac-cgi/* $opacdir/cgi-bin/");
-
-system("chown -R root.$httpduser $opacdir");
-system("chown -R root.$httpduser $kohadir");
-
-
-
-#Create the configuration file
-open(SITES,">$etcdir/koha.conf") or warn "Couldn't create file
-at $etcdir. Must have write capability.\n";
-print SITES <<EOP
-database=$dbname
-hostname=$hostname
-user=$user
-pass=$pass
-intrahtdocs=$kohadir/cgi-bin/koha-tmpl/intranet-tmpl
-opachtdocs=$kohadir/cgi-bin/koha-tmpl/opac-tmpl
-kohalogdir=$kohalogdir
-kohaversion=$kohaversion
-httpduser=$httpduser
-EOP
-;
-close(SITES);
-
-#
-# Set ownership of the koha.conf file for security
-#
-chown((getpwnam($httpduser)) [2,3], "$etcdir/koha.conf") or warn "can't chown koha.conf: $!";
-chmod 0440, "$etcdir/koha.conf";
-
-
-print qq|
-
-MYSQL CONFIGURATION
-===================
-|;
-my $mysql;
-my $mysqldir;
-my $mysqluser = 'root';
-my $mysqlpass = '';
-
-foreach my $mysql (qw(/usr/local/mysql
- /opt/mysql
- /usr
- )) {
- if ( -d $mysql ) {
- $mysqldir=$mysql;
- }
-}
-if (!$mysqldir){
- $mysqldir='/usr';
-}
-print qq|
-To allow us to create the koha database please supply the
-mysql\'s root users password
-|;
-
-my $needpassword=1;
-while ($needpassword) {
- print "Enter mysql\'s root users password: ";
- chomp($input = <STDIN>);
- $mysqlpass = $input;
- my $result=system("$mysqldir/bin/mysqladmin -u$mysqluser -p$mysqlpass proc > /dev/null 2>&1");
- if ($result) {
- print "\n\nInvalid password for the MySql root user.\n\n";
- } else {
- $needpassword=0;
- }
-}
-
-
-print qq|
-
-CREATING DATABASE
-=================
-|;
-my $result=system("$mysqldir/bin/mysqladmin -u$mysqluser -p$mysqlpass create $dbname");
-if ($result) {
- print "\nCouldn't connect to the MySQL server for the reason given above.\n";
- print "This is a serious problem, the database will not get installed.\a\n";
- print "Press <ENTER> to continue...";
- <STDIN>;
- print "\n";
-} else {
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname < koha.mysql");
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass mysql -e \"insert into user (Host,User,Password) values ('$hostname','$user',password('$pass'))\"\;");
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass mysql -e \"insert into db (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv, index_priv, alter_priv) values ('%','$dbname','$user','Y','Y','Y','Y','Y','Y','Y','Y')\"");
- system("$mysqldir/bin/mysqladmin -u$mysqluser -p$mysqlpass reload");
-
- system ("perl -I $kohadir/modules scripts/updater/updatedatabase");
-
-
- print qq|
-
-SAMPLE DATA
-===========
-If you are installing Koha for evaluation purposes, I have a batch of sample
-data that you can install now.
-
-If you are installing Koha with the intention of populating it with your own
-data, you probably don't want this sample data installed.
-|;#'
- print "\nWould you like to install the sample data? Y/[N]: ";
- chomp($input = <STDIN>);
- if ($input =~/^y/i) {
- system("gunzip sampledata-1.2.gz");
- system("cat sampledata-1.2 | $mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname");
- system("gzip -9 sampledata-1.2");
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname -e \"insert into branches (branchcode,branchname,issuing) values ('MAIN', 'Main Library', 1)\"");
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname -e \"insert into printers (printername,printqueue,printtype) values ('Circulation Desk Printer', 'lp', 'hp')\"");
- print qq|
-
-Sample data has been installed. For some suggestions on testing Koha, please
-read the file doc/HOWTO-Testing. If you find any bugs, please submit them at
-http://bugs.koha.org/. If you need help with testing Koha, you can post a
-question through the koha-devel mailing list, or you can check for a developer
-online at +irc.katipo.co.nz:6667 channel #koha.
-
-You can find instructions for subscribing to the Koha mailing lists at:
-
- http://www.koha.org
-
-
-Press <ENTER> to continue...
-|;
- <STDIN>;
- } else {
- print "\n\nWould you like to add a branch and printer? [Y]/N: ";
- chomp($input = <STDIN>);
-
-
- unless ($input =~/^n/i) {
- my $branch='Main Library';
- print "Enter a name for the library branch [$branch]: ";
- chomp($input = <STDIN>);
- if ($input) {
- $branch=$input;
- }
- $branch=~s/[^A-Za-z0-9\s]//g;
- my $branchcode=$branch;
- $branchcode=~s/[^A-Za-z0-9]//g;
- $branchcode=uc($branchcode);
- $branchcode=substr($branchcode,0,4);
- print "Enter a four letter code for your branch [$branchcode]: ";
- chomp($input = <STDIN>);
- if ($input) {
- $branchcode=$input;
- }
- $branchcode=~s/[^A-Z]//g;
- $branchcode=uc($branchcode);
- $branchcode=substr($branchcode,0,4);
- print "Adding branch '$branch' with code '$branchcode'.\n";
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname -e \"insert into branches (branchcode,branchname,issuing) values ('$branchcode', '$branch', 1)\"");
- my $printername='Library Printer';
- print "Enter a name for the printer [$printername]: ";
- chomp($input = <STDIN>);
- if ($input) {
- $printername=$input;
- }
- $printername=~s/[^A-Za-z0-9\s]//g;
- my $printerqueue='lp';
- print "Enter the queue for the printer [$printerqueue]: ";
- chomp($input = <STDIN>);
- if ($input) {
- $printerqueue=$input;
- }
- $printerqueue=~s/[^A-Za-z0-9]//g;
- system("$mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname -e \"insert into printers (printername,printqueue,printtype) values ('$printername', '$printerqueue', '')\"");
- }
- }
-
-
-}
-
-print qq|
-
-UPDATING DATABASE (MARC TABLES)
-===============================
-|;
-
-$answer="";
-while ($answer ne "1" && $answer ne "2" && $answer ne "3") {
- print qq|
-You can import marc parameters for :
-1- english marc21 or for
-2- french unimarc.
-3- none.
-Please choose which parameter you want to install. Note if you choose 3, nothing will be added, and it can be a BIG job to manually create those tables
-|;
- $answer = <STDIN>;
- chomp $answer;
-}
-if ($answer eq "1") {
-system("cat misc/marc_datas/marc21_en/structure_def.sql | $mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname");
-}
-if ($answer eq "2") {
-system("cat scripts/misc/marc_datas/unimarc_fr/structure_def.sql | $mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname");
-system("cat scripts/misc/lang-datas/fr/stopwords.sql | $mysqldir/bin/mysql -u$mysqluser -p$mysqlpass $dbname");
-}
-
-#system ("perl -I $kohadir/modules scripts/marc/fill_usmarc.pl");
-system ("perl -I $kohadir/modules scripts/marc/updatedb2marc.pl");
-
-chmod 0770, $kohalogdir;
-chown((getpwnam($httpduser)) [2,3], $kohalogdir) or warn "can't chown $kohalogdir: $!";
-
-# LAUNCH SCRIPT
-print "Modifying Z39.50 daemon launch script...\n";
-my $newfile='';
-open (L, "$kohadir/scripts/z3950daemon/z3950-daemon-launch.sh");
-while (<L>) {
- if (/^RunAsUser=/) {
- $newfile.="RunAsUser=$httpduser\n";
- } elsif (/^KohaZ3950Dir=/) {
- $newfile.="KohaZ3950Dir=$kohadir/scripts/z3950daemon\n";
- } else {
- $newfile.=$_;
- }
-}
-close L;
-system("mv $kohadir/scripts/z3950daemon/z3950-daemon-launch.sh $kohadir/scripts/z3950daemon/z3950-daemon-launch.sh.orig");
-open L, ">$kohadir/scripts/z3950daemon/z3950-daemon-launch.sh";
-print L $newfile;
-close L;
-
-
-# SHELL SCRIPT
-print "Modifying Z39.50 daemon wrapper script...\n";
-$newfile='';
-open (S, "$kohadir/scripts/z3950daemon/z3950-daemon-shell.sh");
-while (<S>) {
- if (/^KohaModuleDir=/) {
- $newfile.="KohaModuleDir=$kohadir/modules\n";
- } elsif (/^KohaZ3950Dir=/) {
- $newfile.="KohaZ3950Dir=$kohadir/scripts/z3950daemon\n";
- } elsif (/^LogDir=/) {
- $newfile.="LogDir=$kohalogdir\n";
- } else {
- $newfile.=$_;
- }
-}
-close S;
-
-system("mv $kohadir/scripts/z3950daemon/z3950-daemon-shell.sh $kohadir/scripts/z3950daemon/z3950-daemon-shell.sh.orig");
-open S, ">$kohadir/scripts/z3950daemon/z3950-daemon-shell.sh";
-print S $newfile;
-close S;
-chmod 0750, "$kohadir/scripts/z3950daemon/z3950-daemon-launch.sh";
-chmod 0750, "$kohadir/scripts/z3950daemon/z3950-daemon-shell.sh";
-chmod 0750, "$kohadir/scripts/z3950daemon/processz3950queue";
-chown(0, (getpwnam($httpduser)) [3], "$kohadir/scripts/z3950daemon/z3950-daemon-shell.sh") or warn "can't chown $kohadir/scripts/z3950daemon/z3950-daemon-shell.sh: $!";
-chown(0, (getpwnam($httpduser)) [3], "$kohadir/scripts/z3950daemon/processz3950queue") or warn "can't chown $kohadir/scripts/z3950daemon/processz3950queue: $!";
-
-
-#RESTART APACHE
-print "\n\n";
-print qq|
-
-COMPLETED
-=========
-Congratulations ... your Koha installation is almost complete!
-The final step is to restart your webserver.
-
-You will be able to connect to your Librarian interface at:
-
- http://$servername\:$kohaport/
-
-and the OPAC interface at :
-
- http://$servername\:$opacport/
-
-
-Be sure to read the INSTALL, and Hints files.
-
-For more information visit http://www.koha.org
-
-Would you like to restart your webserver now? (Y/[N]):
-|;
-
-my $restart = <STDIN>;
-chomp $restart;
-
-if ($restart=~/^y/i) {
- # Need to support other init structures here?
- if (-e "/etc/rc.d/init.d/httpd") {
- system('/etc/rc.d/init.d/httpd restart');
- } elsif (-e "/etc/init.d/apache") {
- system('/etc//init.d/apache restart');
- } elsif (-e "/etc/init.d/apache-ssl") {
- system('/etc/init.d/apache-ssl restart');
- }
- } else {
- print qq|
-Congratulations ... your Koha installation is complete!
-You will need to restart your webserver before using Koha!
-|;
- exit;
-};