-# If we are root, then we don't need to run fakeroot and fakechroot.
-if [ $(id -u) -eq 0 ]; then
- yum \
- -c "$tmpdir"/febootstrap.repo \
- $yumargs \
- --installroot="$target" \
- install "${packages[@]}"
-else
+# Substitute some statically-linked commands. This is only supported
+# in fakechroot > 2.9. For previous versions of fakechroot it is
+# ignored.
+export FAKECHROOT_CMD_SUBST=/sbin/ldconfig=/bin/true:/usr/sbin/glibc_post_upgrade.i686=/bin/true:/usr/sbin/glibc_post_upgrade.x86_64=/bin/true:/usr/sbin/build-locale-archive=/bin/true:/usr/sbin/libgcc_post_upgrade=/bin/true
+
+# Use the libraries inside the chroot.
+export LD_LIBRARY_PATH="$target"/usr/lib64:"$target"/usr/lib:"$target"/lib64:"$target"/usr/lib
+
+# Make the device nodes inside the fake chroot.
+# (Copied from mock/backend.py) Why isn't there a base package which
+# creates these?
+make_device_nodes ()
+{
+ mkdir "$target"/proc
+ mkdir "$target"/sys
+ mkdir "$target"/dev
+ (
+ cd "$target"/dev
+ mkdir pts
+ mkdir shm
+ mkdir mapper
+ mknod null c 1 3; chmod 0666 null
+ mknod full c 1 7; chmod 0666 full
+ mknod zero c 1 5; chmod 0666 zero
+ mknod random c 1 8; chmod 0666 random
+ mknod urandom c 1 9; chmod 0444 urandom
+ mknod tty c 5 0; chmod 0666 tty
+ mknod console c 5 1; chmod 0600 console
+ mknod ptmx c 5 2; chmod 0666 ptmx
+ ln -sf /proc/self/fd/0 stdin
+ ln -sf /proc/self/fd/1 stdout
+ ln -sf /proc/self/fd/2 stderr
+ )
+}
+export -f make_device_nodes
+export target
+
+if [ $(id -u) -ne 0 ]; then