> >
> > I tried to parse rpminst output and to remove only those packages
that
> > has really been installed. Obviously it does not always work,
rpmdrake
> > somwtimes thinks packages has not been installed when it actually
was
> > and I need as many test cases (including rpminst output in the first
> > place) as possible.
> >
> > Alternative is to rescan lists after every installation. I am afraid
of
> > people starting complaining that it is too slow.
> 
> it will be very slow.
> Instead of scanning rpminst output, what about implement this in
rpminst
> ? i.e write the list of package it manage to send to rpm for
> installation. After you just have to scan this list. Or rpminst may
just
> send list of package it fails to installed. In fact implement this in
> rpminst as it is the core so that rpmdrake should just have to gather
> informations making it be lighter.
> 

that is exactly what happens now and is proven to be ehh ... fragile :-)

The real problem is, sometimes there is no information which RPM has
been and which has not been installed. It is easy to test - just corrupt
some RPM (write random bytes in the middle to preserve headers) and
start installation of several RPMs at once including corrupted. Run it
with --verbose if you want to see what happens. You get just general
"URPMI FAILED" status even if some packages has really been installed -
but you never know which ones.

So there is at least on case when you *must* to rescan just to find out
which packages have actually been installed. Sorry, I do not know rpm
internals enough to provide workaround (at least in near future).

-andrej

Reply via email to