diff --git a/ChangeLog b/ChangeLog index 3555adc80..ccd348beb 100755 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,11 @@ phpMyAdmin - Changelog $Id$ $Source$ +2005-05-08 Olivier Mueller + * scripts/upgrade.pl: new script to let unix admins upgrade phpMyadmin + with one command and 5 seconds. To be improved, but is working fine + here (tm). Based on: http://www.phpmyadmin.net/latest.txt + 2005-05-05 Marc Delisle * libraries/mysql_charsets.lib.php: bug #1186983, missing character sets and collations (temporary workaround) diff --git a/scripts/upgrade.pl b/scripts/upgrade.pl new file mode 100755 index 000000000..628c8547e --- /dev/null +++ b/scripts/upgrade.pl @@ -0,0 +1,145 @@ +#!/usr/bin/perl +# +# $Id$ +# +# upgrade.pl - automatic phpmyadmin upgrader +# +# +# 2005-05-08, swix@users.sourceforge.net: +# - created script +# +# TODO: check if current version is not already uptodate +# (let's assume the sysadmin still has a brain... :-) +# + + +use strict; +my $source_url = "http://www.phpmyadmin.net/latest.txt"; + + +# +# usage +# + +if (!$ARGV[0]) { + print "\n"; + print "usage: upgrade.pl target_directory\n\n"; + print " target_directory will be backuped and replaced\n"; + print " by the current version of phpMyAdmin, by keeping your\n"; + print " config.inc.php file.\n\n"; + exit(0); +} + +my $targetdirectory = $ARGV[0]; +if ($targetdirectory =~ /^(.*)\/$/) { + # remove trailing slash, if any + print "$targetdirectory -> $1\n\n"; +} + +if (!-d $targetdirectory) { + print "error: target directory ($targetdirectory) does not exists\n"; + exit(0); +} + +if (!-f "$targetdirectory/config.inc.php") { + print "error: target directory doesn't seem to contain phpMyAdmin\n"; + exit(0); +} + + +# +# get current release information +# + +my $version; +my $filename; +my $directory; +my $releasedate; +my @urls; + +if (open(LATEST, "wget -o /dev/null -O - $source_url|")) { + + $version = ; chomp($version); + $releasedate = ; chomp($releasedate); + $filename = "phpMyAdmin-" . $version . ".tar.gz"; + $directory = "phpMyAdmin-" . $version; + + my $i = 0; + + while(my $line = ) { + chomp($line); + if ($line =~ /http/) { + $urls[$i++] = $line; + } + } + + close(LATEST); + +} else { + + print "error: open failed.\n"; + exit(0); + +} + + +if (-d $directory) { + print "error: target directory ($directory) already exists, exiting\n"; + exit(0); +} + + +# +# get file +# + +if (!-f $filename) { + + print "getting phpMyAdmin $version\n"; + foreach my $url (@urls) { + + print "trying $url...\n"; + system("wget -o /dev/null $url"); + if (-f $filename) { + print "-> ok\n"; + last; + } + } +} else { + print "already got $filename, not downloading\n"; +} + + +if (!-filename) { + print "error: $filename download failed\n"; + exit(0); +} + + + +# +# setup +# + +print "installing...\n"; + +system("tar xzf $filename"); +if (!$directory) { + print "error: $directory still not exists after untar...\n"; + exit(0); +} + +my $backupdir = $targetdirectory . "-" . time; +print "- backup directory: $backupdir\n"; + +system("cp $directory/config.inc.php $directory/config.inc-dist.php"); +print "- original config.inc.php renamed to config.inc-dist.php\n"; + +system("cp $targetdirectory/config.inc.php $directory/config.inc.php"); +system("mv $targetdirectory $backupdir"); +system("mv $directory $targetdirectory"); + + +print "\ndone! phpMyAdmin $version installed in $directory\n"; +print "backup of your old installation in $backupdir\n\n"; +print "Enjoy! :-)\n\n";