Changes from rel-1-2 branch
This commit is contained in:
parent
dd541749fb
commit
00564428aa
2 changed files with 362 additions and 63 deletions
181
installer.pl
181
installer.pl
|
@ -1,6 +1,6 @@
|
|||
#!/usr/bin/perl -w # please develop with -w
|
||||
|
||||
use diagnostics;
|
||||
#use diagnostics;
|
||||
use strict; # please develop with the strict pragma
|
||||
|
||||
if ($<) {
|
||||
|
@ -15,6 +15,39 @@ unless ($< == 0) {
|
|||
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;
|
||||
|
@ -95,21 +128,21 @@ 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>;
|
||||
#}
|
||||
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
|
||||
|
@ -297,6 +330,31 @@ foreach my $httpdconf (qw(/usr/local/apache/conf/httpd.conf
|
|||
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|
|
||||
|
||||
|
@ -316,23 +374,6 @@ files using the "User" directive.
|
|||
}
|
||||
|
||||
|
||||
#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
|
||||
kohaversion=$kohaversion
|
||||
httpduser=$httpduser
|
||||
EOP
|
||||
;
|
||||
close(SITES);
|
||||
|
||||
#
|
||||
# Set ownership of the koha.conf file for security
|
||||
#
|
||||
|
@ -584,6 +625,33 @@ EOP
|
|||
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
|
||||
#
|
||||
|
@ -672,6 +740,27 @@ 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);
|
||||
|
||||
|
||||
print qq|
|
||||
|
||||
MYSQL CONFIGURATION
|
||||
|
@ -815,32 +904,6 @@ Press <ENTER> to continue...
|
|||
}
|
||||
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
chmod 0770, $kohalogdir;
|
||||
chown((getpwnam($httpduser)) [2,3], $kohalogdir) or warn "can't chown $kohalogdir: $!";
|
||||
|
||||
|
|
244
koha.upgrade
244
koha.upgrade
|
@ -1,6 +1,18 @@
|
|||
#!/usr/bin/perl -w
|
||||
|
||||
#use diagnostics;
|
||||
use strict; # please develop with the strict pragma
|
||||
|
||||
|
||||
if ($<) {
|
||||
print "\n\nYou must run koha.upgrade as root.\n\n";
|
||||
exit;
|
||||
}
|
||||
|
||||
my $input;
|
||||
|
||||
my %configfile;
|
||||
|
||||
open (KC, "/etc/koha.conf");
|
||||
while (<KC>) {
|
||||
chomp;
|
||||
|
@ -20,8 +32,9 @@ while (<KC>) {
|
|||
my $intranetdir=$configfile{'intranetdir'};
|
||||
my $opacdir=$configfile{'opacdir'};
|
||||
my $kohaversion=$configfile{'kohaversion'};
|
||||
my $kohalogdir=$configfile{'kohalogdir'};
|
||||
my $database=$configfile{'database'};
|
||||
my $host=$configfile{'host'};
|
||||
my $hostname=$configfile{'hostname'};
|
||||
my $user=$configfile{'user'};
|
||||
my $pass=$configfile{'pass'};
|
||||
|
||||
|
@ -29,6 +42,37 @@ my $pass=$configfile{'pass'};
|
|||
($kohaversion) || ($kohaversion='unknown version');
|
||||
my $newversion=`cat koha.version`;
|
||||
chomp $newversion;
|
||||
if ($newversion =~ /RC/) {
|
||||
print qq|
|
||||
=====================
|
||||
= RELEASE CANDIDATE =
|
||||
=====================
|
||||
|
||||
WARNING WARNING WARNING WARNING WARNING
|
||||
|
||||
You are about to install Koha version $newversion. 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 $newversion? (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;
|
||||
};
|
||||
}
|
||||
|
||||
print qq|
|
||||
|
||||
|
@ -57,6 +101,59 @@ Aborting. Please re-run koha.upgrade when you are ready to upgrade Koha.
|
|||
exit;
|
||||
};
|
||||
|
||||
|
||||
#
|
||||
# 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";
|
||||
};
|
||||
|
||||
|
||||
my $backupdir='/usr/local/koha/backups';
|
||||
print "Please specify a backup directory [$backupdir]: ";
|
||||
|
||||
|
@ -107,9 +204,9 @@ $month++;
|
|||
$year+=1900;
|
||||
my $date= sprintf "%4d-%02d-%02d_%02d:%02d:%02d", $year, $month, $day,$hr,$min,$sec;
|
||||
|
||||
open (MD, "$mysqldir/bin/mysqldump --user=$user --password=$pass --host=$host $database|");
|
||||
open (MD, "$mysqldir/bin/mysqldump --user=$user --password=$pass --host=$hostname $database|");
|
||||
|
||||
open BF, ">$backupdir/Koha.backup_$date";
|
||||
(open BF, ">$backupdir/Koha.backup_$date") || (die "Error opening up backup file $backupdir/Koha.backup_$date: $!\n");
|
||||
|
||||
my $itemcounter=0;
|
||||
my $bibliocounter=0;
|
||||
|
@ -279,7 +376,23 @@ foreach my $httpdconf (qw(/usr/local/apache/conf/httpd.conf
|
|||
close(HTTPDCONF);
|
||||
}
|
||||
}
|
||||
$httpduser ||= 'Undetermined';
|
||||
|
||||
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';
|
||||
}
|
||||
}
|
||||
|
||||
print "\n\nINSTALLING KOHA...\n";
|
||||
print "\n\n==================\n";
|
||||
|
@ -299,6 +412,129 @@ system("cp -R opac-cgi/* $opacdir/cgi-bin/");
|
|||
system("chown -R root.$httpduser $opacdir");
|
||||
system("chown -R root.$httpduser $intranetdir");
|
||||
|
||||
# LAUNCH SCRIPT
|
||||
print "Modifying Z39.50 daemon launch script...\n";
|
||||
my $newfile='';
|
||||
open (L, "$intranetdir/scripts/z3950daemon/z3950-daemon-launch.sh");
|
||||
while (<L>) {
|
||||
if (/^RunAsUser=/) {
|
||||
$newfile.="RunAsUser=$httpduser\n";
|
||||
} elsif (/^KohaZ3950Dir=/) {
|
||||
$newfile.="KohaZ3950Dir=$intranetdir/scripts/z3950daemon\n";
|
||||
} else {
|
||||
$newfile.=$_;
|
||||
}
|
||||
}
|
||||
close L;
|
||||
system("mv $intranetdir/scripts/z3950daemon/z3950-daemon-launch.sh $intranetdir/scripts/z3950daemon/z3950-daemon-launch.sh.orig");
|
||||
open L, ">$intranetdir/scripts/z3950daemon/z3950-daemon-launch.sh";
|
||||
print L $newfile;
|
||||
close L;
|
||||
|
||||
unless ($kohalogdir && -e $kohalogdir) {
|
||||
$kohalogdir='/var/log/koha';
|
||||
print "\n\nDirectory 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# SHELL SCRIPT
|
||||
print "Modifying Z39.50 daemon wrapper script...\n";
|
||||
$newfile='';
|
||||
open (S, "$intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh");
|
||||
while (<S>) {
|
||||
if (/^KohaModuleDir=/) {
|
||||
$newfile.="KohaModuleDir=$intranetdir/modules\n";
|
||||
} elsif (/^KohaZ3950Dir=/) {
|
||||
$newfile.="KohaZ3950Dir=$intranetdir/scripts/z3950daemon\n";
|
||||
} elsif (/^LogDir=/) {
|
||||
$newfile.="LogDir=$kohalogdir\n";
|
||||
} else {
|
||||
$newfile.=$_;
|
||||
}
|
||||
}
|
||||
close S;
|
||||
|
||||
system("mv $intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh $intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh.orig");
|
||||
open S, ">$intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh";
|
||||
print S $newfile;
|
||||
close S;
|
||||
chmod 0750, "$intranetdir/scripts/z3950daemon/z3950-daemon-launch.sh";
|
||||
chmod 0750, "$intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh";
|
||||
chmod 0750, "$intranetdir/scripts/z3950daemon/processz3950queue";
|
||||
chown(0, (getpwnam($httpduser)) [3], "$intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh") or warn "can't chown $intranetdir/scripts/z3950daemon/z3950-daemon-shell.sh: $!";
|
||||
chown(0, (getpwnam($httpduser)) [3], "$intranetdir/scripts/z3950daemon/processz3950queue") or warn "can't chown $intranetdir/scripts/z3950daemon/processz3950queue: $!";
|
||||
|
||||
|
||||
open (KC, "/etc/koha.conf");
|
||||
my $kccontents='';
|
||||
my $kc;
|
||||
while (<KC>) {
|
||||
if (/^\s*includes\s*=/) {
|
||||
$kccontents.="includes=$intranetdir/htdocs/includes\n";
|
||||
$kc->{'includes'}=1;
|
||||
} elsif (/^\s*httpduser\s*=/) {
|
||||
$kccontents.="httpduser=$httpduser\n";
|
||||
$kc->{'httpduser'}=1;
|
||||
} elsif (/^\s*kohaversion\s*=/) {
|
||||
$kccontents.="kohaversion=$newversion\n";
|
||||
$kc->{'kohaversion'}=1;
|
||||
} elsif (/^\s*kohalogdir\s*=/) {
|
||||
$kccontents.="kohalogdir=$kohalogdir\n";
|
||||
$kc->{'kohalogdir'}=1;
|
||||
} elsif (/^\s*intranetdir\s*=/) {
|
||||
$kccontents.="intranetdir=$intranetdir\n";
|
||||
$kc->{'intranetdir'}=1;
|
||||
} elsif (/^\s*opacdir\s*=/) {
|
||||
$kccontents.="opacdir=$opacdir\n";
|
||||
$kc->{'opacdir'}=1;
|
||||
} else {
|
||||
$kccontents.="$_";
|
||||
}
|
||||
}
|
||||
|
||||
unless (defined($kc->{'kohaversion'})) {
|
||||
$kccontents.="kohaversion=$newversion\n";
|
||||
}
|
||||
unless (defined($kc->{'includes'})) {
|
||||
$kccontents.="includes=$intranetdir/htdocs/includes\n";
|
||||
}
|
||||
unless (defined($kc->{'httpduser'})) {
|
||||
$kccontents.="httpduser=$httpduser\n";
|
||||
}
|
||||
unless (defined($kc->{'intranetdir'})) {
|
||||
$kccontents.="intranetdir=$intranetdir\n";
|
||||
}
|
||||
unless (defined($kc->{'opacdir'})) {
|
||||
$kccontents.="opacdir=$opacdir\n";
|
||||
}
|
||||
unless (defined($kc->{'kohalogdir'})) {
|
||||
$kccontents.="kohalogdir=$kohalogdir\n";
|
||||
}
|
||||
|
||||
|
||||
system("mv /etc/koha.conf /etc/koha.conf.backup");
|
||||
|
||||
open (KC, ">/etc/koha.conf") || warn "Couldn't open /etc/koha.conf for writing.";
|
||||
print KC $kccontents;
|
||||
close KC;
|
||||
|
||||
|
||||
print qq|
|
||||
|
||||
|
|
Loading…
Reference in a new issue