[LON-CAPA-cvs] cvs: doc /install/linux install.pl
raeburn
raeburn@source.lon-capa.org
Mon, 28 Mar 2011 13:27:56 -0000
This is a MIME encoded message
--raeburn1301318876
Content-Type: text/plain
raeburn Mon Mar 28 13:27:56 2011 EDT
Modified files:
/doc/install/linux install.pl
Log:
- Include ntp amongst services to start on boot.
- Include memcached amongst services to stop, and remove from start on boot
(loncontrol starts memcached).
- ubuntu8 and earlier use cupsys instead of cups for name of print server pkg.
- set-up of Apache on debian/ubuntu includes linking from mods-available to
mods-enabled for headers.load and expires.load.
--raeburn1301318876
Content-Type: text/plain
Content-Disposition: attachment; filename="raeburn-20110328132756.txt"
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.5 doc/install/linux/install.pl:1.6
--- doc/install/linux/install.pl:1.5 Wed Mar 23 15:01:34 2011
+++ doc/install/linux/install.pl Mon Mar 28 13:27:56 2011
@@ -72,7 +72,7 @@
&mt('Stopping execution.')."\n";
exit;
} else {
- print LOG '$Id: install.pl,v 1.5 2011/03/23 15:01:34 raeburn Exp $'."\n";
+ print LOG '$Id: install.pl,v 1.6 2011/03/28 13:27:56 raeburn Exp $'."\n";
}
#
@@ -305,6 +305,41 @@
return $gotprereqs;
}
+sub check_locale {
+ my ($distro) = @_;
+ my ($fh,$command);
+ if ($distro =~ /^(ubuntu|debian)/) {
+ if (!open($fh,"</etc/default/locale")) {
+ print &mt('Failed to open: [_1], default locale not checked.',
+ '/etc/default/locale');
+ }
+ } else {
+ if (!open($fh,"</etc/sysconfig/i18n")) {
+ print &mt('Failed to open: [_1], default locale not checked.',
+ '/etc/sysconfig/i18n');
+ }
+ }
+ my @data = <$fh>;
+ chomp(@data);
+ foreach my $item (@data) {
+ if ($item =~ /^LANG=\"([^\"]*)\"/) {
+ my $default = $1;
+ if ($default ne 'en_US.UTF-8') {
+ if ($distro =~ /^debian/) {
+ $command = 'dpkg-reconfigure locales';
+ } elsif ($distro =~ /^ubuntu/) {
+ $command = 'sudo set-language-env -E';
+ } else {
+ $command = 'system-config-language';
+ }
+ }
+ last;
+ }
+ }
+ close($fh);
+ return $command;
+}
+
sub check_required {
my ($instdir,$dsn) = @_;
my ($distro,$packagecmd,$updatecmd,$installnow) = &get_distro();
@@ -313,7 +348,11 @@
}
my $gotprereqs = &check_prerequisites($packagecmd,$distro);
if ($gotprereqs eq '') {
- return ($distro,$gotprereqs,$packagecmd,$updatecmd,$installnow);
+ return ($distro,$gotprereqs);
+ }
+ my $localecmd = &check_locale($distro);
+ unless ($localecmd eq '') {
+ return ($distro,$gotprereqs,$localecmd);
}
my ($mysqlon,$mysqlsetup,$dbh,$has_pass,$has_lcdb,%recommended,$downloadstatus,
$filetouse,$production,$testing,$apachefw,$tostop);
@@ -350,7 +389,7 @@
$recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);
($recommended{'download'},$downloadstatus,$filetouse,$production,$testing)
= &need_download();
- return ($distro,$gotprereqs,$packagecmd,$updatecmd,$installnow,
+ return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
\%recommended,$dbh,$has_pass,$has_lcdb,$downloadstatus,
$filetouse,$production,$testing,$apachefw);
}
@@ -361,11 +400,19 @@
if ($distro =~ /^(suse|sles|debian|ubuntu)/) {
$mysqldaemon = 'mysql';
}
- if (open(PIPE,"ps -ef |grep mysqld_safe |grep -v grep 2>&1 |")) {
+ my $process = 'mysqld_safe';
+ my $proc_owner = 'root';
+ if ($distro =~ /^ubuntu(\w+)/) {
+ if ($1 >= 10) {
+ $process = 'mysqld';
+ $proc_owner = 'mysql';
+ }
+ }
+ if (open(PIPE,"ps -ef |grep $process |grep -v grep 2>&1 |")) {
my $status = <PIPE>;
close(PIPE);
chomp($status);
- if ($status =~ /^root\s+\d+\s+/) {
+ if ($status =~ /^\Q$proc_owner\E\s+\d+\s+/) {
print_and_log(&mt('MySQL is running.')."\n");
return 1;
} else {
@@ -396,52 +443,58 @@
my ($distro) = @_;
my (%needfix,%tostop);
my $checker_bin = '/sbin/chkconfig';
- my $mysqldaemon ='mysqld';
- my $webserver = 'httpd';
- my $cupsdaemon = 'cups';
- my $ntpdaemon = 'ntpd';
+ my %daemon = (
+ mysql => 'mysqld',
+ apache => 'httpd',
+ cups => 'cups',
+ ntp => 'ntpd',
+ memcached => 'memcached',
+ );
my @runlevels = qw/3 4 5/;
my @norunlevels = qw/0 1 6/;
if ($distro =~ /^(suse|sles)/) {
@runlevels = qw/3 5/;
@norunlevels = qw/0 2 1 6/;
- $mysqldaemon = 'mysql';
- $webserver = 'apache2';
+ $daemon{'mysql'} = 'mysql';
+ $daemon{'apache'} = 'apache2';
if ($distro =~ /^(suse|sles)9/) {
- $webserver = 'apache';
+ $daemon{'apache'} = 'apache';
}
- } elsif ($distro =~ /^(debian|ubuntu)/) {
+ } elsif ($distro =~ /^(?:debian|ubuntu)(\d+)/) {
+ my $version = $1;
@runlevels = qw/2 3 4 5/;
@norunlevels = qw/0 1 6/;
$checker_bin = '/usr/sbin/sysv-rc-conf';
- $mysqldaemon = 'mysql';
- $webserver = 'apache2';
- $ntpdaemon = 'ntp';
+ $daemon{'mysql'} = 'mysql';
+ $daemon{'apache'} = 'apache2';
+ $daemon{'ntp'} = 'ntp';
+ if (($distro =~ /^ubuntu/) && ($version <= 8)) {
+ $daemon{'cups'} = 'cupsys';
+ }
}
if (! -x $checker_bin) {
- print &mt('Could not check runlevel status for MySQL or Apache.')."\n";
+ print &mt('Could not check runlevel status for MySQL or Apache')."\n";
return;
}
my $rlstr = join('',@runlevels);
my $nrlstr = join('',@norunlevels);
- foreach my $type ('apache','mysql','ntp','cups') {
- my $service;
- if ($type eq 'apache') {
- $service = $webserver;
- } elsif ($type eq 'mysql') {
- $service = $mysqldaemon;
- } elsif ($type eq 'cups') {
- $service = $cupsdaemon;
- } elsif ($type eq 'ntp') {
- $service = $ntpdaemon;
- }
+ foreach my $type ('apache','mysql','ntp','cups','memcached') {
+ my $service = $daemon{$type};
my $command = $checker_bin.' --list '.$service;
+ if ($type eq 'cups') {
+ if ($distro =~ /^(?:debian|ubuntu)(\d+)/) {
+ my $version = $1;
+ if (($distro =~ /^ubuntu/) && ($version <= 8)) {
+ $command = $checker_bin.' --list cupsys';
+ }
+ }
+ }
my $results = `$command`;
my $tofix;
if ($results eq '') {
- if (($type eq 'apache') || ($type eq 'mysql')) {
+ if (($type eq 'apache') || ($type eq 'mysql') || ($type eq 'ntp')) {
if ($distro =~ /^(debian|ubuntu)/) {
- $tofix = "$checker_bin --level $nrlstr $service off\n";
+ $tofix = "update-rc.d $type defaults";
} else {
$tofix = "$checker_bin --add $service\n";
}
@@ -538,6 +591,13 @@
}
}
}
+ if (!$fixapache) {
+ foreach my $module ('headers.load','expires.load') {
+ unless (-l "/etc/apache2/mods-enabled/$module") {
+ $fixapache = 1;
+ }
+ }
+ }
} elsif ($distro =~ /^(?:suse|sles)([\d\.]+)$/) {
my $apache = 'apache';
if ($1 >= 10) {
@@ -580,7 +640,7 @@
if (ref($tostop) eq 'HASH') {
%stopsrvcs = %{$tostop};
}
- foreach my $service ('cups') {
+ foreach my $service ('cups','memcached') {
next if (exists($stopsrvcs{$service}));
my $daemon = $service;
if ($service eq 'cups') {
@@ -981,7 +1041,7 @@
print "\n".&mt('Checking system status ...')."\n";
my $dsn = "DBI:mysql:database=mysql";
-my ($distro,$gotprereqs,$packagecmd,$updatecmd,$installnow,$recommended,
+my ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$recommended,
$dbh,$has_pass,$has_lcdb,$downloadstatus,$filetouse,$production,
$testing,$apachefw) = &check_required($instdir,$dsn);
if ($distro eq '') {
@@ -992,6 +1052,13 @@
&mt('Stopping execution.')."\n";
exit;
}
+if ($localecmd ne '') {
+ print "\n".&mt('Although the LON-CAPA application itself is localized for a number of different languages, the default locale language for the Linux OS on which it runs should be US English.')."\n";
+ print "\n".&mt('Run the following command from the command line to set the default language for your OS, and then run this LON-CAPA installation set-up script again.')."\n\n".
+ $localecmd."\n\n".
+ &mt('Stopping execution.')."\n";
+ exit;
+}
if (!$gotprereqs) {
print "\n".&mt('The LONCAPA-prequisites package is not installed.')."\n".
&mt('The following command can be used to install the package (and dependencies):')."\n\n".
@@ -1011,7 +1078,7 @@
&mt('Stopping execution.')."\n";
exit;
} else {
- ($distro,$gotprereqs,$packagecmd,$updatecmd,$installnow,
+ ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
$recommended,$dbh,$has_pass,$has_lcdb,$downloadstatus,
$filetouse,$production,$testing,$apachefw) =
&check_required($instdir,$dsn);
@@ -1392,19 +1459,25 @@
if (ref($stopsrvcs) eq 'HASH') {
my @stopping = sort(keys(%{$stopsrvcs}));
if (@stopping) {
- my $kill_list = join("',' ",@stopping);
+ my $kill_list = join("', '",@stopping);
if ($kill_list) {
$kill_list = "'".$kill_list."'";
- &print_and_log("\n".&mt('Killing unneccessary services ([_1] daemon(s)).',$kill_list)."\n");
- foreach my $daemon (@stopping) {
- my $service = $daemon;
- &print_and_log(`/etc/init.d/$service stop`);
- &print_and_log(&mt('Removing [_1] from startup.',$service)."\n");
- if ($daemon eq 'cupsd') {
- $service = 'cups';
+ &print_and_log("\n".&mt('Killing unnecessary services ([_1] daemon(s)).',$kill_list)."\n");
+ foreach my $service (@stopping) {
+ my $daemon = $service;
+ if ($service eq 'cups') {
+ $daemon = 'cupsd';
+ if ($distro =~ /^(?:debian|ubuntu)(\d+)/) {
+ my $version = $1;
+ if (($distro =~ /^ubuntu/) && ($version <= 8)) {
+ $daemon = 'cupsys';
+ }
+ }
}
+ &print_and_log(`/etc/init.d/$daemon stop`);
+ &print_and_log(&mt('Removing [_1] from startup.',$service)."\n");
if ($distro =~ /^(debian|ubuntu)/) {
- &print_and_log(`/usr/sbin/sysv-rc-conf $service off`);
+ &print_and_log(`update-rc.d -f $daemon remove`);
} else {
&print_and_log(`chkconfig --del $service`);
}
@@ -1572,17 +1645,25 @@
sub copy_apache2_debconf {
my ($instdir) = @_;
print_and_log(&mt('Copying loncapa [_1] config file to [_2] and pointing [_3] to it from sites-enabled.',"'apache2'","'/etc/apache2/sites-available'","'000-default symlink'")."\n");
- my $apache2_enabled_dir = '/etc/apache2/sites-enabled';
- my $apache2_available_dir = '/etc/apache2/sites-available';
- if (-l "$apache2_enabled_dir/000-default") {
- unlink("$apache2_enabled_dir/000-default");
- }
- if (-e "$apache2_available_dir/loncapa") {
- copy("$apache2_available_dir/loncapa","$apache2_available_dir/loncapa.original");
- }
- copy("$instdir/apache2.conf","$apache2_available_dir/loncapa");
- chmod(0444,"$apache2_available_dir/loncapa");
- symlink("$apache2_available_dir/loncapa","$apache2_enabled_dir/000-default");
+ my $apache2_sites_enabled_dir = '/etc/apache2/sites-enabled';
+ my $apache2_sites_available_dir = '/etc/apache2/sites-available';
+ if (-l "$apache2_sites_enabled_dir/000-default") {
+ unlink("$apache2_sites_enabled_dir/000-default");
+ }
+ if (-e "$apache2_sites_available_dir/loncapa") {
+ copy("$apache2_sites_available_dir/loncapa","$apache2_sites_available_dir/loncapa.original");
+ }
+ copy("$instdir/apache2.conf","$apache2_sites_available_dir/loncapa");
+ chmod(0444,"$apache2_sites_available_dir/loncapa");
+ symlink("$apache2_sites_available_dir/loncapa","$apache2_sites_enabled_dir/000-default");
+ my $apache2_mods_enabled_dir = '/etc/apache2/mods-enabled';
+ my $apache2_mods_available_dir = '/etc/apache2/mods-available';
+ foreach my $module ('headers.load','expires.load') {
+ unless (-l "$apache2_mods_enabled_dir/$module") {
+ symlink("$apache2_mods_available_dir/$module","$apache2_mods_enabled_dir/$module");
+ print_and_log(&mt('Enabling "[_1]" Apache module.',$module)."\n");
+ }
+ }
print_and_log("\n");
}
--raeburn1301318876--