--- loncom/debugging_tools/modify_config_files.pl 2011/05/31 02:55:15 1.12 +++ loncom/debugging_tools/modify_config_files.pl 2019/10/02 22:28:24 1.16 @@ -2,7 +2,7 @@ # # The LearningOnline Network # -# $Id: modify_config_files.pl,v 1.12 2011/05/31 02:55:15 raeburn Exp $ +# $Id: modify_config_files.pl,v 1.16 2019/10/02 22:28:24 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -37,15 +37,20 @@ B =head1 SYNOPSIS This script modifies /etc/my.cnf and one of: /etc/yum.conf -(for Fedora/CentOS/Scientific Linux/RHEL5), /etc/apt/sources.list -(for Debian/Ubuntu) and /etc/sysconfig/rhn/sources (for RHEL4). +(for CentOS/Scientific Linux/RHEL >=5 and <8), /etc/apt/sources.list +(for Debian/Ubuntu), /etc/sysconfig/rhn/sources (for RHEL4), +and /etc/yum.repos.d/loncapa.repo (Fedora >= 21; Oracle Linux; +CentOS/RHEL >= 8). =head1 DESCRIPTION -This script modifies /etc/my.cnf and /etc/yum.conf or /etc/apt/sources -or /etc/sysconfig/rhn/sources to ensure certain parameters are set -properly. The LON-CAPA yum repositories are added to /etc/yum.conf or -/etc/sysconfig/rhn/sources and the LON-CAPA apt repositories are added to +This script modifies /etc/my.cnf, /etc/yum.conf, /etc/yum.repos.d/loncapa.repo, +/etc/apt/sources, or /etc/sysconfig/rhn/sources to ensure certain +parameters are set properly. + +The LON-CAPA yum repositories are added to /etc/yum.conf, +/etc/yum.repos.d/loncapa.repo, /etc/sysconfig/rhn/sources +and the LON-CAPA apt repositories are added to /etc/apt/sources.list. The /etc/my.cnf file is modified to set the wait_timeout to 1 year. Backup @@ -69,14 +74,20 @@ my $yum_status; my $loninst = 'http://install.loncapa.org'; my $loninst_re = 'http://install\.loncapa\.org'; if ($dist =~ /^fedora(\d+)$/) { + my $file = '/etc/yum.conf'; my $ver = $1; my $gpgchk = '0'; my $gpg = "$loninst/versions/fedora/RPM-GPG-KEY-loncapa"; + my $nobackup; if ($ver > 6) { $gpgchk = '1'; } + if ($ver >= 21) { + $file = '/etc/yum.repos.d/loncapa.repo'; + $nobackup = 1; + } $yum_status = - &update_file('/etc/yum.conf', + &update_file($file, [{section => 'loncapa-updates-basearch', key => 'name=', value => 'Fedora Core $releasever LON-CAPA $basearch Updates', @@ -87,7 +98,7 @@ if ($dist =~ /^fedora(\d+)$/) { key => 'gpgcheck=', value => $gpgchk, }, {section => 'loncapa-updates-basearch', - key => 'gpg=', + key => 'gpgkey=', value => $gpg, }, {section => 'loncapa-updates-noarch', key => 'name=', @@ -99,13 +110,14 @@ if ($dist =~ /^fedora(\d+)$/) { key => 'gpgcheck=', value => $gpgchk, }, {section => 'loncapa-updates-noarch', - key => 'gpg=', + key => 'gpgkey=', value => $gpg, - }]); -} elsif ($dist =~ /^(rhes|centos|scientific)(\d+)$/) { + }],$nobackup); +} elsif ($dist =~ /^(rhes|centos|scientific|oracle)(\d+)$/) { my $type = $1; my $ver = $2; my $longver = $ver; + my $nobackup; if ($type eq 'rhes') { if ($ver == 4) { $longver = '4ES'; @@ -132,11 +144,22 @@ if ($dist =~ /^fedora(\d+)$/) { gpg => 'versions/scientific/RPM-GPG-KEY-loncapa', gpgchk => 1, }, + oracle => { + title => 'Oracle Linux', + path => 'oracle/loncapa', + gpg => 'versions/oracle/RPM-GPG-KEY-loncapa', + gpgchk => 1, + }, ); if (ref($info{$type}) eq 'HASH') { if ($ver > 4) { + my $file = '/etc/yum.conf'; + if (($ver > 7) || ($type eq 'oracle')) { + $file = '/etc/yum.repos.d/loncapa.repo'; + $nobackup = 1; + } $yum_status = - &update_file('/etc/yum.conf', + &update_file($file, [{section => 'loncapa-updates-basearch', key => 'name=', value => $info{$type}{title}.' $releasever LON-CAPA $basearch Updates', @@ -161,7 +184,7 @@ if ($dist =~ /^fedora(\d+)$/) { }, {section => 'loncapa-updates-noarch', key => 'gpgkey=', value => "$loninst/$info{$type}{gpg}", - }]); + }],$nobackup); } elsif (($type eq 'rhes') && ($ver == 4)) { my %rhn = ( basearch => { @@ -190,6 +213,26 @@ if ($dist =~ /^fedora(\d+)$/) { regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+hardy\s+main', text => "deb $loninst/ubuntu/ hardy main", }, + ubuntu10 => { + regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+lucid\s+main', + text => "deb $loninst/ubuntu/ lucid main", + }, + ubuntu12 => { + regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+precise\s+main', + text => "deb $loninst/ubuntu/ precise main", + }, + ubuntu14 => { + regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+trusty\s+main', + text => "deb $loninst/ubuntu/ trusty main", + }, + ubuntu16 => { + regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+xenial\s+main', + text => "deb $loninst/ubuntu/ xenial main", + }, + ubuntu18 => { + regexp => '\s*deb\s+'.$loninst_re.'/ubuntu/\s+bionic\s+main', + text => "deb $loninst/ubuntu/ bionic main", + }, ); my $apt_status; if (defined($apt_get_source{$dist})) { @@ -225,12 +268,14 @@ exit $exitvalue; sub update_file { - my ($file,$newdata) = @_; + my ($file,$newdata,$nobackup) = @_; return 1 if (! -e $file); - my $backup = $file.'.backup'; - if (! copy($file,$backup)) { - warn "**** Error: Unable to make backup of $file"; - return 0; + unless ($nobackup) { + my $backup = $file.'.backup'; + if (! copy($file,$backup)) { + warn "**** Error: Unable to make backup of $file"; + return 0; + } } my ($filedata) = &parse_config_file($file); if (! ref($filedata)) { warn "**** Error: $filedata"; return 0;}