forked from josch/mmdebstrap
Johannes Schauer Marin Rodrigues
f4a3865c00
The proot mode was broken from the start because in contrast to fakechroot, no ownership information can be retained across multiple invocations of proot. Since mmdebstrap started using apt from the outside by setting DPkg::Chroot-Directory in mmdebstrap 0.8.0 proot mode was finally completely broken because proot cannot wrap the chroot call done by apt. Users of proot are recommended to run mmdebstrap in fakechroot mode and then use proot with the resulting directory.
43 lines
1.7 KiB
Bash
43 lines
1.7 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
export LC_ALL=C.UTF-8
|
|
if [ "$(id -u)" -eq 0 ] && ! id -u user > /dev/null 2>&1; then
|
|
if [ ! -e /mmdebstrap-testenv ]; then
|
|
echo "this test modifies the system and should only be run inside a container" >&2
|
|
exit 1
|
|
fi
|
|
adduser --gecos user --disabled-password user
|
|
fi
|
|
if [ "{{ MODE }}" = unshare ]; then
|
|
if [ ! -e /mmdebstrap-testenv ]; then
|
|
echo "this test modifies the system and should only be run inside a container" >&2
|
|
exit 1
|
|
fi
|
|
sysctl -w kernel.unprivileged_userns_clone=1
|
|
fi
|
|
prefix=
|
|
[ "$(id -u)" -eq 0 ] && [ "{{ MODE }}" != "root" ] && prefix="runuser -u user --"
|
|
[ "{{ MODE }}" = "fakechroot" ] && prefix="$prefix fakechroot fakeroot"
|
|
$prefix {{ CMD }} --mode={{ MODE }} --variant=apt --architectures=arm64 {{ DIST }} /tmp/debian-chroot.tar {{ MIRROR }}
|
|
# we ignore differences between architectures by ignoring some files
|
|
# and renaming others
|
|
{ tar -tf /tmp/debian-chroot.tar \
|
|
| grep -v '^\./lib/ld-linux-aarch64\.so\.1$' \
|
|
| grep -v '^\./lib/aarch64-linux-gnu/ld-linux-aarch64\.so\.1$' \
|
|
| grep -v '^\./usr/share/doc/[^/]\+/changelog\(\.Debian\)\?\.arm64\.gz$' \
|
|
| sed 's/aarch64-linux-gnu/x86_64-linux-gnu/' \
|
|
| sed 's/arm64/amd64/';
|
|
} | sort > tar2.txt
|
|
{ cat tar1.txt \
|
|
| grep -v '^\./usr/bin/i386$' \
|
|
| grep -v '^\./usr/bin/x86_64$' \
|
|
| grep -v '^\./lib64/$' \
|
|
| grep -v '^\./lib64/ld-linux-x86-64\.so\.2$' \
|
|
| grep -v '^\./lib/x86_64-linux-gnu/ld-linux-x86-64\.so\.2$' \
|
|
| grep -v '^\./lib/x86_64-linux-gnu/libmvec-2\.[0-9]\+\.so$' \
|
|
| grep -v '^\./lib/x86_64-linux-gnu/libmvec\.so\.1$' \
|
|
| grep -v '^\./usr/share/doc/[^/]\+/changelog\(\.Debian\)\?\.amd64\.gz$' \
|
|
| grep -v '^\./usr/share/man/man8/i386\.8\.gz$' \
|
|
| grep -v '^\./usr/share/man/man8/x86_64\.8\.gz$';
|
|
} | sort | diff -u - tar2.txt
|
|
rm /tmp/debian-chroot.tar
|