Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 197 lines (162 sloc) 6.171 kb
e449c13 mjray Add configuration file helper to the installer
mjray authored
1 # Copyright 2007 MJ Ray
2 #
3 # This file is part of Koha.
4 #
5 # Koha is free software; you can redistribute it and/or modify it under the
6 # terms of the GNU General Public License as published by the Free Software
7 # Foundation; either version 2 of the License, or (at your option) any later
8 # version.
9 #
10 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
11 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
12 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License along with
15 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
16 # Suite 330, Boston, MA 02111-1307 USA
17 #
18 # Current maintainer MJR http://mjr.towers.org.uk/
19 # See http://www.koha.org/wiki/?page=KohaInstaller
98782b8 Correct comments and POD to reflect keyword additions/changes
Chris Nighswonger authored
20 #
21 # 2007/11/12 Added DB_PORT and changed other keywords to reflect multi-dbms support. -fbcit
e449c13 mjray Add configuration file helper to the installer
mjray authored
22
23 use Sys::Hostname;
24 use Socket;
25
26 =head1 NAME
27
28 rewrite-config.PL - helper for the Koha packager and installer
29
30 =head1 SYNOPSIS
31
32 perl rewrite-config.PL configurationfile
33
34 =head1 DESCRIPTION
35
61190e9 mjray New installation instructions and release notes.
mjray authored
36 This helper script replaces keywords in the
e449c13 mjray Add configuration file helper to the installer
mjray authored
37 configuration files with value either supplied through
38 the environment (with export, or by putting them on
61190e9 mjray New installation instructions and release notes.
mjray authored
39 the start of the make command line) or with reasonable
e449c13 mjray Add configuration file helper to the installer
mjray authored
40 guesses worked out by the script.
41
61190e9 mjray New installation instructions and release notes.
mjray authored
42 =head2 KEYWORDS
e449c13 mjray Add configuration file helper to the installer
mjray authored
43
61190e9 mjray New installation instructions and release notes.
mjray authored
44 The following configuration keywords are available:
e449c13 mjray Add configuration file helper to the installer
mjray authored
45
243ec54 mjray Move many files to more FHS-like paths
mjray authored
46 PREFIX,
d1f9665 Now using install_base instead of prefix
Chris Cormack authored
47 BASE_DIR, CGI_DIR, LOG_DIR, INSTALL_BASE,
98782b8 Correct comments and POD to reflect keyword additions/changes
Chris Nighswonger authored
48 DB_TYPE, DB_HOST, DB_PORT, DB_NAME, DB_PASS, DB_USER, WEBMASTER_EMAIL, WEBSERVER_DOMAIN,
28695e9 mjray Add missing auto_install features to new installer
mjray authored
49 WEBSERVER_HOST, WEBSERVER_IP, WEBSERVER_PORT, WEBSERVER_PORT_LIBRARIAN, ZEBRA_PASS, ZEBRA_USER
e449c13 mjray Add configuration file helper to the installer
mjray authored
50
61190e9 mjray New installation instructions and release notes.
mjray authored
51 =head1 EXAMPLES
52
53 To override the guessed hostname and email address, run:
54
55 WEBSERVER_HOST=mysecrethostname.com.invalid \
56 WEBMASTER_EMAIL=webmaster@publichost.com make install
57
58 Note that if WEBSERVER_HOST does not resolve to an IP address, you will
59 also need to override WEBSERVER_IP.
60
e449c13 mjray Add configuration file helper to the installer
mjray authored
61 =cut
62
9902f24 don't try to resolve if WEBSERVER_IP is set and now use WEBSERVER_HOST.
Marc Chantreux authored
63 if ( $myhost = $ENV{WEBSERVER_HOST} || hostname ) {
64 ( $mydomain = $myhost ) =~ s/.*?\.//;
65 } else {
66 $myhost = 'localhost';
67 $mydomain = 'localdomain';
4712745 fix for bug 2528: installation fails with confusing error message
Jesse Weaver authored
68 }
69
9902f24 don't try to resolve if WEBSERVER_IP is set and now use WEBSERVER_HOST.
Marc Chantreux authored
70 unless ( $myip = $ENV{WEBSERVER_IP} ) {
71 my $byname = gethostbyname( $myhost )
72 or die "Could not get the IP address of $myhost, DNS fault? ($!)";
73 $myip = inet_ntoa $byname
74 or die "can't inet_ntoa ($!)";
75 }
76
77
d1f9665 Now using install_base instead of prefix
Chris Cormack authored
78 $prefix = $ENV{'INSTALL_BASE'} || "/usr";
e449c13 mjray Add configuration file helper to the installer
mjray authored
79
80 # These are our configuration guesses
81 # Keys were extracted by
82 # <grep -o '__.*__' etc/* | cut -f2 -d: | sort -u | sed -e 's/^/ "/;s/$/" => "",/'
83 %configuration = (
82daf0a installer: added install log
Galen Charlton authored
84 "__KOHA_INSTALLED_VERSION__" => "no_version_found",
243ec54 mjray Move many files to more FHS-like paths
mjray authored
85 "__LOG_DIR__" => "/var/log",
bc4699c Changes to add dbms type and port & rename db vars for multi-dbms
Chris Nighswonger authored
86 "__DB_TYPE__" => "mysql",
87 "__DB_NAME__" => "koha",
88 "__DB_HOST__" => $myhost,
89 "__DB_PORT__" => "3306",
90 "__DB_USER__" => "kohaadmin",
91 "__DB_PASS__" => "katikoan",
28695e9 mjray Add missing auto_install features to new installer
mjray authored
92 "__WEBMASTER_EMAIL__" => 'webmaster@'.$mydomain,
e449c13 mjray Add configuration file helper to the installer
mjray authored
93 "__WEBSERVER_DOMAIN__" => $mydomain,
94 "__WEBSERVER_HOST__" => $myhost,
cecd7ef mjray BUGFIX: set all configuration keys - die terminated the hash
mjray authored
95 "__WEBSERVER_IP__" => $myip,
96 "__WEBSERVER_PORT__" => "80",
97 "__WEBSERVER_PORT_LIBRARIAN__" => "8080",
bbd043f adding three new variables for installation:
Joshua Ferraro authored
98 "__ZEBRA_SRU_HOST__" => $myhost,
99 "__ZEBRA_SRU_BIBLIOS_PORT__" => "9998",
100 "__ZEBRA_SRU_AUTHORITIES_PORT__" => "9999",
e6ee69b various installer changes
Galen Charlton authored
101 "__KOHA_USER__" => "koha",
102 "__KOHA_GROUP__" => "koha",
e449c13 mjray Add configuration file helper to the installer
mjray authored
103 "__ZEBRA_PASS__" => "zebrastripes",
104 "__ZEBRA_USER__" => "kohauser",
5befdd2 installer (part 2): more work
Galen Charlton authored
105 '__INTRANET_CGI_DIR__' => "$prefix/intranet/cgi-bin",
106 '__INTRANET_TMPL_DIR__' => "$prefix/intranet/templates",
107 '__INTRANET_WWW_DIR__' => "$prefix/intranet/www",
108 '__OPAC_CGI_DIR__' => "$prefix/opac/cgi-bin",
109 '__OPAC_TMPL_DIR__' => "$prefix/opac/templates",
110 '__OPAC_WWW_DIR__' => "$prefix/opac/www",
111 '__PERL_MODULE_DIR__' => ($ENV{'INSTALLSITELIB'} || sprintf($prefix."/lib/perl5/site_perl/%vd",$^V))."/koha",
112 '__KOHA_CONF_DIR__' => "$prefix/etc/koha",
113 '__ZEBRA_CONF_DIR__' => "$prefix/etc/koha/zebradb",
70dccac FRBR: configure PazPar2 during installation
Galen Charlton authored
114 '__PAZPAR2_CONF_DIR__' => "$prefix/etc/koha/pazpar2",
1b71360 installer: various changes
Galen Charlton authored
115 '__MISC_DIR__' => "$prefix/misc",
5befdd2 installer (part 2): more work
Galen Charlton authored
116 '__SCRIPT_DIR__' => "$prefix/bin",
117 '__MAN_DIR__' => "$prefix/man",
118 '__DOC_DIR__' => "$prefix/doc",
119 '__ZEBRA_LOCK_DIR__' => "$prefix/var/lock/zebradb",
120 '__ZEBRA_DATA_DIR__' => "$prefix/var/lib/zebradb",
121 '__ZEBRA_RUN_DIR__' => "$prefix/var/run/zebradb",
0f5fa1b installer: further moves of zebra configuration files
Galen Charlton authored
122 '__ZEBRA_MARC_FORMAT__' => 'marc21',
123 '__ZEBRA_LANGUAGE__' => 'en',
1c0401e authorities - enabled DOM indexing
Galen Charlton authored
124 '__ZEBRA_AUTH_CFG__' => 'zebra-authorities.cfg',
125 '__AUTH_RETRIEVAL_CFG__' => 'retrieval-info-auth-grs1.xml',
70dccac FRBR: configure PazPar2 during installation
Galen Charlton authored
126 "__MERGE_SERVER_HOST__" => $myhost,
127 "__MERGE_SERVER_PORT__" => '11001',
128 "__PAZPAR2_HOST__" => $myhost,
129 "__PAZPAR2_PORT__" => '11002',
20f1c41 install: added --prev-install-log option to Makefile.PL
Galen Charlton authored
130 "__INSTALL_MODE__" => 'standard',
131 "__INSTALL_BASE__" => '/usr/share/koha',
132 "__INSTALL_ZEBRA__" => 'yes',
133 "__INSTALL_SRU__" => 'yes',
134 "__INSTALL_PAZPAR2__" => 'no',
6835e19 kohabug 1776 - disable mergeserver if not installing PazPar2
Galen Charlton authored
135 "__PAZPAR2_TOGGLE_XML_PRE__" => '<!--',
136 "__PAZPAR2_TOGGLE_XML_POST__" => '-->',
20f1c41 install: added --prev-install-log option to Makefile.PL
Galen Charlton authored
137 "__AUTH_INDEX_MODE__" => 'grs1',
149ece8 added RUN_DATABASE_TESTS to install log
Galen Charlton authored
138 "__RUN_DATABASE_TESTS__" => 'no',
2fafa14 kohabug 1776 - try to locate Zebra during install
Galen Charlton authored
139 "__PATH_TO_ZEBRA__" => "",
e16e920 Chris Cormack Updating the Makefile so memcached configuration can be added to the koh...
ranginui authored
140 "__MEMCACHED_SERVERS__" => "",
141 "__MEMCACHED_NAMESPACE__" => "",
e449c13 mjray Add configuration file helper to the installer
mjray authored
142 );
143
144 # Override configuration from the environment
145 foreach $key (keys %configuration) {
146 if (defined($ENV{$key})) {
147 $configuration{$key} = $ENV{$key};
148 }
149 }
150
6835e19 kohabug 1776 - disable mergeserver if not installing PazPar2
Galen Charlton authored
151 # munge commenting out the PazPar2 mergeserver
152 # entry in koha-conf.xml if necessary
153 if ($configuration{'__INSTALL_PAZPAR2__'} eq 'yes') {
154 $configuration{'__PAZPAR2_TOGGLE_XML_PRE__'} = '';
155 $configuration{'__PAZPAR2_TOGGLE_XML_POST__'} = '';
156 }
157
e449c13 mjray Add configuration file helper to the installer
mjray authored
158 $fname = $ARGV[0];
6835e19 kohabug 1776 - disable mergeserver if not installing PazPar2
Galen Charlton authored
159 $file = &read_file($fname);
1df0f05 installer: make rewrite-config.PL change only defined parameters
Galen Charlton authored
160 $file =~ s/__.*?__/exists $configuration{$&} ? $configuration{$&} : $&/seg;
e6ee69b various installer changes
Galen Charlton authored
161
162 # At this point, file is in 'blib' and by default
163 # has mode a-w. Therefore, must change permission
164 # to make it writable. Note that stat and chmod
165 # (the Perl functions) should work on Win32
166 my $old_perm;
167 $old_perm = (stat $fname)[2] & 07777;
168 my $new_perm = $old_perm | 0200;
169 chmod $new_perm, $fname;
170
e449c13 mjray Add configuration file helper to the installer
mjray authored
171 open(OUTPUT,">$fname") || die "Can't open $fname for write: $!";
172 print OUTPUT $file;
173 close(OUTPUT);
174
e6ee69b various installer changes
Galen Charlton authored
175 chmod $old_perm, $fname;
176
e449c13 mjray Add configuration file helper to the installer
mjray authored
177 # Idea taken from perlfaq5
178 sub read_file($) {
179 local(*INPUT,$/);
180 open(INPUT,$_[0]) || die "Can't open $_[0] for read";
181 my $file = <INPUT>;
182 return $file;
183 }
184
185 __END__
186
187
188 =head1 SEE ALSO
189
190 Makefile.PL, ExtUtils::MakeMaker(3)
191
192 =head1 AUTHOR
193
194 MJ Ray mjr at phonecoop.coop
195
196 =cut
Something went wrong with that request. Please try again.