From 8f09c3e02fb1a537ed7de3d9c269300ab1fc2886 Mon Sep 17 00:00:00 2001 From: Johannes 'josch' Schauer Date: Mon, 24 Aug 2020 16:28:32 +0200 Subject: [PATCH] unless in chrootless mode, omitting stuff in /var/lib/dpkg does not depend on the dpkg version outside, but on the version inside the chroot (and we don't know that one yet) --- mmdebstrap | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/mmdebstrap b/mmdebstrap index 8b776ab..f1745e7 100755 --- a/mmdebstrap +++ b/mmdebstrap @@ -1310,7 +1310,11 @@ sub run_setup() { ); # we need /var/lib/dpkg in case we need to write to /var/lib/dpkg/arch push @directories, '/var/lib/dpkg'; - if (not defined $dpkgversion or $dpkgversion < "1.20.0") { + # since we do not know the dpkg version inside the chroot at this + # point, we can only omit it in chrootless mode + if ( $options->{mode} ne 'chrootless' + or not defined $dpkgversion + or $dpkgversion < "1.20.0") { push @directories, '/etc/dpkg/dpkg.cfg.d/'; } # if dpkg and apt operate from the outside we need some more @@ -1318,7 +1322,11 @@ sub run_setup() { # the chroot if ($options->{mode} eq 'chrootless') { push @directories, '/var/log/apt'; - if (not defined $dpkgversion or $dpkgversion < "1.20.0") { + # since we do not know the dpkg version inside the chroot at this + # point, we can only omit it in chrootless mode + if ( $options->{mode} ne 'chrootless' + or not defined $dpkgversion + or $dpkgversion < "1.20.0") { push @directories, '/var/lib/dpkg/triggers', '/var/lib/dpkg/info', '/var/lib/dpkg/alternatives', '/var/lib/dpkg/updates'; @@ -1424,7 +1432,11 @@ sub run_setup() { # /var/lib/dpkg/available is required to exist or otherwise package # removals will fail - if (not defined $dpkgversion or $dpkgversion < "1.20.0") { + # since we do not know the dpkg version inside the chroot at this point, we + # can only omit it in chrootless mode + if ( $options->{mode} ne 'chrootless' + or not defined $dpkgversion + or $dpkgversion < "1.20.0") { open my $fh, '>', "$options->{root}/var/lib/dpkg/available" or error "failed to open(): $!"; close $fh; @@ -1432,7 +1444,11 @@ sub run_setup() { # /var/lib/dpkg/cmethopt is used by dselect # see #930788 - if (not defined $dpkgversion or $dpkgversion < "1.20.0") { + # since we do not know the dpkg version inside the chroot at this point, we + # can only omit it in chrootless mode + if ( $options->{mode} ne 'chrootless' + or not defined $dpkgversion + or $dpkgversion < "1.20.0") { open my $fh, '>', "$options->{root}/var/lib/dpkg/cmethopt" or error "failed to open(): $!"; print $fh "apt apt\n";