On Sun, Jan 15, 2006 at 08:56:46AM -0500, seth vidal wrote: > On Sat, 2006-01-14 at 12:49 -0600, Albert Chin wrote: > > On Fri, Jan 13, 2006 at 12:42:04PM -0600, Albert Chin wrote: > > > Does anyone have YUM built for HP-UX and/or IRIX? We have it working > > > fine on AIX, Solaris, and Tru64 UNIX. However, on HP-UX, while "rpm > > > -Uv" works fine, yum errors out with: > > > # yum install TWWxpm > > > ... > > > Downloading Packages: > > > Running Transaction Test > > > rpmdb: mmap: Not enough space > > > error: db4 error(12) from dbenv->open: Not enough space > > > error: cannot open Packages database in /var/opt/TWWfsw/rpm42/db > > > rpmdb: mmap: Not enough space > > > error: db4 error(12) from dbenv->open: Not enough space > > > error: cannot open Packages database in /var/opt/TWWfsw/rpm42/db > > > Finished Transaction Test > > > Transaction Test Succeeded > > > rpmdb: mmap: Not enough space > > > error: db4 error(12) from dbenv->open: Not enough space > > > error: cannot open Packages database in /var/opt/TWWfsw/rpm42/db > > > rpmdb: mmap: Not enough space > > > error: db4 error(12) from dbenv->open: Not enough space > > > error: cannot open Packages database in /var/opt/TWWfsw/rpm42/db > > > Running Transaction > > > rpmdb: mmap: Not enough space > > > error: db4 error(12) from dbenv->open: Not enough space > > > error: cannot open Packages database in /var/opt/TWWfsw/rpm42/db > > > > I _think_ the cause of this is yum opening up multiple instances of > > the database because of restrictions with mmap() on HP-UX. Does yum > > close RPM databases before reopening them or is there one permanent > > handle? > > it opens one and holds it open in the rpmdb object. I see concurrent access to the database: (yum/__init__.py) def doRpmDBSetup(self): """sets up a holder object for important information from the rpmdb""" if not self.localdbimported: self.log(3, 'Reading Local RPMDB') self.rpmdb.addDB(self.read_ts) self.localdbimported = 1 (yum/depsolve.py) def populateTs(self, test=0, keepold=1): """take transactionData class and populate transaction set""" if self.dsCallback: self.dsCallback.transactionPopulation() ts_elem = {} if keepold: for te in self.ts: epoch = te.E() if epoch is None: epoch = '0' pkginfo = (te.N(), te.A(), epoch, te.V(), te.R()) if te.Type() == 1: mode = 'i' elif te.Type() == 2: mode = 'e' ts_elem[(pkginfo, mode)] = 1 I presume self.rpmdb is what you're talking about. Because it causes the __db.### Berkeley DB environment files to be opened, no further instances can be opened and mmap()'ed. However, populateTs() in yum/depsolve.py does so, causing the problem. I suppose one option is to stuff self.rpmdb.[member] with any info needed by future uses of self.rpmdb and then close the DB after self.rpmdb.addDB(). -- albert chin (china@xxxxxxxxxxxxxxxxxx)