Mailinglist Archive: opensuse-security (499 mails)

< Previous Next >
Re: [suse-security] Alternative for missing patch descriptions, was: No "patches" file for apache update in 7.1
sorry, some scripts ahead; but hopefully of some use to someone, they
were for me.

cheers, lars

On Mon, Jun 24, 2002 at 12:59:50AM +0200, Roman Drahtmueller wrote:
> > >> > Fou4s is not picking up the apache update for 7.1. It appears that
> > >> > SuSE has not posted the file to "patches" yet, although the actual
> > >> > RPMs have been posted.
> > >> As long as the package description is missing, both YOU and fou4s will not
> > >> work. I just verified that it is not on ftp.gwdg.de yet. Would be nice ...
> > >
> > >
> > > Dealing with it.
> >
> > Has this fallen through the cracks? There still is no patch
> > description posted.
> >
>
> It's partly solved - we have multiple architectures that don't build due
> to heat problems that we can't solve easily. We have the necessary cooling
> power, but a defect forces us to turn off. The patch files can't be
> written until the archs have built.
>
> Be sure it hasn't slipped through.
>
> Thanks,
> Roman.

in the mean time, what about

% mirror mirror.get_ls-laRt
% parse_listings_for_newer_rpm_versions SuSE-updates/i386/update/7.1/ls-laRt > available_newer_versions
% filenames_to_wget_commands < available_newer_versions > wget.sh
% less wget.sh
% vi wget.sh
% bash wget.sh

you will need perl, mirror, wget

mirror.get_ls-laRt looks like
------------------------------
# get the directory structure and recursive directory listing
# adjust this to your nearest mirror site and your local directory structure
package=patches
site=ftp.gwdg.de
# Keep all local_dirs relative to here
local_dir=/home/lars/SuSE-updates/i386/update/7.1/
remote_dir=/pub/linux/suse/ftp.suse.com/suse/i386/update/7.1/
store_remote_listing=ls-laRt
# ls_lR_file=ls-laRt
passive_ftp=true
do_deletes=false
get_missing=no
------------------------------

parse_listings_for_newer_rpm_versions is
------------------------------
#!/usr/bin/perl

sub vcmp {
# this only works if the arguments have comparable structure,
# i.e. have the same versioning scheme
# it *will* break if old version is 20010512-7 and new version 2.5.4-8
my ($a,$b)=@_;
$a =~ s/(\d+)/sprintf "%04i",$1/eg;
$b =~ s/(\d+)/sprintf "%04i",$1/eg;
$a cmp $b;
};

# reaad in locally installe packe list, remember the versions
$|=1;
open IN,"rpm -qa|" or die "cannot open 'rpm -qa|': $!\n";
print STDERR "parsing rpm -qa| ... ";
while (<IN>) {
/(.*)-([^-]+)-(\d+)/;
$installed{$1}="$2-$3";
}
print STDERR "ok\n";
close IN;

require "lsparse.pl";

# lsparse prints each line to main'STORE. Or I did not find the right
# function/parameters. anyways, just mute it.
open STORE,">/dev/null" or die "could not STORE>/dev/null\n";

open IN,$ARGV[0] or die "cannot open $ARGV[0]: $!\n";

while (@ls_line=lsparse'line_unix(*IN)) { # ' to make vim happy
last if $ls_line[0] eq "";
if ($ls_line[0] =~ m|/([^/]*?)-([^-]+)-(\d+)(\.i386)?.rpm|) {
print "# $1\t$installed{$1}\t$2-$3\n$ls_line[0]\n"
if $installed{$1}
and vcmp("$2-$3",$installed{$1}) > 0;
}
else {
# print STDERR "unmatched filename $ls_line[0]\n";
}
}
------------------------------

and filenames_to_wget_commands is
------------------------------
#!/usr/bin/perl

# adjust this and --cut-dirs below to your mirror site
$BASE_URL='ftp://ftp.gwdg.de/pub/linux/suse/ftp.suse.com/suse/update/7.1';
$AbsolutWGET=
"/usr/bin/wget --tries=2 --passive-ftp --directory-prefix=$DATA_DIR --mirror";
$WGET= "$AbsolutWGET --no-host-directories --cut-dirs=5";

$dontget = qr(/kernel/);
$getonly = ""; # qr(/n2/);

while (<>) {
next if /^#/;
next if /$dontget/;
next if $getonly and not /$getonly/;
s|^\.|$WGET $BASE_URL/|;
print;
}
------------------------------


< Previous Next >
Follow Ups