Troubles running F9 mock chroot under F11

Jan Kratochvil jan.kratochvil at redhat.com
Wed Sep 16 06:25:18 UTC 2009


On Tue, 15 Sep 2009 12:02:38 +0200, Daniel Drake wrote:
> We do have a F11 box
[...]
> I then tried to create a F9 chroot using mock, with the intention of
> running revisor or pungi inside. This doesn't work, because mock
> creates a v9 berkeley DB inside the chroot, but the libraries/apps
> inside the chroot only support bdb v8. So running "rpm -qa" inside a
> fresh F9 chroot on F11 gives you these errors:
>     mock-chroot> rpm -qa
>     rpmdb: /var/lib/rpm/Packages: unsupported hash version: 9
>     error: cannot open Packages index using db3 - Invalid argument (22)
>     error: cannot open Packages database in /var/lib/rpm

There is a bug in mock it uses the host rpm to build the database instead of
the guest rpm.  In some minor version changes either
	`rm /var/lib/mock/XXX/root/var/lib/rpm/__db.*'
or
	`rpm -r /var/lib/mock/XXX/root --rebuilddb'
	(which also removes __db.*)
helps but in this F9<->F11 case already /var/lib/rpm/Packages is incompatible:
	/var/lib/mock/fedora-9-x86_64/root/var/lib/rpm/Packages: Berkeley DB (Hash, version 8, native byte-order)
vs.
	/var/lib/mock/fedora-9-x86_64/root/var/lib/rpm/Packages: Berkeley DB (Hash, version 9, native byte-order)

I understand it may be difficult for mock to bootstrap the chroot with the
guest rpm version - not existing at that time yet.


[...]
> Finally I tried to use db_dump on the F11 host to dump the database
> using the v9 tools, to go into the chroot and use db_load to import it
> using the v8 tools, but this also results in a v9 database being
> loaded :(

`db_load' on F9 is already too new for its rpm in use but compat-db works:

mock -r fedora-9-x86_64 --init
mock -r fedora-9-x86_64 --install compat-db
db_dump -f /var/lib/mock/fedora-9-x86_64/root/tmp/pkgdb /var/lib/mock/fedora-9-x86_64/root/var/lib/rpm/Packages 
rm /var/lib/mock/fedora-9-x86_64/root/var/lib/rpm/*
mock -r fedora-9-x86_64 --shell
	db45_load -f /tmp/pkgdb /var/lib/rpm/Packages
	rpm --rebuilddb
	rpm -q bash
		bash-3.2-23.fc9.x86_64

While F9 is EOLed by Fedora I find this as a real problem running epel (both
epel-4 and epel-5) in mock on any recent Fedoras.


Another workaround would be to run the guest in kvm (or xen on older CPUs).


Regards,
Jan




More information about the fedora-devel-list mailing list