Kevin Dalley writes: > > >Try replacing cmpvers in /usr/lib/dpkg/methods/ftp/install with the >following function. While the maintainer has not yet blessed this >change, it seems to work for me. > ># compare two versions (taken from dpkg docs) >sub cmpvers { > ($a,$b) = @_; > my ($cm, $ad, $bd); > if( defined($a) && !defined($b)) { return 1; } > if(!defined($a) && !defined($b)) { return 0; } > if(!defined($a) && defined($b)) { return -1; } > do { > $a =~ s/^\D*//; $ad= $&; $ad =~ s/\W/ /g; > $b =~ s/^\D*//; $bd= $&; $bd =~ s/\W/ /g; > $cm = $ad cmp $bd; return $cm if $cm; > $a =~ s/^\d*//; $ad= $&; > $b =~ s/^\d*//; $bd= $&; > $cm = $ad cmp $bd; return $cm if $cm; > } while (length($a) && length($b)); > return length($a) cmp length($b); >} >
Changing <=> to cmp changes the ordering I think. My newest version (not yet out) will use dpkg --compare-versions to get it really right. Andy.