Diff for /loncom/build/CHECKRPMS between versions 1.2 and 1.9

version 1.2, 2006/10/04 17:56:44 version 1.9, 2007/09/13 21:50:37
Line 39  to LON-CAPA systems. distprobe is used t Line 39  to LON-CAPA systems. distprobe is used t
   
 The utility which is used to complete the check depends on the distro:  The utility which is used to complete the check depends on the distro:
   
 fedora - yum  fedora, rhel 5/5+, centos, scientific - yum
 suse 9.X and sles9 - you  suse 9.X and sles9 - you
 suse 10.X and sles10 - rug  suse 10.2,10.3 - zypper 
   sles10,suse10.1 - rug
 rhel 4 - up2date  rhel 4 - up2date
 others - check-rpms  others - check-rpms
   
Line 80  if ($distro =~ /^fedora\d+$/) { Line 81  if ($distro =~ /^fedora\d+$/) {
     $cmd = 'yum update';      $cmd = 'yum update';
     &prepare_msg($tmpfile,$cmd);      &prepare_msg($tmpfile,$cmd);
     ($send,$addsubj) = &check_with_yum($tmpfile);      ($send,$addsubj) = &check_with_yum($tmpfile);
 } elsif ($distro =~ /^(suse|sles)9\.\d$/) {  } elsif ($distro =~ /^(suse|sles)9\.?\d?$/) {
     $cmd = 'you';      $cmd = 'you';
     &prepare_msg($tmpfile,$cmd);      &prepare_msg($tmpfile,$cmd);
     ($send,$addsubj) = &check_with_you($tmpfile);      ($send,$addsubj) = &check_with_you($tmpfile);
 } elsif ($distro =~ /^(suse|sles)10\.?\d?$/) {  } elsif ($distro =~ /^suse10\.(\d)$/) {
       my $version =$1;
       if ($version > 1) { 
           $cmd = 'zypper up';
           &prepare_msg($tmpfile,$cmd);
           ($send,$addsubj) = &check_with_zypper($tmpfile);
       } else {
           $cmd = 'rug up';
           &prepare_msg($tmpfile,$cmd);
           ($send,$addsubj) = &check_with_rug($tmpfile);
       }
   } elsif ($distro =~ /^sles10$/) {
     $cmd = 'rug up';      $cmd = 'rug up';
     &prepare_msg($tmpfile,$cmd);      &prepare_msg($tmpfile,$cmd);
     ($send,$addsubj) = &check_with_rug($tmpfile);      ($send,$addsubj) = &check_with_rug($tmpfile);
 } elsif ($distro =~ /^rhes4$/) {  } elsif ($distro =~ /^rhes(\d+)$/) {
     $cmd ='up2date -u --nox';      my $version = $1;
       if ($version == 4) {
           $cmd ='up2date -u --nox';
           &prepare_msg($tmpfile,$cmd);
           ($send,$addsubj) = &check_with_up2date($tmpfile);
       } elsif ($version > 4) {
           $cmd = 'yum update';
           &prepare_msg($tmpfile,$cmd);
           ($send,$addsubj) = &check_with_yum($tmpfile);
       }
   } elsif ($distro =~ /^centos\d+$/) {
       $cmd = 'yum update';
       &prepare_msg($tmpfile,$cmd);
       ($send,$addsubj) = &check_with_yum($tmpfile);
   } elsif ($distro =~ /^scientific\d+\.\d$/) {
       $cmd = 'yum update';
     &prepare_msg($tmpfile,$cmd);      &prepare_msg($tmpfile,$cmd);
     ($send,$addsubj) = &check_with_up2date($tmpfile);      ($send,$addsubj) = &check_with_yum($tmpfile);
 } else {  } else {
     $cmd = '/usr/local/bin/check-rpms --update';      $cmd = '/usr/local/bin/check-rpms --update';
     ($send,$addsubj) = &check_with_checkrpms($tmpfile);      ($send,$addsubj) = &check_with_checkrpms($tmpfile);
Line 113  $cmd Line 140  $cmd
   
 to bring it up to date.  to bring it up to date.
   
 This is very important for the security of your server.  The table below lists the packages which need to be updated.  This is very important for the security of your server.  The packages which need to be updated are listed below.
   
 ENDHEADER  ENDHEADER
     close(TMPFILE);      close(TMPFILE);
Line 126  sub check_with_you { Line 153  sub check_with_you {
     my $sendflag = 0;      my $sendflag = 0;
     my $append_to_subj;      my $append_to_subj;
   
     if (open (PIPE, "$you -d -k -l en 2>&1 |")) {      if (open (PIPE, "$you -k -len 2>&1 |")) {
         my $output=<PIPE>;          my $output=<PIPE>;
         close(PIPE);          close(PIPE);
         chomp $output;          chomp $output;
         unless ($output eq 'No updates available.') {          unless ($output eq 'No updates available.') {
             my $command = $you.' -s  -k -l en |grep ^[^I]  >>'.$tmpfile;              if (open (PIPE, "$you -s -d -len |grep ^INSTALL |")) {
             system($command);                  my @updates = <PIPE>;
             $sendflag = 1;                  close(PIPE);
             $append_to_subj = ' RPMS to upgrade';                  my $allpackages;
                   foreach my $line (@updates) {
                       my $package = substr($line,rindex($line,'/')+1);
                       if ($package ne '') {
                           $allpackages .= $package;
                       }
                   }
                   if ($allpackages ne '') {
                       open(TMPFILE,">>$tmpfile");
                       print TMPFILE $allpackages;
                       close(TMPFILE);
                       $sendflag = 1;
                       $append_to_subj = ' RPMS to upgrade';
                   }
               } else {
                   $sendflag = 1;
                   $append_to_subj = ' Error running RPM update script';
               }
         }          }
     } else {      } else {
         $sendflag = 1;          $sendflag = 1;
Line 181  sub check_with_up2date { Line 225  sub check_with_up2date {
     if (open (PIPE, "$up2date -l 2>&1 |")) {      if (open (PIPE, "$up2date -l 2>&1 |")) {
         my @result=<PIPE>;          my @result=<PIPE>;
         close(PIPE);          close(PIPE);
           my $output; 
           foreach my $line (@result) {
               if ($line =~ /^The following Packages were marked to be skipped by your configuration:/) {
                   last;
               } else {
                   $output .= $line;
               }
           } 
         if (@result > 0) {          if (@result > 0) {
             my $output = join('',@result);  
             if ($output =~ /Fetching Obsoletes list/) {              if ($output =~ /Fetching Obsoletes list/) {
                 $up2date_error = 0;                  $up2date_error = 0;
                 if ($output =~ /Name\s+Version\s+Rel\s+[\n\r\f]+\-+[\n\r\f]+(.+)/s) {                  if ($output =~ /Name\s+Version\s+Rel\s+[\n\r\f]+\-+[\n\r\f]+(.+)/s) {
                     my $packagelist = $1;                      my $packagelist = $1;
                     unless (($packagelist =~ /^The following Packages were marked to be skipped by your configuration:/) || ($packagelist eq '')) {                      if ($packagelist ne '' && $packagelist !~ /^[\s\n\r\f]+$/) {
                         open(TMPFILE,">>$tmpfile");                          open(TMPFILE,">>$tmpfile");
                         print TMPFILE $packagelist;                          print TMPFILE $packagelist;
                         close(TMPFILE);                          close(TMPFILE);
Line 218  sub check_with_rug { Line 269  sub check_with_rug {
         chomp(@output);          chomp(@output);
         my @clean_output;          my @clean_output;
         foreach my $line (@output) {          foreach my $line (@output) {
             if ($line eq 'Waking up ZMD...') {              if ($line =~ /^Waking\sup\sZMD\.\.\./) {
                 next;                  next;
             } elsif ($line eq 'Done') {              } elsif ($line eq 'Done') {
                 next;                  next;
Line 232  sub check_with_rug { Line 283  sub check_with_rug {
                 last;                  last;
             } elsif ($line eq 'No updates are available.') {              } elsif ($line eq 'No updates are available.') {
                 last;                  last;
               } elsif ($line eq 'Downloading Packages...') {
                   last;
             } else {              } else {
                 push(@clean_output,$line);                  push(@clean_output,$line);
             }              }
Line 246  sub check_with_rug { Line 299  sub check_with_rug {
     } else {      } else {
         $append_to_subj = ' Error running RPM update check';          $append_to_subj = ' Error running RPM update check';
         $sendflag = 1;          $sendflag = 1;
       }
       return ($sendflag,$append_to_subj);
   }
   
   sub check_with_zypper {
       my ($tmpfile) = @_;
       my $zypper = '/usr/bin/zypper';
       my $sendflag = 0;
       my $append_to_subj;
       my $header;
       #
       # Execute zypper command to check for updates
       if (open (PIPE, "$zypper lu 2>&1 |")) {
           my @output=<PIPE>;
           close(PIPE);
           chomp(@output);
           my @clean_output;
           foreach my $line (@output) {
               if ($line eq 'Restoring system sources...') {
                   next;
               } elsif ($line =~ /^Parsing\smetadata\sfor\s/) {
                   next;
               } elsif ($line eq 'Parsing RPM database...') {
                   next;
               } elsif ($line  =~ /^Catalog\s+\|\s+Name\s+\|\s+Version\s+\|\s+Category\s+\|\s+Status$/) {
                   $header = $line."\n";
                   next;
               } elsif ($line =~ /^[-+]+$/) {
                   $header .= $line."\n";
                   next;
               } elsif ($line eq 'WARNING: These are only the updates affecting the updater itself.') {
                   next;
               } elsif ($line eq 'There are others available too.') {
                   next;
               } else {
                   push(@clean_output,$line);
               }
           }
           if (@clean_output > 0) {
               open(TMPFILE,">>$tmpfile");
               my $message = join("\n",@clean_output);
               print TMPFILE $header.$message;
               close(TMPFILE);
               $append_to_subj= ' RPMS to upgrade';
               $sendflag = 1;
           }
       } else {
           $append_to_subj = ' Error running RPM update check';
           $sendflag = 1;
     }      }
     return ($sendflag,$append_to_subj);      return ($sendflag,$append_to_subj);
 }  }

Removed from v.1.2  
changed lines
  Added in v.1.9


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>