Anders Blomdell wrote: > seth vidal wrote: >> On Wed, 2008-04-23 at 21:15 +0200, Anders Blomdell wrote: >>> seth vidal wrote: >>>> On Wed, 2008-04-23 at 21:02 +0200, Anders Blomdell wrote: >>>>> I have already found that out, the problem is that my.processTransaction() >>>>> silently refuses to install. >>>>> xpdf >>>>> xwnc >>>>> 10 Downloading Packages () >>>>> 11 11 ([<yum.sqlitesack.YumAvailablePackageSqlite object at 0x956744c>, >>>>> <yum.sqlitesack.YumAvailablePackageSqlite object at 0xc525bac>],) >>>>> 20 Check Package Signatures () >>>>> 30 Running Test Transaction () >>>>> Running rpm_check_debug >>>>> 40 Running Transaction () >>>> Well, in the case of the user - the transaction cannot be run, at all... >>>> Is that what you mean - when it is run as a user it is silent in its >>>> not-running-ness? >>> Exactly, and it makes me nervous that other things will silently be ignored as >>> well (even when running as root). I did not expect it to install anything when >>> run as an ordinary user, but I would like to get informed of what it couldn't >>> complete (which somehow brings me back to what started this thread). >>> >> understood - if you break up what processTransaction() does you can get >> more feedback. However, things like the above are why we're going to be >> workin specific items to break in the yum api to make programming to it >> better and more reliable. >> >> >> If you're interested in adding some input it's welcome. > With the following change to runTransaction in __init__.py: > > import sys > print >> sys.stderr, "Before" > errors = self.ts.run(cb.callback, '') > print >> sys.stderr, "After",errors > > This is what I get from an strace: > > write(2, "Before", 6) = 6 > write(2, "\n", 1) = 1 > futex(0x81ee458, FUTEX_WAKE, 1) = 0 > umask(022) = 022 > open("/var/lib/rpm/__db.000", O_RDWR|O_CREAT|O_LARGEFILE, 0644) = -1 EACCES (Per > mission denied) > umask(022) = 022 > open("/var/lib/rpm/__db.000", O_RDONLY|O_LARGEFILE) = 18 > write(17, "error: can\'t create transaction "..., 62) = 62 > close(18) = 0 > write(2, "After", 5) = 5 > write(2, " ", 1) = 1 > write(2, "[", 1) = 1 > write(2, "]", 1) = 1 > write(2, "\n", 1) = 1 > > All very reasonable, except for the fact that no errors are returned. To me it > looks like rpmUtils is to blame. OK, found it. Kind of shared error, fix is: --- __init__.py~ 2007-12-05 23:27:40.000000000 +0100 +++ __init__.py 2008-04-24 11:40:59.000000000 +0200 @@ -589,7 +589,7 @@ self.plugins.run('pretrans') errors = self.ts.run(cb.callback, '') - if errors: + if errors != None: raise Errors.YumBaseError, errors if not self.conf.keepcache: Reason for bug is non-obvious error return from rpmts_Run (rpmts-py.c) and python regarding 'if []:' and 'if None:' as equivalent: if (rc < 0) { list = PyList_New(0); return list; } else if (!rc) { Py_INCREF(Py_None); return Py_None; } Best regards Anders Blomdell -- Anders Blomdell Email: anders.blomdell@xxxxxxxxxxxxxx Department of Automatic Control Lund University Phone: +46 46 222 4625 P.O. Box 118 Fax: +46 46 138118 SE-221 00 Lund, Sweden _______________________________________________ Yum mailing list Yum@xxxxxxxxxxxxxxxxxxxx https://lists.dulug.duke.edu/mailman/listinfo/yum