Broken upgrade paths
seth vidal
skvidal at linux.duke.edu
Thu Jul 20 05:04:15 UTC 2006
On Thu, 2006-07-20 at 00:00 -0500, Tom 'spot' Callaway wrote:
> On Thu, 2006-07-20 at 00:51 -0400, Tom Lane wrote:
> > Jesse Keating <jkeating at redhat.com> writes:
> > > pkg FC5 devel
> >
> > > elinks elinks-0.11.0-2.3 elinks-0.11.1-4.1
> > > gawk gawk-3.1.5-6.3 gawk-3.1.5-11
> > > gnome-applet-vm gnome-applet-vm-0.0.7-2 gnome-applet-vm-0.1.0-0.rc1
> > > lockdev lockdev-1.0.1-9.2.1 lockdev-1.0.1-10
> > > lslk lslk-1.29-16.2.1 lslk-1.29-17
> > > lsof lsof-4.77-1 lsof-4.78-1
> > > procinfo procinfo-18-18.2.2 procinfo-18-19
> > > procps procps-3.2.6-3.5 procps-3.2.7-3
> > > psmisc psmisc-22.2-1.1 psmisc-22.2-5
> > > readahead readahead-1.2-2 readahead-1.3-1
> > > rsh rsh-0.17-34.1 rsh-0.17-35
> > > sudo sudo-1.6.8p12-4.1 sudo-1.6.8p12-7
> > > util-linux util-linux-2.13-0.20.4 util-linux-2.13-0.33
> > > vlock vlock-1.3-22.2.1 vlock-1.3-23
> > > words words-3.0-8.1 words-3.0-9
> > > am-utils am-utils-6.1.3-1.2.1 am-utils-6.1.5-3
> >
> > I must need to go back to RPM school, because AFAICS the devel version
> > should be considered newer in every one of those cases. What's the
> > problem exactly?
>
> RPM doesn't really treat these numbers as integers. Instead of treating
> that . as a decimal separator for a whole number like our brain does, it
> just treats it as a string.
>
> so, 18.2.2 is > 19 for rpm, because it is a longer string.
>
> (This is a drastic oversimplification, but it should serve the purpose)
>
> The best way to avoid this problem? Keep your Release field as a whole
> number, then rpm knows that 18 < 19.
umm 18.2.2 is < 19
rpmUtils.miscutils.compareEVR(('0','1','18.2.2'),('0','1','19'))
-1
rpm compares via tokens.
so if you look at the string as:
18 and 2 and 2
and the other as
19
then rpm starts from left to right and compares the first token it finds
that lines up.
it sees 18 and 19
18 < 19
therefore 19 wins.
no more comparison. EOD.
-sv
More information about the Fedora-maintainers
mailing list