diskimage-builder/elements
Ian Wienand 3f3850aa0f Fixup RPM db path when building Fedora on Ubuntu
On Debian/Ubuntu installs of RPM, /usr/lib/rpm/macros sets

  %_dbpath  %(echo $HOME/.rpmdb)

which makes quite a bit of sense, because RPM is not the system
packager and thus RPM is setup to install things into a hierarchy in
the users homedir.

However, this messes things up when building a Fedora chroot on an
Ubuntu platform.

We use RPM & yum from the base-system to bootstrap the Fedora chroot.
While both obey --root flags, they still pick up the %_dbpath macro
and so end up creating the RPM database in <chroot>/home/user/.rpmdb

After we have bootstrapped yum/dnf, we execute further installation
commands from inside the chroot -- where we now have the Fedora
version of /usr/lib/rpm/macros and hence have _dbpath set to
/var/lib/rpm -- except there is no rpm database there.

Should anyone be finding this in the future, the actual issue that
appears is

  $ sudo chroot /opt/dib_tmp/image.b6B5S3f6/mnt dnf makecache
   Error: Failed to synchronize cache for repo 'fedora' from \
    'https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=x86_64': \
    Cannot prepare internal mirrorlist: file "repomd.xml" was not found in metalink

Note the issue there is that $releasever is not expanded, because the
rpmdb where this info is kept is not populated.

The trick is to make sure we override this value when using the host
rpm/yum to setup the chroot.  The bare rpm calls, which we use to
install the repos, have a --dbpath argument where we can override
this.  yum does not however, so we override this in the global
~/.rpmmacros while we are installing the packaging tools and
dependencies into the chroot.

Copious comments are included, because this is super-confusing.

