[LON-CAPA-cvs] cvs: doc /install/linux install.pl
raeburn
raeburn at source.lon-capa.org
Thu Aug 1 08:56:58 EDT 2024
raeburn Thu Aug 1 12:56:58 2024 EDT
Modified files:
/doc/install/linux install.pl
Log:
- If default language is not en_US.UTF-8 check for available languages, and
en_US.UTF-8 is not found, provide apprpriate advice for current distro.
-------------- next part --------------
Index: doc/install/linux/install.pl
diff -u doc/install/linux/install.pl:1.93 doc/install/linux/install.pl:1.94
--- doc/install/linux/install.pl:1.93 Sun Jul 28 14:04:41 2024
+++ doc/install/linux/install.pl Thu Aug 1 12:56:58 2024
@@ -78,7 +78,7 @@
&mt('Stopping execution.')."\n";
exit;
} else {
- print LOG '$Id: install.pl,v 1.93 2024/07/28 14:04:41 raeburn Exp $'."\n";
+ print LOG '$Id: install.pl,v 1.94 2024/08/01 12:56:58 raeburn Exp $'."\n";
}
#
@@ -437,7 +437,7 @@
sub check_locale {
my ($distro) = @_;
- my ($fh,$langvar,$command,$earlyout);
+ my ($fh,$langvar,$command,$langcmd,$earlyout,$default);
$langvar = 'LANG';
if ($distro =~ /^(ubuntu|debian)/) {
if (!open($fh,"</etc/default/locale")) {
@@ -491,12 +491,13 @@
$earlyout = 1;
}
}
- return if ($earlyout);
+ return () if ($earlyout);
my @data = <$fh>;
chomp(@data);
+ close($fh);
foreach my $item (@data) {
if ($item =~ /^\Q$langvar\E=\"?([^\"]*)\"?/) {
- my $default = $1;
+ $default = $1;
if ($default ne 'en_US.UTF-8') {
if ($distro =~ /^debian/) {
$command = 'locale-gen en_US.UTF-8'."\n".
@@ -517,8 +518,72 @@
last;
}
}
- close($fh);
- return $command;
+# Check for locales
+ if ($default ne 'en_US.UTF-8') {
+ my ($has_us_english,$has_other_code,$has_other_lang);
+ if (open(PIPE,"locale -a 2>/dev/null |")) {
+ while (<PIPE>) {
+ chomp();
+ next if (/^(C(|\.utf8)|POSIX)$/i);
+ if (/^en_US\.utf8/i) {
+ $has_us_english = 1;
+ } elsif (/^[A-Za-z]{2}_[A-Za-z]{2}/) {
+ $has_other_code = 1;
+ } elsif (/^[A-Za-z]{3,}/) {
+ $has_other_lang = 1;
+ }
+ }
+ close(PIPE);
+ if (!$has_us_english) {
+ if ($has_other_code || $has_other_lang) {
+ if ($distro =~ /^ubuntu/) {
+ $langcmd = "sudo apt-get install language-pack-en\n";
+ } elsif ($distro =~ /^debian/) {
+ $langcmd = "apt-get install language-pack-en\n";
+ } elsif ($distro =~ /^(suse|sles)/) {
+ $langcmd = &mt('Use yast: System > Language > Primary Language = English')."\n";
+ } elsif ($distro =~ /^fedora(\d+)$/) {
+ if ($1 > 23) {
+ $langcmd = "dnf install glibc-langpack-en\n";
+ } else {
+ $langcmd = "yum install glibc-common\n";
+ }
+ } elsif ($distro =~ /^(?:rhes|centos|scientific|oracle|rocky|alma)(\d+)/) {
+ if ($1 > 7) {
+ $langcmd = "dnf install glibc-langpack-en\n";
+ } else {
+ $langcmd = "yum install glibc-common\n";
+ }
+ }
+ } else {
+ if ($distro =~ /^ubuntu/) {
+ $langcmd = "sudo apt-get install language-pack-en\n";
+ } elsif ($distro =~ /^debian/) {
+ $langcmd = "apt-get install language-pack-en\n";
+ } elsif ($distro =~ /^(suse|sles)/) {
+ $langcmd = &mt('Use yast: System > Language > Primary Language = English')."\n";
+ } elsif ($distro =~ /^fedora(\d+)$/) {
+ if ($1 > 23) {
+ $langcmd = &mt('Either install all languages[_1]or install English only[_2]',
+ ":\ndnf install glibc-all-langpacks\n\n",
+ ":\ndnf install glibc-langpack-en\n");
+ } else {
+ $langcmd = "yum install glibc-common\n";
+ }
+ } elsif ($distro =~ /^(?:rhes|centos|scientific|oracle|rocky|alma)(\d+)/) {
+ if ($1 > 7) {
+ $langcmd = &mt('Either install all languages[_1]or install English only[_2]',
+ ":\ndnf install glibc-all-langpacks\n\n",
+ ":\ndnf install glibc-langpack-en\n");
+ } else {
+ $langcmd = "yum install glibc-common\n";
+ }
+ }
+ }
+ }
+ }
+ }
+ return ($command,$langcmd);
}
sub check_required {
@@ -529,11 +594,11 @@
}
my $gotprereqs = &check_prerequisites($packagecmd,$distro);
if ($gotprereqs eq '') {
- return ($distro,$gotprereqs,'',$packagecmd,$updatecmd);
+ return ($distro,$gotprereqs,'','',$packagecmd,$updatecmd);
}
- my $localecmd = &check_locale($distro);
+ my ($localecmd,$langcmd) = &check_locale($distro);
unless ($localecmd eq '') {
- return ($distro,$gotprereqs,$localecmd);
+ return ($distro,$gotprereqs,$localecmd,$langcmd);
}
my ($mysqlon,$mysqlsetup,$mysqlrestart,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,
%recommended,$downloadstatus,$filetouse,$production,$testing,$apachefw,
@@ -575,7 +640,7 @@
$mysqlrestart = 'sudo ';
}
$mysqlrestart .= 'service mysql restart';
- return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
+ return ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart);
} else {
if ($mysqlsetup eq 'noroot') {
$recommended{'mysqlperms'} = 1;
@@ -604,7 +669,7 @@
$recommended{'stopsrvcs'} = &chksrvcs($distro,$tostop);
($recommended{'download'},$downloadstatus,$filetouse,$production,$testing)
= &need_download($distro,$instdir);
- return ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
+ return ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,
$mysqlrestart,\%recommended,$dbh,$has_pass,$mysql_unix_socket,
$has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
$uses_systemctl,$hostname,$hostip,$sslhostsfilesref,$has_std,$has_int,
@@ -1989,7 +2054,7 @@
print "\n".&mt('Checking system status ...')."\n\n";
my $dsn = "DBI:mysql:database=mysql";
-my ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart,
+my ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,$mysqlrestart,
$recommended,$dbh,$has_pass,$mysql_unix_socket,$has_lcdb,$downloadstatus,
$filetouse,$production,$testing,$apachefw,$uses_systemctl,$hostname,$hostip,
$sslhostsfiles,$has_std,$has_int,$rewritenum,$nochgstd,$nochgint) =
@@ -2010,8 +2075,12 @@
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".
+ print "\n".&mt('Although the LON-CAPA application itself is localized for a number of different languages,[_1]the default locale language for the Linux OS on which it runs should be US English.',"\n")."\n\n";
+ if ($langcmd ne '') {
+ print &mt('Use the following command(s) or action(s) to install a required language package.')."\n\n".
+ "$langcmd\n";
+ }
+ print &mt('Run the following command from the command line to set the default language for your OS,[_1]and then run this LON-CAPA installation set-up script again.',"\n")."\n\n".
$localecmd."\n\n".
&mt('Stopping execution.')."\n";
exit;
@@ -2035,7 +2104,7 @@
&mt('Stopping execution.')."\n";
exit;
} else {
- ($distro,$gotprereqs,$localecmd,$packagecmd,$updatecmd,$installnow,
+ ($distro,$gotprereqs,$localecmd,$langcmd,$packagecmd,$updatecmd,$installnow,
$mysqlrestart,$recommended,$dbh,$has_pass,$mysql_unix_socket,
$has_lcdb,$downloadstatus,$filetouse,$production,$testing,$apachefw,
$uses_systemctl,$hostname,$hostip,$sslhostsfiles,$has_std,$has_int,
More information about the LON-CAPA-cvs
mailing list