[Yum] 2.4.2 on HP-UX and IRIX
Albert Chin
yum at mlists.thewrittenword.com
Sun Jan 15 16:06:41 UTC 2006
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 at thewrittenword.com)
More information about the Yum
mailing list