Change-Id: I20801150ea02d1c64f118eb969fb2aec473476f7
2015-11-10 08:54:44 +00:00
..
apt-conf Update apt-conf elements README from free text to table formatting 2015-10-08 17:12:46 -07:00
apt-preferences Update apt-preferences element README from free text to table formatting 2015-10-08 17:14:16 -07:00
apt-sources Initial element tests 2015-05-17 02:07:40 +00:00
architecture-emulation-binaries Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
baremetal Merge "Turn docs warnings into errors and fix issues" 2015-05-06 17:48:16 +00:00
base Merge "Make managing hosts entries optional" 2015-05-12 13:29:48 +00:00
cache-url Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
centos Download a compressed centos cloud images 2015-09-17 10:03:59 +01:00
centos7 Merge "Download a compressed centos cloud images" 2015-09-18 10:18:55 +00:00
centos-minimal Port centos-minimal to yum-minimal 2015-04-22 20:34:48 -04:00
cleanup-kernel-initrd Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
cloud-init-datasources Simple-init should disable cloud-init 2015-05-11 16:55:02 +00:00
cloud-init-disable-resizefs Add element to disable cloud-init resizefs 2015-07-21 14:09:07 -07:00
cloud-init-nocloud Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
debian debian: cloud hostname ignored by Jessie 2015-10-30 22:34:10 +01:00
debian-minimal Use official mirror name for debian-minimal 2015-07-09 23:41:49 -04:00
debian-systemd Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
debian-upstart Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
debootstrap debian: properly configure interfaces 2015-07-23 14:34:28 +02:00
deploy Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00
deploy-baremetal Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00
deploy-ironic Merge "Fix variable misspelling error" 2015-09-30 19:42:52 +00:00
deploy-kexec Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00
deploy-targetcli Optimize Python install in deploy-targetcli 2015-06-22 13:19:14 -05:00
deploy-tgtadm No markdown docs for elements 2015-04-02 23:55:19 +00:00
devuser Fix devuser pubkey defaults 2015-10-13 17:54:09 -07:00
dhcp-all-interfaces Remove quotes from subshell call in bash script 2015-09-28 17:36:05 +08:00
dib-init-system Fix init-scripts element path munging and deps 2015-08-17 16:16:43 +00:00
dib-run-parts/root.d Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
disable-selinux/post-install.d Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
dkms Reorder the script number of 'elements/dkms/post-install.d/99-dkms' 2015-10-06 09:57:06 -07:00
docker Add base element for using docker as image base 2015-07-19 10:23:34 +00:00
dpkg Update dpkg elements README from free text to table formatting 2015-08-31 13:43:04 -07:00
dracut-network Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
dracut-ramdisk Make troubleshoot work with dracut ramdisks 2015-04-08 12:54:32 -05:00
element-manifest Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
enable-serial-console Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
epel Use DIB_EPEL_MIRROR when finding the epel-release package 2015-10-20 17:25:58 +01:00
fedora Fix title of env vars section of fedora README to match template 2015-10-08 17:10:05 -07:00
fedora-minimal Clarify what fedora-minimal/install.d/99-ramdisk is doing 2015-11-04 06:23:17 +11:00
growroot Run growroot after all filesystems are mounted 2015-08-25 17:04:38 -07:00
grub2 Add grub2 element 2015-06-02 05:35:03 +00:00
hwburnin Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00
hwdiscovery Create docs site containing element READMEs 2015-02-10 11:45:35 -08:00
ilo Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
install-static Install-static depends on rsync 2015-08-17 16:21:09 +00:00
install-types Break install-types out of base 2015-04-14 13:39:18 -04:00
ironic-agent Avoid transcending /proc with find 2015-10-08 12:16:23 +01:00
ironic-discoverd-ramdisk Fix incorrect package name dmidecoded to dmidecode 2015-03-11 01:04:37 +00:00
iso Adds debian support to iso element 2015-09-23 23:55:18 -07:00
local-config Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
manifests Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
mellanox Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
modprobe-blacklist Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
oat-client Add oat-client element 2015-06-26 09:57:12 +08:00
opensuse opensuse: Update README 2015-07-01 22:03:50 +02:00
package-installs Merge "package-installs: fix error case for Python 2.6" 2015-05-07 17:25:54 +00:00
pip-cache Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
pkg-map Only warn about missing map files with debug 2015-07-22 22:36:33 +00:00
pypi Merge "Allow setting DIB_PIP_RETRIES" 2015-04-23 03:51:57 +00:00
ramdisk Merge "Add element ubuntu-signed to provide signed kernel" 2015-04-28 11:02:44 +00:00
ramdisk-base Add support for Xen PV disks 2015-10-19 15:38:00 +01:00
rax-nova-agent rax-nova-agent: switch to $DISTRO_NAME 2015-05-12 17:48:49 +02:00
redhat-common Fix title of env vars section of redhat-common README to match template 2015-10-08 17:05:57 -07:00
rhel Use shorter temporary file names for kpartx 2015-04-21 10:36:33 +02:00
rhel7 Update rhel7 element readme 2015-10-12 15:31:09 -05:00
rhel-common rhel-common element should not use attach with activation key 2015-05-25 07:18:47 -04:00
rpm-distro Set and export DIB_RELEASE for centos7 2015-08-04 08:35:20 -07:00
select-boot-kernel-initrd Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
selinux-permissive Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
serial-console Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
simple-init Use the init scripts from the glean package 2015-06-27 12:51:25 -04:00
source-repositories Prettyfy source-repositories doc 2015-09-17 13:24:46 +02:00
stable-interface-names Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
svc-map svc-map: do not specify user/group for install 2015-09-07 17:04:03 +02:00
uboot Standarise tracing for scripts 2015-02-12 10:41:32 +11:00
ubuntu Set DIB_RELEASE in ubuntu element 2015-03-04 23:11:27 +00:00
ubuntu-core Use shorter temporary file names for kpartx 2015-04-21 10:36:33 +02:00
ubuntu-minimal Split the debootstrap functions into an element 2015-04-26 18:04:59 +00:00
ubuntu-signed Add element ubuntu-signed to provide signed kernel 2015-04-12 11:36:17 -07:00
vm Add --force to grub-install 2015-10-18 02:26:31 +00:00
yum Reset yum/dnf cache to correct location 2015-10-14 06:36:06 +11:00
yum-minimal Fixup RPM db path when building Fedora on Ubuntu 2015-11-10 08:54:44 +00:00
zypper Standarise tracing for scripts 2015-02-12 10:41:32 +11:00