forked from josch/mmdebstrap
set DPkg::Chroot-Directory in APT_CONFIG
This is so that users calling apt-get install from a hook only need to have APT_CONFIG=$MMDEBSTRAP_APT_CONFIG set and do not also have to pass -oDPkg::Chroot-Directory="$1". This breaks users running apt-get with DPkg::Options::=--force-script-chrootless or with Dpkg::Pre-Install-Pkgs from within a hook with APT_CONFIG=$MMDEBSTRAP_APT_CONFIG. In those situations, DPkg::Chroot-Directory has to be set to the empty string explicitly with -o to overwrite the APT_CONFIG setting. Thanks: Helmut Grohne
This commit is contained in:
parent
1ffa88b182
commit
fd33bd2a40
3 changed files with 8 additions and 4 deletions
|
@ -10,6 +10,7 @@ TARGET="$1"
|
|||
|
||||
if [ "${MMDEBSTRAP_MODE:-}" = "chrootless" ]; then
|
||||
APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install \
|
||||
-oDPkg::Chroot-Directory= \
|
||||
-oDPkg::Options::=--force-not-root \
|
||||
-oDPkg::Options::=--force-script-chrootless \
|
||||
-oDPkg::Options::=--root="$TARGET" \
|
||||
|
@ -20,7 +21,7 @@ if [ "${MMDEBSTRAP_MODE:-}" = "chrootless" ]; then
|
|||
dpkg-query --showformat '${Source}\n' --show usr-is-merged | grep -q '^usrmerge$'
|
||||
dpkg --compare-versions "1" "lt" "$(dpkg-query --showformat '${Version}\n' --show usr-is-merged)"
|
||||
else
|
||||
APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install -oDPkg::Chroot-Directory="$TARGET" usr-is-merged
|
||||
APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install usr-is-merged
|
||||
chroot "$TARGET" dpkg-query --showformat '${db:Status-Status}\n' --show usr-is-merged | grep -q '^installed$'
|
||||
chroot "$TARGET" dpkg-query --showformat '${Source}\n' --show usr-is-merged | grep -q '^usrmerge$'
|
||||
dpkg --compare-versions "1" "lt" "$(chroot "$TARGET" dpkg-query --showformat '${Version}\n' --show usr-is-merged)"
|
||||
|
|
|
@ -1116,6 +1116,8 @@ sub run_apt_download_progress {
|
|||
"-oDebug::NoLocking=1",
|
||||
# no need for pty magic if we write no log
|
||||
"-oDpkg::Use-Pty=0",
|
||||
# unset this or otherwise "cat >&$fd" will fail
|
||||
"-oDPkg::Chroot-Directory=",
|
||||
),
|
||||
@{ $options->{APT_ARGV} },
|
||||
],
|
||||
|
@ -2022,6 +2024,7 @@ sub run_setup() {
|
|||
print $conf "Apt::Architectures \"$options->{nativearch}\";\n";
|
||||
}
|
||||
print $conf "Dir \"$options->{root}\";\n";
|
||||
print $conf "DPkg::Chroot-Directory \"$options->{root}\";\n";
|
||||
# not needed anymore for apt 1.3 and newer
|
||||
print $conf
|
||||
"Dir::State::Status \"$options->{root}/var/lib/dpkg/status\";\n";
|
||||
|
@ -2878,6 +2881,7 @@ sub run_essential() {
|
|||
# Example: if the host has --path-exclude set, then this will also
|
||||
# affect the chroot. See #808203
|
||||
my @chrootless_opts = (
|
||||
'-oDPkg::Chroot-Directory=',
|
||||
'-oDPkg::Options::=--force-not-root',
|
||||
'-oDPkg::Options::=--force-script-chrootless',
|
||||
'-oDPkg::Options::=--root=' . $options->{root},
|
||||
|
@ -3001,6 +3005,7 @@ sub run_install() {
|
|||
if ($options->{mode} eq 'chrootless') {
|
||||
if (scalar @pkgs_to_install > 0) {
|
||||
my @chrootless_opts = (
|
||||
'-oDPkg::Chroot-Directory=',
|
||||
'-oDPkg::Options::=--force-not-root',
|
||||
'-oDPkg::Options::=--force-script-chrootless',
|
||||
'-oDPkg::Options::=--root=' . $options->{root},
|
||||
|
@ -3054,8 +3059,6 @@ sub run_install() {
|
|||
$options->{mode} eq 'fakechroot'
|
||||
? ('-o', 'DPkg::Install::Recursive::force=true')
|
||||
: (),
|
||||
'-o',
|
||||
"DPkg::Chroot-Directory=$options->{root}",
|
||||
'--yes',
|
||||
'install'
|
||||
],
|
||||
|
|
|
@ -4,6 +4,6 @@ export LC_ALL=C.UTF-8
|
|||
trap "rm -f /tmp/debian-chroot.tar" EXIT INT TERM
|
||||
{{ CMD }} --mode={{ MODE }} --variant=essential --include=apt \
|
||||
--essential-hook='APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get update' \
|
||||
--essential-hook='APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install -oDPkg::Chroot-Directory="$1" apt' \
|
||||
--essential-hook='APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install apt' \
|
||||
{{ DIST }} /tmp/debian-chroot.tar {{ MIRROR }}
|
||||
tar -tf /tmp/debian-chroot.tar | sort | grep -v ./var/lib/apt/extended_states | diff -u tar1.txt -
|
||||
|
|
Loading…
Reference in a new issue