Koha/installer.pl
tipaul 81555c597a long WAS the road to 1.3.0...
coming VERY SOON NOW...
modifying installer and buildrelease to update the DB
2002-09-24 12:56:02 +00:00

1028 lines
26 KiB
Perl
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/perl -w # please develop with -w
#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 strict; # please develop with the strict pragma
if ($<) {
print "\n\nYou must run koha.upgrade 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;
if ($kohaversion =~ /RC/) {
print qq|
=====================
= RELEASE CANDIDATE =
=====================
WARNING WARNING WARNING WARNING WARNING
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.
|;
print "Are you sure you want to install Koha $kohaversion? (Y/[N]): ";
my $answer = <STDIN>;
chomp $answer;
if ($answer eq "Y" || $answer eq "y") {
print "Great! continuing setup... \n";
} else {
print qq|
Watch for announcements of Koha releases on the Koha mailing list or the Koha
web site (http://www.koha.org/).
|;
exit;
};
}
if (-e "/etc/koha.conf") {
my $installedversion=`grep kohaversion= /etc/koha.conf`;
chomp $installedversion;
$installedversion=~m/kohaversion=(.*)/;
$installedversion=$1;
if ($installedversion) {
$installedversion="You currently have Koha $installedversion on your system.\n";
} else {
$installedversion="I am not able to determine what version of Koha is installed now.\n";
}
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
|;
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 $answer = <STDIN>;
chomp $answer;
if ($answer eq "Y" || $answer eq "y") {
print "Great! continuing setup... \n";
} else {
print qq|
This installer currently does not support a completely automated
setup.
Please be sure to read the documentation, or visit the Koha website
at http://www.koha.org for more information.
|;
exit;
};
print "\n";
#
# Test for Perl and Modules
#
print qq|
PERL & MODULES
==============
|;
print "\nChecking perl modules ...\n";
unless (eval "require 5.004") {
die "Sorry, you need at least Perl 5.004\n";
}
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 Set::Scalar}) { push @missing,"Set::Scalar" };
unless (eval {require Net::Z3950}) {
print qq|
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:
perl -MCPAN -e 'install Net::Z3950'
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.
|;
print "Enter directory [$kohadir]: ";
chomp($input = <STDIN>);
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|
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.
|;
#Get the path to the koha.conf directory
#print "Enter the path to your configuration directory [$etcdir]: ";
#chomp($input = <STDIN>);
#
#if ($input) {
# $etcdir = $input;
#}
#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>);
if ($input) {
$dbname = $input;
}
#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';
}
}
#
#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 0770, "$kohalogdir";
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, oct(770));
if ($result==0) {
my @dirs = split(m#/#, $kohadir);
my $checkdir='';
foreach (@dirs) {
$checkdir.="$_/";
unless (-e "$checkdir") {
mkdir($checkdir, 0775);
}
}
}
chown (oct(0), (getgrnam($httpduser))[2], "$kohadir");
chmod (oct(770), "$kohadir");
}
unless ( -d "$kohadir/htdocs" ) {
print "Creating $kohadir/htdocs...\n";
mkdir ("$kohadir/htdocs", oct(750));
}
unless ( -d "$kohadir/cgi-bin" ) {
print "Creating $kohadir/cgi-bin...\n";
mkdir ("$kohadir/cgi-bin", oct(750));
}
unless ( -d "$kohadir/modules" ) {
print "Creating $kohadir/modules...\n";
mkdir ("$kohadir/modules", oct(750));
}
unless ( -d "$kohadir/scripts" ) {
print "Creating $kohadir/scripts...\n";
mkdir ("$kohadir/scripts", oct(750));
}
unless ( -d $opacdir ) {
print "Creating $opacdir...\n";
my $result=mkdir ($opacdir, oct(770));
if ($result==0) {
my @dirs = split(m#/#, $opacdir);
my $checkdir='';
foreach (@dirs) {
$checkdir.="$_/";
unless (-e "$checkdir") {
mkdir($checkdir, 0775);
}
}
}
chown (oct(0), (getgrnam($httpduser))[2], "$opacdir");
chmod (oct(770), "$opacdir");
}
unless ( -d "$opacdir/htdocs" ) {
print "Creating $opacdir/htdocs...\n";
mkdir ("$opacdir/htdocs", oct(750));
}
unless ( -d "$opacdir/cgi-bin" ) {
print "Creating $opacdir/cgi-bin...\n";
mkdir ("$opacdir/cgi-bin", oct(750));
}
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
includes=$kohadir/htdocs/includes
intranetdir=$kohadir
opacdir=$opacdir
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.\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)
===============================
|;
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;
};