installer: prompt for more configuration parameters

Also now allows individual target directories to be
overridden from the command line.
This commit is contained in:
Galen Charlton 2007-12-10 16:53:41 -06:00
parent 56622d5428
commit bd0877f77c
1 changed files with 94 additions and 3 deletions

View File

@ -312,14 +312,22 @@ indexed by Zebra.
my %config_defaults = (
'INSTALL_MODE' => 'standard',
'INSTALL_BASE' => '/usr/share/koha',
'DB_TYPE' => 'mysql',
'DB_HOST' => 'localhost',
'DB_NAME' => 'koha',
'DB_USER' => 'kohaadmin',
'DB_PASS' => 'katikoan',
'INSTALL_ZEBRA' => 'yes',
'ZEBRA_MARC_FORMAT' => 'marc21',
'ZEBRA_LANGUAGE' => 'en',
'ZEBRA_USER' => 'kohauser',
'ZEBRA_PASS' => 'zebrastripes',
);
# valid values for certain configuration options
my %valid_config_values = (
'INSTALL_MODE' => { 'standard' => 1, 'single' => 1, 'dev' => 1 },
'DB_TYPE' => { 'mysql' => 1, 'Pg' => 1 },
'INSTALL_ZEBRA' => { 'yes' => 1, 'no' => 1 },
'ZEBRA_MARC_FORMAT' => { 'marc21' => 1, 'unimarc' => 1 }, # FIXME should generate from contents of distributation
'ZEBRA_LANGUAGE' => { 'en' => 1, 'fr' => 1 }, # FIXME should generate from contents of distribution
@ -327,6 +335,7 @@ my %valid_config_values = (
my %config = get_configuration(\%config_defaults, \%valid_config_values);
my %target_directories = get_target_directories(\%config);
display_configuration(\%config, \%target_directories);
my $file_map = {};
get_file_map($target_map, $dirtree, $file_map);
@ -637,6 +646,47 @@ as the package name in the FHS layout.);
$config{'INSTALL_BASE'} = _get_value('INSTALL_BASE', $msg, $install_base_default, $valid_values);
$config{'INSTALL_BASE'} = File::Spec->rel2abs($config{'INSTALL_BASE'});
$msg = q(
Please specify which database engine you will use
to store data in Koha. The choices are MySQL and
PostgreSQL; please note that at the moment
PostgreSQL support is highly experimental.
DBMS to use);
$msg .= _add_valid_values_disp('DB_TYPE', $valid_values);
$config{'DB_TYPE'} = _get_value('DB_TYPE', $msg, $defaults->{'DB_TYPE'}, $valid_values);
$msg = q(
Please specify the name or address of your
database server. Note that the database
does not have to exist at this point, it
can be created after running 'make install'
and before you try using Koha for the first time.
Database server);
$config{'DB_HOST'} = _get_value('DB_HOST', $msg, $defaults->{'DB_HOST'}, $valid_values);
$msg = q(
Please specify the port used to connect to the
DMBS);
my $db_port_default = $config{'DB_TYPE'} eq 'mysql' ? '3306' : '5432';
$config{'DB_PORT'} = _get_value('DB_PORT', $msg, $db_port_default, $valid_values);
$msg = q(
Please specify the name of the database to be
used by Koha);
$config{'DB_NAME'} = _get_value('DB_NAME', $msg, $defaults->{'DB_NAME'}, $valid_values);
$msg = q(
Please specify the user that owns the database to be
used by Koha);
$config{'DB_USER'} = _get_value('DB_USER', $msg, $defaults->{'DB_USER'}, $valid_values);
$msg = q(
Please specify the password of the user that owns the
database to be used by Koha);
$config{'DB_PASS'} = _get_value('DB_PASS', $msg, $defaults->{'DB_PASS'}, $valid_values);
$msg = q(
Koha can use the Zebra search engine for high-performance
searching of bibliographic and authority records. If you
@ -668,6 +718,15 @@ records.
Please specify the primary language of the MARC records);
$msg .= _add_valid_values_disp('ZEBRA_LANGUAGE', $valid_values);
$config{'ZEBRA_LANGUAGE'} = _get_value('ZEBRA_LANGUAGE', $msg, $defaults->{'ZEBRA_LANGUAGE'}, $valid_values);
$msg = q(
Please specify Zebra database user);
$config{'ZEBRA_USER'} = _get_value('ZEBRA_USER', $msg, $defaults->{'ZEBRA_USER'}, $valid_values);
$msg = q(
Please specify the Zebra database password);
$config{'ZEBRA_PASS'} = _get_value('ZEBRA_PASS', $msg, $defaults->{'ZEBRA_PASS'}, $valid_values);
}
return %config;
}
@ -777,12 +836,43 @@ sub get_target_directories {
$dirmap{'ZEBRA_RUN_DIR'} = File::Spec->catdir(File::Spec->rootdir(), 'var', 'run', $package, 'zebradb');
}
foreach my $key (sort keys %dirmap) {
print sprintf("%-25.25s%s\n", $key, $dirmap{$key});
}
_get_argv_overrides(\%dirmap);
return %dirmap;
}
sub _get_argv_overrides {
my $dirmap = shift;
my @new_argv = ();
for (my $i = 0; $i <= $#ARGV; $i++) {
if ($ARGV[$i] =~ /^([^=]+)=([^=]+)$/ and exists $dirmap->{$1}) {
$dirmap->{$1} = $2;
} else {
push @new_argv, $ARGV[$i];
}
}
@ARGV = @new_argv;
}
sub display_configuration {
my $config = shift;
my $dirmap = shift;
print "\n\nKoha will be installed with the following configuration parameters:\n\n";
foreach my $key (sort keys %$config) {
print sprintf("%-25.25s%s\n", $key, $config->{$key});
}
print "\nand in the following directories:\n\n";
foreach my $key (sort keys %$dirmap) {
print sprintf("%-25.25s%s\n", $key, $dirmap->{$key});
}
print "\n\nTo change any configuration setting, please run\n";
print "perl Makefile.PL again. To override one of the target\n";
print "directories, you can do so on the command line like this:\n";
print "\nperl Makefile.PL PERL_MODULE_DIR=/usr/share/perl/5.8\n\n";
}
package MY;
sub test {
@ -825,6 +915,7 @@ sub postamble {
# variables -- this is for the use of
# rewrite-confg.PL
my $env = join("\n", map { "export __${_}__ = $target_directories{$_}" } keys %target_directories);
$env .= join("\n", map { "export __${_}__ = $config{$_}" } keys %config);
return "$env\n";
}