Package: fakechroot
Version: 2.19-3
Severity: normal
Tags: patch
Dear Maintainer,
debootstrap may fail in a fakechroot environment if systemd is not installed or
if
the architectures inside and outside of the (fake)chroot don't match.
This doesn't occur if the patch below is applied.
The cause is systemctl version 232-15 finding a library through a DT_RUNPATH
tag
(ie outside of the (fake)chroot)).
systemctl is invoked in the maintainer scripts of systemd.
$ readelf -d mychroot-amd64/bin/systemctl
[ ... ]
0x0000000000000001 (NEEDED) Shared library:
[libsystemd-shared-232.so]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
[ ... ]
0x000000000000001d (RUNPATH) Library runpath: [/lib/systemd]
Here are the symptoms :
$ dpkg -l systemd
+++-==========-=============-==========-===============================
un systemd <none> <none> (no description available)
$ fakechroot fakeroot -s .fakeroot.state debootstrap --variant=fakechroot sid
mychroot-amd64
[ ... ]
I: Unpacking the base system...
W: Failure trying to run: chroot /home/me/mychroot-amd64 dpkg --force-overwrite
--force-confold --skip-same-version \
--install /var/cache/apt/archives/adduser_3.115_all.deb
/var/cache/apt/archives/libapparmor1_2.11.0-2_amd64.deb \
/var/cache/apt/archives/libcryptsetup4_2%3a1.7.3-3_amd64.deb
/var/cache/apt/archives/libip4tc0_1.6.0+snapshot20161117-5_amd64.deb \
/var/cache/apt/archives/libkmod2_23-2_amd64.deb
/var/cache/apt/archives/libcap2_1%3a2.25-1_amd64.deb \
/var/cache/apt/archives/libidn11_1.33-1_amd64.deb
/var/cache/apt/archives/libseccomp2_2.3.1-2.1_amd64.deb \
/var/cache/apt/archives/dmsetup_2%3a1.02.137-1_amd64.deb
/var/cache/apt/archives/libdevmapper1.02.1_2%3a1.02.137-1_amd64.deb \
/var/cache/apt/archives/systemd_232-15_amd64.deb
W: See /home/me/mychroot-amd64/debootstrap/debootstrap.log for details
(possibly the package systemd is at fault)
$ echo $?
1
$ cat mychroot-amd64/debootstrap/debootstrap.log
[ ... ]
Setting up systemd (232-15) ...
systemctl: error while loading shared libraries: libsystemd-shared-232.so:
cannot open shared object file: No such file or directory
systemctl: error while loading shared libraries: libsystemd-shared-232.so:
cannot open shared object file: No such file or directory
systemctl: error while loading shared libraries: libsystemd-shared-232.so:
cannot open shared object file: No such file or directory
systemd-machine-id-setup: error while loading shared libraries:
libsystemd-shared-232.so: cannot open shared object file: No such file or
directory
dpkg: error processing package systemd (--install):
subprocess installed post-installation script returned error exit status 127
Processing triggers for libc-bin (2.24-9) ...
Errors were encountered while processing:
systemd
debootstrap succeeds if systemd is installed :
# apt-get --no-install-recommends install systemd
$ fakechroot fakeroot -s .fakeroot.state debootstrap --variant=fakechroot sid
mychroot-amd64
[ ... ]
I: Base system installed successfully.
$ echo $?
0
However, it fails on different architectures :
$ dpkg --print-architecture
amd64
$ LD_LIBRARY_PATH=/usr/lib/i386-linux-gnu/libfakeroot fakechroot fakeroot -s
.fakeroot.state debootstrap \
--arch=i386 --variant=fakechroot sid mychroot-i386
[ ... ]
I: Unpacking the base system...
W: Failure trying to run: chroot /home/me/mychroot-i386 dpkg --force-overwrite
--force-confold --skip-same-version \
--install /var/cache/apt/archives/adduser_3.115_all.deb
/var/cache/apt/archives/libapparmor1_2.11.0-2_i386.deb \
/var/cache/apt/archives/libcryptsetup4_2%3a1.7.3-3_i386.deb
/var/cache/apt/archives/libip4tc0_1.6.0+snapshot20161117-5_i386.deb \
/var/cache/apt/archives/libkmod2_23-2_i386.deb
/var/cache/apt/archives/libcap2_1%3a2.25-1_i386.deb
/var/cache/apt/archives/libidn11_1.33-1_i386.deb \
/var/cache/apt/archives/libseccomp2_2.3.1-2.1_i386.deb
/var/cache/apt/archives/dmsetup_2%3a1.02.137-1_i386.deb \
/var/cache/apt/archives/libdevmapper1.02.1_2%3a1.02.137-1_i386.deb
/var/cache/apt/archives/systemd_232-15_i386.deb
W: See /home/me/mychroot-i386/debootstrap/debootstrap.log for details (possibly
the package systemd is at fault)
$ echo $?
1
$
LD_LIBRARY_PATH="/usr/lib/i386-linux-gnu/libfakeroot:/home/me/mychroot-i386/lib/systemd"
fakechroot fakeroot \
-s .fakeroot.state debootstrap --arch=i386 --variant=fakechroot sid
mychroot-i386
[ ... ]
I: Base system installed successfully.
$ echo $?
0
Thank you for all your work to improve fakechroot !
Regards,
JH Chatenet
--- /usr/sbin/chroot.fakechroot
+++ /usr/sbin/chroot.fakechroot
@@ -89,6 +89,9 @@
fakechroot_chroot_paths="$fakechroot_chroot_paths${fakechroot_chroot_paths_ldsoconf:+:$fakechroot_chroot_paths_ldsoconf}${FAKECHROOT_LDLIBPATH:+:$FAKECHROOT_LDLIBPATH}"
fakechroot_chroot_paths="${fakechroot_chroot_paths#:}"
+ # Append /lib/systemd under newroot, so that systemctl works. debootstrap
needs this on hosts without systemd or with another architecture.
+
fakechroot_chroot_paths="${fakechroot_chroot_paths}:${fakechroot_chroot_newroot}/lib/systemd"
+ fakechroot_chroot_paths="${fakechroot_chroot_paths#:}"
fi
# call real chroot
-- System Information:
Debian Release: 9.0
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 3.16.0-4-amd64 (SMP w/2 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/dash
Init: unable to detect
Versions of packages fakechroot depends on:
ii libfakechroot 2.19-3
fakechroot recommends no packages.
fakechroot suggests no packages.
-- no debconf information