> > > > 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
