[th] rpm-4.4.9-8 bugreport?

Witold Filipczyk witekfl w poczta.onet.pl
Pon, 12 Lis 2007, 10:08:30 CET


On Wed, Oct 31, 2007 at 02:19:30PM +0100, Arkadiusz Miskiewicz wrote:
> On Wednesday 31 of October 2007, Maciej Świniarski wrote:
> > # rpm -q rpm db4.6
> > rpm-4.4.9-8.i686
> > db4.6-4.6.21-1.i686
> > # mkdir /noga
> > # rpm --root /noga --initdb
> > # poldek -n th -i setup --root /noga
> > Wczytywanie [pndir]th...
> > Wczytywanie [pndir]th...
> > Przeczytano 14871 pakietów
> > Freeing locks for locker 0xe: 9755/3081824032
> > Freeing locks for locker 0xf: 9755/3081824032
> > Freeing locks for locker 0x10: 9755/3081824032
> > Przetwarzanie zależności...
> > setup-2.4.10-6.i686 zaznaczył FHS-2.3-21.i686 (wł. /etc)
> > There are 2 packages to install (1 marked by dependencies):
> > I setup-2.4.10-6.i686
> > D FHS-2.3-21.i686
> > Potrzeba pobrać 198.2KB archiw. Po rozpakowaniu 664.7KB będzie użyte.
> > Uruchamianie rpm --install -vh --root /noga --noorder...
> > Przygotowywanie...          błąd: nie można otworzyć indeksu Basenames
> > przy użyciu db3 - No such file or directory (2) błąd:
> > /bin/rpm usieczon za sprawą sygnału Naruszenie ochrony pamięci
> >
> >
> > Czy to moze ja robie cos zle?
> 
> --root w rpmie od czasu db 4.6.X jest skopana :-( 
> 
> Duża bolączka w TH, nierozpracowana (każda pomoc w rozpracowaniu mile 
> widziana!)

--- rpm-4.4.9/rpmdb/db3.c.old	2007-11-12 09:46:51.000000000 +0100
+++ rpm-4.4.9/rpmdb/db3.c	2007-11-12 09:49:27.000000000 +0100
@@ -1330,6 +1330,8 @@ assert(dbenv);
 	} else {
 assert(rpmdb && rpmdb->db_dbenv);
 	    dbenv = rpmdb->db_dbenv;
+	    if (rpmdb->db_chrootDone)
+		dbenv->set_data_dir(dbenv, dbhome);
 	    rpmdb->db_opens++;
 	}
 	/*@=mods@*/
@@ -1501,7 +1503,8 @@ assert(rpmdb && rpmdb->db_dbenv);
 		dbpath = (!dbi->dbi_use_dbenv && !dbi->dbi_temporary)
 			? dbfullpath : dbfile;
 #else
-		dbpath = (!dbi->dbi_temporary)
+		/* XXX Make dbpath relative. */
+		dbpath = (!dbi->dbi_use_dbenv)
 			? dbfullpath : dbfile;
 #endif
 

W drugim fragmencie dbpath była bezwzględna i to był problem z chrootem.
Powinno być dbpath równe dbfile.

W pierwszym: gdy jest ustawiony root, zostaje on zapamiętany przy dbenv->open.
Przy chroocie jest dalej pamiętany, co powoduje problem.

Rozwiązanie nie było mocno testowane.
-- 
Witek


Więcej informacji o liście dyskusyjnej pld-devel-pl