Support file:// mirrors the same way copy:// is supported
As long as you can make it so that the same path to the deb file works inside and outside of the chroot using file:// as a mirror is no longer a problem with the previous work.
This commit is contained in:
parent
3ceebe7e07
commit
317bfea7e5
2 changed files with 10 additions and 15 deletions
10
coverage.sh
10
coverage.sh
|
@ -1526,7 +1526,7 @@ else
|
||||||
skipped=$((skipped+1))
|
skipped=$((skipped+1))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_header "mode=$defaultmode,variant=apt: fail with file:// mirror"
|
print_header "mode=$defaultmode,variant=apt: file:// mirror"
|
||||||
cat << END > shared/test.sh
|
cat << END > shared/test.sh
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
set -eu
|
set -eu
|
||||||
|
@ -1535,13 +1535,9 @@ if [ ! -e /mmdebstrap-testenv ]; then
|
||||||
echo "this test requires the cache directory to be mounted on /mnt and should only be run inside a container" >&2
|
echo "this test requires the cache directory to be mounted on /mnt and should only be run inside a container" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
ret=0
|
$CMD --mode=$defaultmode --variant=apt $DEFAULT_DIST /tmp/debian-chroot.tar "deb file:///mnt/cache/debian $DEFAULT_DIST main"
|
||||||
$CMD --mode=$defaultmode --variant=apt $DEFAULT_DIST /tmp/debian-chroot.tar "deb file:///mnt/cache/debian unstable main" || ret=\$?
|
tar -tf /tmp/debian-chroot.tar | sort | diff -u tar1.txt -
|
||||||
rm /tmp/debian-chroot.tar
|
rm /tmp/debian-chroot.tar
|
||||||
if [ "\$ret" = 0 ]; then
|
|
||||||
echo expected failure but got exit \$ret >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
END
|
END
|
||||||
if [ "$HAVE_QEMU" = "yes" ]; then
|
if [ "$HAVE_QEMU" = "yes" ]; then
|
||||||
./run_qemu.sh
|
./run_qemu.sh
|
||||||
|
|
15
mmdebstrap
15
mmdebstrap
|
@ -2135,8 +2135,13 @@ sub run_download() {
|
||||||
# strip the the chroot directory from the filenames
|
# strip the the chroot directory from the filenames
|
||||||
foreach my $deb (@dl_debs) {
|
foreach my $deb (@dl_debs) {
|
||||||
if (rindex $deb, $options->{root}, 0) {
|
if (rindex $deb, $options->{root}, 0) {
|
||||||
error "package file $deb not in chroot directory"
|
if (-e "$options->{root}/$deb") {
|
||||||
. " -- use copy:// instead of file://";
|
push @essential_pkgs, $deb;
|
||||||
|
} else {
|
||||||
|
error "package file $deb not accessible from chroot directory"
|
||||||
|
. " -- use copy:// instead of file:// or a bind-mount";
|
||||||
|
}
|
||||||
|
next;
|
||||||
}
|
}
|
||||||
if (-e $deb) {
|
if (-e $deb) {
|
||||||
push @essential_pkgs, substr($deb, length($options->{root}));
|
push @essential_pkgs, substr($deb, length($options->{root}));
|
||||||
|
@ -6983,12 +6988,6 @@ as the non-root user, then as a workaround you could run C<chmod 600
|
||||||
/etc/dpkg/dpkg.cfg.d/*> so that the config files are only accessible by the
|
/etc/dpkg/dpkg.cfg.d/*> so that the config files are only accessible by the
|
||||||
root user. See Debian bug #808203.
|
root user. See Debian bug #808203.
|
||||||
|
|
||||||
The C<file://> URI type cannot be used to install the essential packages. This
|
|
||||||
is because B<mmdebstrap> uses dpkg to install the packages that apt places into
|
|
||||||
F</var/cache/apt/archives> but with C<file://> apt will not copy the files even
|
|
||||||
with C<--download-only>. Use C<copy://> instead, which is equivalent to
|
|
||||||
C<file://> but copies the archives into F</var/cache/apt/archives>.
|
|
||||||
|
|
||||||
With apt versions before 2.1.16, setting C<[trusted=yes]> or
|
With apt versions before 2.1.16, setting C<[trusted=yes]> or
|
||||||
C<Acquire::AllowInsecureRepositories "1"> to allow signed archives without a
|
C<Acquire::AllowInsecureRepositories "1"> to allow signed archives without a
|
||||||
known public key or unsigned archives will fail because of a gpg warning in the
|
known public key or unsigned archives will fail because of a gpg warning in the
|
||||||
|
|
Loading…
Reference in a new issue