OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Thomas Lotterer Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-registry Date: 03-Aug-2006 01:15:35 Branch: HEAD Handle: 2006080300153400 Modified files: openpkg-registry registry-db.pl Log: introduce OSSP::cfg and option parsing, leverage common registry code; work-off setup part using own dbdo() function with improved error handling and debugging and smaller footprint on usage; move "version already match" detection block to the beginning of update/upgrade procedure; fix broken version UPDATE; add manual page Summary: Revision Changes Path 1.42 +339 -158 openpkg-registry/registry-db.pl ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-registry/registry-db.pl ============================================================================ $ cvs diff -u -r1.41 -r1.42 registry-db.pl --- openpkg-registry/registry-db.pl 2 Aug 2006 23:14:19 -0000 1.41 +++ openpkg-registry/registry-db.pl 2 Aug 2006 23:15:34 -0000 1.42 @@ -27,8 +27,10 @@ use strict; use Data::Dumper; +use OSSP::cfg; use DBI; use DBD::Pg; +use Getopt::Long; # program name, version and date my $progname="registry-db.pl"; @@ -40,6 +42,15 @@ $Data::Dumper::Indent = 1; $Data::Dumper::Terse = 1; +# determine path to OpenPKG instance +my $PREFIX='@l_prefix@'; +$PREFIX=$ENV{OPENPKG_PREFIX} if ($ENV{OPENPKG_PREFIX} ne ""); + +# registry common code +my $pm = "registry.pm"; +$pm = "$PREFIX/libexec/openpkg-registry/registry.pm" unless($PREFIX =~ m/[EMAIL PROTECTED]@$/); +require $pm; import registry; + # derive data version from program version my $datavers={}; $datavers->{value} = $progvers; @@ -52,19 +63,83 @@ die "cannot derive datavers major.minor.patch triple from progvers=" . $progvers; } -# determine path to OpenPKG instance -my $PREFIX='@l_prefix@'; -$PREFIX=$ENV{OPENPKG_PREFIX} if ($ENV{OPENPKG_PREFIX} ne ""); +# options and defaults +my $opt = {}; +$opt->{prefix} = $PREFIX; +$opt->{config} = ®istry::getcfgfilename($PREFIX); +$opt->{debug} = 0; +$opt->{help} = 0; +$opt->{version} = 0; + +sub debug () { + my ($txt) = @_; + printf STDERR "$progname:DEBUG: %s\n", $txt if($opt->{debug}); +} + +sub warning () { + my ($txt) = @_; + printf STDERR "$progname:WARNING: %s\n", $txt; +} + +sub error () { + my ($txt) = @_; + printf STDERR "$progname:ERROR: %s\n", $txt; + exit(1); +} -# configuration -my $cfg = {}; -$cfg->{db}->{registry}->{host}="127.0.0.1"; -$cfg->{db}->{registry}->{superuser}->{username}="postgresql"; -$cfg->{db}->{registry}->{superuser}->{password}="postgresql"; -$cfg->{db}->{registry}->{username}="registry"; -$cfg->{db}->{registry}->{password}="registry"; -$cfg->{db}->{registry}->{tablespace}="registry"; -$cfg->{db}->{session}->{dbfile}="$PREFIX/var/openpkg-registry/ui/session.db"; +sub version () +{ + printf "$progname:INFO: version=%s date=%s\n", $progvers, $progdate; + exit(0); +} + +sub usage () +{ + my ($level) = @_; + my $txt = qq{ + $progname:$level: Usage: $progname [options] command + Available options: + -p|prefix=s specifiy prefix for data ($opt->{prefix}) + -C|config=s specifiy config file ($opt->{config}) + -D|debug turn on debugging + -H|help print out this usage page + -V|version print version + Available commands: + setup setup/upgrade database + }; + $txt =~ s/^\n//s; $txt =~ s/^[ ]{8}//mg; $txt =~ s/ *$//mg; + if ($level eq "INFO") { + print $txt; + exit(0); + } + print STDERR $txt; + exit(1); +} + +Getopt::Long::Configure("bundling"); +my $result = GetOptions( + 'p|prefix=s' => \$opt->{prefix}, + 'C|config=s' => \$opt->{config}, + 'D|debug' => \$opt->{debug}, + 'H|help' => \$opt->{help}, + 'V|version' => \$opt->{version} +) || &usage("ERROR"); +&version() if ($opt->{version}); +&usage("INFO") if ($opt->{help}); +( $#ARGV == 0 ) || &usage("ERROR"); + +# check data prefix +if ( $ARGV[0] eq "setup") { + &error("required data prefix empty") if ($opt->{prefix} eq ""); + &error("required data prefix unset") if ($opt->{prefix} =~ m/[EMAIL PROTECTED]@$/); +} + +# handle configuration +my $defcfgtxt = ®istry::getdefcfgtxt($opt->{prefix}); +my $defcfg = ®istry::parsecfgtxt($defcfgtxt); +my $usecfgtxt = ®istry::readcfgtxtfile($opt->{config}); +my $usecfg = ®istry::parsecfgtxt($usecfgtxt); +my $cfg = ®istry::mergecfg($defcfg, $usecfg); # database handle and scratch variables # @@ -76,6 +151,11 @@ my $dbh; # database handle my $dbv; # database version +if ($ARGV[0] eq "setup") { + &setup(); +} +exit(0); + sub dbopen($) { my ($db) = @_; @@ -148,55 +228,85 @@ return $dbi; } -# create user, tablespace and database -# -$dbh = &dbopen("template1"); -die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); - -$sql="CREATE USER registry ENCRYPTED PASSWORD 'registry' NOCREATEDB NOCREATEUSER;"; -$rv = $dbh->do($sql); -print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n" if($dbh->errstr !~ /(user|role) .* already exists/); - -$sql="CREATE TABLESPACE registry OWNER registry LOCATION '$PREFIX/var/openpkg-registry/db';"; -$rv = $dbh->do($sql); -print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n" if($dbh->errstr !~ /tablespace .* already exists/); - -$sql="CREATE DATABASE registry OWNER registry TABLESPACE registry;"; -$rv = $dbh->do($sql); -print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n" if($dbh->errstr !~ /database .* already exists/); - -$dbh->disconnect(); undef $dbh; - -# enable Pg/SQL -# -$dbh = &dbopen("registry/superuser"); -die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); - -$sql=""; -$sql.="CREATE FUNCTION plpgsql_call_handler () RETURNS LANGUAGE_HANDLER AS '\$libdir/plpgsql' LANGUAGE C;\n"; -$sql.="COMMENT ON FUNCTION plpgsql_call_handler () IS 'PL/pgSQL Call Handler';\n"; -$sql.="CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler;\n"; -$rv = $dbh->do($sql); -print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n" if($dbh->errstr !~ /function .* already exists/); - -$dbh->disconnect(); undef $dbh; +sub dbdo ($$) +{ + my ($dbh, $sql, $ignore) = @_; + my ($rv, $txt, $msg, $ok, $expectederror); -# registry -# -$dbh = &dbopen("registry"); -die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); -while(&upgraderegistry()) {}; -$dbh->disconnect(); undef $dbh; + $sql =~ s/ *\n+$//s; + $rv = $dbh->do($sql); + $ok = 0; $ok = 1 if ($rv eq '0E0' or $rv >= 1); + $msg = $dbh->errstr; + $msg =~ s/ *\n+$//s; + $expectederror = 0; $expectederror = 1 if ($msg =~ m/$ignore/); + $txt = sprintf "\n sql=\"%s\"\n ret=\"%s\"\n msg=\"%s\"\n", $sql, $rv, $msg; + if (not $ok and not $expectederror) { + printf STDERR "$progname:ERROR: %s\n", $txt; + return 0; + } + &debug($txt); + return 1; +} -# session -# -$dbh = &dbopen("session"); -die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); -chmod oct("0664"), $cfg->{db}->{session}->{dbfile}; -while(&upgradesession()) {}; -$dbh->disconnect(); undef $dbh; +sub setup () +{ + # create user, tablespace and database + # + $dbh = &dbopen("template1"); + die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); -exit(0); + $sql = sprintf "CREATE USER %s ENCRYPTED PASSWORD %s NOCREATEDB NOCREATEUSER;", + $cfg->{db}->{registry}->{username}, + $dbh->quote($cfg->{db}->{registry}->{password}); + &dbdo($dbh, $sql, + '(user|role) .* already exists') || die; + + $sql = sprintf "CREATE TABLESPACE %s OWNER %s LOCATION %s;", + $cfg->{db}->{registry}->{tablespace}, + $cfg->{db}->{registry}->{username}, + $dbh->quote($cfg->{db}->{registry}->{location}); + &dbdo($dbh, $sql, + 'tablespace .* already exists') || die; + + $sql = sprintf "CREATE DATABASE %s OWNER %s TABLESPACE %s;", + $cfg->{db}->{registry}->{database}, + $cfg->{db}->{registry}->{username}, + $cfg->{db}->{registry}->{tablespace}; + &dbdo($dbh, $sql, + 'database .* already exists') || die; + + $dbh->disconnect(); undef $dbh; + + # enable Pg/SQL + # + $dbh = &dbopen("registry/superuser"); + die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); + + $sql = q{ + CREATE FUNCTION plpgsql_call_handler () RETURNS LANGUAGE_HANDLER AS '$libdir/plpgsql' LANGUAGE C; + COMMENT ON FUNCTION plpgsql_call_handler () IS 'PL/pgSQL Call Handler'; + CREATE TRUSTED PROCEDURAL LANGUAGE plpgsql HANDLER plpgsql_call_handler; + }; + &dbdo($dbh, $sql, + 'function .* already exists') || die; + + $dbh->disconnect(); undef $dbh; + + # registry + # + $dbh = &dbopen("registry"); + die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); + while (&upgraderegistry()) {}; + $dbh->disconnect(); undef $dbh; + + # session + # + $dbh = &dbopen("session"); + die "ERROR:$0: DataBase error: ".$DBI::errstr."\n" if (not defined $dbh); + chmod oct("0664"), $cfg->{db}->{session}->{dbfile}; + while (&upgradesession()) {}; + $dbh->disconnect(); undef $dbh; +} sub upgradesession() { @@ -220,81 +330,73 @@ die "cannot derive database major.minor.patch triple from value=".$dbv->{version}->{value}; } - # database has no version and needs initialization from scratch + # program data version and database version already match + # + if ( $dbv->{version}->{major} == $datavers->{major} + and $dbv->{version}->{minor} == $datavers->{minor} + and $dbv->{version}->{patch} == $datavers->{patch}) { + &debug("database=" . $dbv->{version}->{major} . "." + . $dbv->{version}->{minor} . "." + . $dbv->{version}->{patch} + . " is at exactly program datavers=" + . $datavers->{major} . "." + . $datavers->{minor} . "." + . $datavers->{patch}); + return 0; + } + + # 0.0.0 upgrade to 0.0.1 - initialization from scratch # - if ( $dbv->{version}->{major} == 0 + elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} == 0 and $dbv->{version}->{patch} == 0) { - print "initializing database\n"; - # SQLite transactions seem to factor out CREATE TABLEs - $sql = &schemasession1(); - $rv = $dbh->do($sql); - print "[schema.1]\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not defined $rv); - $sql = &schemasession2(); - $rv = $dbh->do($sql); - print "[schema.2]\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not defined $rv); + $sql = ""; + $sql .= &schemasession1(); + $sql .= &schemasession2(); + $sql .= "INSERT INTO config VALUES ( 'version', '0.0.1' );"; + &dbdo($dbh, $sql) || die; return 1; } - # 0.0.24 introduced cache table + # 0.0.x upgrade to 0.0.24 # elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} == 0 and $dbv->{version}->{patch} < 24 ) { - $sql = &schemasession3(); - $rv = $dbh->do($sql); - print "[schema.3]\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not defined $rv); - $sql = sprintf("UPDATE config SET value = '0.0.24';"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not defined $rv); + $sql = ""; + $sql .= &schemasession3(); + $sql = "UPDATE config SET value = '0.0.24' WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } - # >0.0.24 upgrade to 0.6.0 is a nop + # 0.0.24 upgrade to 0.6.0 # elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} < 6 ) { - $sql = sprintf("UPDATE config SET value = '0.6.0';"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if (not defined $rv); + $sql = ""; + $sql = "UPDATE config SET value = '0.6.0' WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } - # program data version and database version already match - # - elsif ( $dbv->{version}->{major} == $datavers->{major} - and $dbv->{version}->{minor} == $datavers->{minor} - and $dbv->{version}->{patch} == $datavers->{patch}) { - print "database=" . $dbv->{version}->{major} . "." - . $dbv->{version}->{minor} . "." - . $dbv->{version}->{patch} - . " is at exactly program datavers=" - . $datavers->{major} . "." - . $datavers->{minor} . "." - . $datavers->{patch} - . "\n"; - return 0; - } - # program data version and database version only differ in patchlevel - just uprev the number # elsif ( $dbv->{version}->{major} == $datavers->{major} and $dbv->{version}->{minor} == $datavers->{minor} and $dbv->{version}->{patch} < $datavers->{patch}) { - print "database=" . $dbv->{version}->{major} . "." + &debug("database=" . $dbv->{version}->{major} . "." . $dbv->{version}->{minor} . "." . $dbv->{version}->{patch} . " is at program major/minor datavers=" . $datavers->{major} . "." . $datavers->{minor} . "." - . $datavers->{patch} - . "\n"; + . $datavers->{patch}); $sql = sprintf("UPDATE config SET value = '%s.%s.%s' WHERE ( key = 'version' );", $datavers->{major}, $datavers->{minor}, $datavers->{patch}); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + &dbdo($dbh, $sql) || die; return 1; } @@ -336,51 +438,41 @@ die "cannot derive database major.minor.patch triple from value=".$dbv->{version}->{value}; } - - # database has no version and needs initialization from scratch - # - if ( $dbv->{version}->{major} == 0 - and $dbv->{version}->{minor} == 0 - and $dbv->{version}->{patch} == 0) { - print "initializing database\n"; - $dbh->{AutoCommit} = 0; - $dbh->begin_work; - $sql = ""; - $sql .= &schemaregistry(); - $sql .= &schemaregistry2(); - $sql .= &funcregistry(); - $sql .= "INSERT INTO reg_config VALUES ( 'version', '".$progvers."' );"; - $sql .= &sample() if ($progvers =~ m/^0\.0\./); - $rv = $dbh->do($sql); - $dbh->commit; - print "[schema]\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); - $dbh->{AutoCommit} = 1; - return 1; - } - - # program data version and database version already match + # program data version and database version match # - elsif ( $dbv->{version}->{major} == $datavers->{major} + if ( $dbv->{version}->{major} == $datavers->{major} and $dbv->{version}->{minor} == $datavers->{minor} and $dbv->{version}->{patch} == $datavers->{patch}) { - print "database=" . $dbv->{version}->{major} . "." + &debug("database=" . $dbv->{version}->{major} . "." . $dbv->{version}->{minor} . "." . $dbv->{version}->{patch} . " is at exactly program datavers=" . $datavers->{major} . "." . $datavers->{minor} . "." - . $datavers->{patch} - . "\n"; + . $datavers->{patch}); return 0; } - # 0.[01].x upgrade to 0.2.0 is a nop + # 0.0.0 upgrade to 0.1.0 - initialization from scratch + # + elsif ( $dbv->{version}->{major} == 0 + and $dbv->{version}->{minor} == 0 + and $dbv->{version}->{patch} == 0) { + $sql = ""; + $sql .= &schemaregistry(); + $sql .= &funcregistry(); + $sql .= "INSERT INTO reg_config VALUES ( 'version', '0.1.0' );"; + &dbdo($dbh, $sql) || die; + return 1; + } + + + # 0.1.x upgrade to 0.2.0 # elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} < 2 ) { - $sql = sprintf("UPDATE reg_config SET value = '0.2.0';"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + $sql = "UPDATE reg_config SET value = '0.2.0', mtime = now() WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } @@ -388,14 +480,15 @@ # elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} == 2 ) { - $sql=""; - $sql .= sprintf("ALTER TABLE reg_statistic ALTER COLUMN time_first SET DEFAULT CURRENT_TIMESTAMP;\n"); - $sql .= sprintf("ALTER TABLE reg_statistic ALTER COLUMN time_last SET DEFAULT CURRENT_TIMESTAMP;\n"); - $sql .= sprintf("ALTER TABLE reg_statistic ALTER COLUMN count SET DEFAULT 1;\n"); + $sql = ""; + $sql .= q{ + ALTER TABLE reg_statistic ALTER COLUMN time_first SET DEFAULT CURRENT_TIMESTAMP; + ALTER TABLE reg_statistic ALTER COLUMN time_last SET DEFAULT CURRENT_TIMESTAMP; + ALTER TABLE reg_statistic ALTER COLUMN count SET DEFAULT 1; + }; $sql .= &funcregistry(); - $sql .= sprintf("UPDATE reg_config SET value = '0.3.0';\n"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + $sql .= "UPDATE reg_config SET value = '0.3.0', mtime = now() WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } @@ -403,11 +496,12 @@ # elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} == 3 ) { - $sql=""; - $sql .= sprintf("ALTER TABLE reg_user ADD COLUMN fullname TEXT;\n"); - $sql .= sprintf("UPDATE reg_config SET value = '0.4.0';\n"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + $sql = ""; + $sql .= q{ + ALTER TABLE reg_user ADD COLUMN fullname TEXT; + }; + $sql .= "UPDATE reg_config SET value = '0.4.0', mtime = now() WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } @@ -416,12 +510,13 @@ elsif ( $dbv->{version}->{major} == 0 and $dbv->{version}->{minor} == 4) { $sql = ""; - my $constraint = q{ CHECK (registry_orel ~ '^[^-]+-((CURRENT|CURRENT-[0-9]+|[^.-]+-STABLE|[^.-]+-STABLE-[0-9]+|[^.-]+\.[^.-]+-SOLID|[^.-]+\.[^.-]+-SOLID-[0-9]+|[^.-]+\.[^.-]+-RELEASE).*|[0-9]+\.[0-9]+)$') }; - $sql .= sprintf("ALTER TABLE reg_instance DROP CONSTRAINT reg_instance_registry_orel_check;\n"); - $sql .= sprintf("ALTER TABLE reg_instance ADD CONSTRAINT reg_instance_registry_orel_check $constraint;\n"); - $sql .= sprintf("UPDATE reg_config SET value = '0.5.0';\n"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + $sql .= q{ + ALTER TABLE reg_instance DROP CONSTRAINT reg_instance_registry_orel_check; + ALTER TABLE reg_instance ADD CONSTRAINT reg_instance_registry_orel_check + CHECK (registry_orel ~ '^[^-]+-((CURRENT|CURRENT-[0-9]+|[^.-]+-STABLE|[^.-]+-STABLE-[0-9]+|[^.-]+\.[^.-]+-SOLID|[^.-]+\.[^.-]+-SOLID-[0-9]+|[^.-]+\.[^.-]+-RELEASE).*|[0-9]+\.[0-9]+)$'); + }; + $sql .= "UPDATE reg_config SET value = '0.5.0', mtime = now() WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } @@ -431,9 +526,8 @@ and $dbv->{version}->{minor} == 5) { $sql = ""; $sql .= &schemaregistry2(); - $sql .= sprintf("UPDATE reg_config SET value = '0.6.0';\n"); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + $sql .= "UPDATE reg_config SET value = '0.6.0', mtime = now() WHERE ( key = 'version' );"; + &dbdo($dbh, $sql) || die; return 1; } @@ -442,20 +536,18 @@ elsif ( $dbv->{version}->{major} == $datavers->{major} and $dbv->{version}->{minor} == $datavers->{minor} and $dbv->{version}->{patch} < $datavers->{patch}) { - print "database=" . $dbv->{version}->{major} . "." + &debug("database=" . $dbv->{version}->{major} . "." . $dbv->{version}->{minor} . "." . $dbv->{version}->{patch} . " is at program major/minor datavers=" . $datavers->{major} . "." . $datavers->{minor} . "." - . $datavers->{patch} - . "\n"; - $sql = sprintf("UPDATE reg_config SET value = '%s.%s.%s' WHERE ( key = 'version' );", + . $datavers->{patch}); + $sql = sprintf("UPDATE reg_config SET value = '%s.%s.%s', mtime = now() WHERE ( key = 'version' );", $datavers->{major}, $datavers->{minor}, $datavers->{patch}); - $rv = $dbh->do($sql); - print "$sql\nrv=".$rv." message=".$dbh->errstr."\n\n"; die if ($dbh->errstr =~ m|ERROR|); + &dbdo($dbh, $sql) || die; return 1; } @@ -743,3 +835,92 @@ EOT } +__END__ +## +## MANUAL PAGE +## + +=pod + +=head1 NAME + +B<registry-db> - OpenPKG Registry DataBase utility + +=head1 SYNOPSIS + +B<registry-db> [options] command + Available options: + [I<-p|prefix=<path>>] + [I<-C|config=<file>>] + [I<-D|debug>] [I<-H|help>] [I<-V|version>] + Available commands: + setup setup/upgrade database + +=head1 DESCRIPTION + +B<registry-db> is the DataBase utility for OpenPKG Registry Servers. +It is used by administrators to setup the +Registry Server and to review the default configuration, the contents +of the used configuration file and the internal result of both being +merged. + +=head1 OPTIONS + +The following options are available: + +=over 4 + +=item B<-D>, B<--debug> + +Print verbose debug messages during operation. + +=item B<-H>, B<--help> + +Display brief usage message. + +=item B<-V>, B<--version> + +Print version and exit. + +=item B<-C>, B<--config=<file>> + +Specify configuration file to use. +Default is C<@l_prefix@/etc/openpkg-registry/registry.cfg> + +=item B<-p>, B<--prefix=<path>> + +Specify path to prefix. Default is <@l_prefix>, overriden by environment +variable OPENPKG_PREFIX and finally overridden by this option. + +=back + +=head1 COMMANDS + +The following commands are available: + +=over 4 + +=item B<setup> + +Sets up DataBase from scratch, upgrades or updates it. Maintains +tablespace, role, database and tables. After successfully running +setup, all relations are fully functional but there is no data in the +DataBase. This is an ideal precondition to start from scratch or running +a restore. + +=back + +=head1 FILES + +Default cfg file C<@l_prefix@/etc/openpkg-registry/registry.cfg> + +=head1 SEE ALSO + +pg_dump(1), psql(1) + +=head1 AUTHOR + +Thomas Lotterer E<lt>[EMAIL PROTECTED]<gt> + +=cut + @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org