On Thu, 1 Jul 2004, Michal Jaegermann wrote:
On Thu, Jul 01, 2004 at 02:23:53PM -0400, John Dennis wrote:
>
> No assumptions should be made about the format of the release string
> other than it collate correctly when presented to rpmvercmp (the
> comparison function in rpm which has specific well defined semantics).
How you are using rpmvercmp, say, in a shell script? AFAIK there is
no interface which would make that available. Or this is one of
those undocumented mysteries of rpm?
Hi Michal, look back through the messages about a month and you will
see a message concerning rpm package versions that I answered that pretty
muchh answers your question. In short its pretty easy to use the python
bindings or perl (RPM2) bindings to librpm to access rpmvercmp(). In my
original post, I think I gave a short inline perl example (i.e. a tiny
script using perl -e option to pass the script from the command line).
I definately do this at my work in various shell scripts.
Cheers..james
> Unfortunately we are pretty much stuck with n-v-r for
historical
> reasons.
Yep and you cannot forget epoch.
This I can reliably pick apart using --queryformat but now what?
In case you wonder if I need that in shell scripts and similar then
the answer is that indeed I do (and many others too). A comparison
utility which would compare (or even collate but that I can do
myself) according to rpmvercmp would be really useful.
Again search back through the archives and you will see code to that
effect. Really what would be quite handy though for shell scripts is
a utility that could be called in the following ways:
rpmvercmp -v 1.1.1 -v 1.1.2
rpmvercmp -p x-1.1.1-2.0.i386.rpm -d
rpmvercmp -p x-1.1.1-2.0.i386.rpm -p x-1.1.2-1.1.i386.rpm
rpmvercmp -p x-1.1.1-2.0.i386.rpm -v 1.1.2
rpmvercmp -n x -v 1.1.2 -d
So basically, allow you to compare a:
- E:V-R string to an E:V-R string,
- package to the package in the db
- package to another package.
- package to an E:V-R string
- E:V:R string for a specific N to the database.
Would not be too hard to create such a script from RPM2 (and I suspect
easy to do so with the python bindings). Unfortunately, I am tied up in
non-rpm endevours at the moment, or I would gladly wip it up and send it
to the list. Maybe tonight I will have time, but no promises.
Cheers...james
Michal