--- loncom/build/CHECKRPMS 2017/04/09 14:54:02 1.17 +++ loncom/build/CHECKRPMS 2024/10/24 16:38:32 1.20 @@ -3,7 +3,7 @@ # The LearningOnline Network with CAPA # Checks status of RPM packages on system. # -# $Id: CHECKRPMS,v 1.17 2017/04/09 14:54:02 raeburn Exp $ +# $Id: CHECKRPMS,v 1.20 2024/10/24 16:38:32 raeburn Exp $ # # Copyright Michigan State University Board of Trustees # @@ -32,7 +32,7 @@ =head1 NAME -B - automated status report about RPMs (RHEL/Fedora/CentOS/SuSE) +B - automated status report about RPMs (RHEL/Fedora/CentOS/Oracle Linux/SuSE/SLES) or debs (Debian/Ubuntu) on a system. =head1 DESCRIPTION @@ -42,11 +42,12 @@ to LON-CAPA systems. distprobe is used t The utility which is used to complete the check depends on the distro: -fedora, rhel >= 5, centos, scientific - yum +fedora < 22; rhel (5, 6, 7); centos/scientific/oracle linux <=7 - yum fedora >= 22 - dnf +rhel/centos/oracle/rocky/alma linux >= 8 - dnf suse 9.X and sles9 - you -suse 10.2,10.3,11.1,11.2,11.3,11.4,sles11 - zypper -sles10,suse10.1 - rug +suse 10.2, 10.3, 11.X and 12.X; sles (>= 11) - zypper +sles10, suse10.1 - rug rhel 4 - up2date debian, ubuntu - apt-get others - check-rpms @@ -98,11 +99,11 @@ if ($distro =~ /^fedora(\d+)$/) { if ($version > 21) { $cmd = 'dnf update'; &prepare_msg($tmpfile,$cmd); - ($send,$addsubj) = &check_with_dnf($tmpfile); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'dnf'); } else { $cmd = 'yum update'; &prepare_msg($tmpfile,$cmd); - ($send,$addsubj) = &check_with_yum($tmpfile); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'yum'); } } elsif ($distro =~ /^(suse|sles)9\.?\d?$/) { $cmd = 'you'; @@ -134,19 +135,26 @@ if ($distro =~ /^fedora(\d+)$/) { $cmd ='up2date -u --nox'; &prepare_msg($tmpfile,$cmd); ($send,$addsubj) = &check_with_up2date($tmpfile); - } elsif ($version > 4) { + } elsif ($version <= 7) { $cmd = 'yum update'; &prepare_msg($tmpfile,$cmd); - ($send,$addsubj) = &check_with_yum($tmpfile); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'yum'); + } else { + $cmd = 'dnf update'; + &prepare_msg($tmpfile,$cmd); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'dnf'); + } +} elsif ($distro =~ /^(?:centos|scientific|oracle|rocky|alma)(\d+)$/) { + my $version = $1; + if ($version <= 7) { + $cmd = 'yum update'; + &prepare_msg($tmpfile,$cmd); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'yum'); + } else { + $cmd = 'dnf update'; + &prepare_msg($tmpfile,$cmd); + ($send,$addsubj) = &check_with_yum_or_dnf($tmpfile,'dnf'); } -} elsif ($distro =~ /^centos\d+$/) { - $cmd = 'yum update'; - &prepare_msg($tmpfile,$cmd); - ($send,$addsubj) = &check_with_yum($tmpfile); -} elsif ($distro =~ /^scientific\d+$/) { - $cmd = 'yum update'; - &prepare_msg($tmpfile,$cmd); - ($send,$addsubj) = &check_with_yum($tmpfile); } elsif ($distro =~ /^(debian|ubuntu)\d+/) { $cmd = 'apt-get upgrade'; &prepare_msg($tmpfile,$cmd); @@ -226,48 +234,26 @@ sub check_with_you { return ($sendflag,$append_to_subj); } -sub check_with_yum { - my ($tmpfile) = @_; - my $yum = '/usr/bin/yum'; - my $sendflag = 0; - my $append_to_subj; - - # - # Execute yum command - my $command = $yum.' check-update '.'>>'.$tmpfile; - system($command); - - my $returnvalue = $?>>8; - - # - # Determine status of yum run - if (100 == $returnvalue) { - $sendflag = 1; - $append_to_subj = ' RPMS to upgrade'; - } elsif (0 != $returnvalue) { - $sendflag = 1; - $append_to_subj = ' Error running RPM update script'; +sub check_with_yum_or_dnf { + my ($tmpfile,$progname) = @_; + my $path_to_exec = '/usr/bin/'; + if ($progname eq 'dnf') { + $path_to_exec .= $progname; } else { - # yum returned 0, so everything is up to date. + $path_to_exec .= 'yum'; } - return ($sendflag,$append_to_subj); -} - -sub check_with_dnf { - my ($tmpfile) = @_; - my $dnf = '/usr/bin/dnf'; my $sendflag = 0; my $append_to_subj; # - # Execute dnf command - my $command = $dnf.' check-update '.'>>'.$tmpfile; + # Execute command + my $command = $path_to_exec.' check-update '.'>>'.$tmpfile; system($command); my $returnvalue = $?>>8; # - # Determine status of dnf run + # Determine status of yum or dnf run if (100 == $returnvalue) { $sendflag = 1; $append_to_subj = ' RPMS to upgrade'; @@ -275,7 +261,7 @@ sub check_with_dnf { $sendflag = 1; $append_to_subj = ' Error running RPM update script'; } else { - # dnf returned 0, so everything is up to date. + # yum or dnf returned 0, so everything is up to date. } return ($sendflag,$append_to_subj); }