[Yum] 2.4.2 on HP-UX and IRIX

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)

[Index of Archives]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]

  Powered by Linux