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
|
if [ "${MMDEBSTRAP_MODE:-}" = "chrootless" ]; then
|
||||||
APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install \
|
APT_CONFIG=$MMDEBSTRAP_APT_CONFIG apt-get --yes install \
|
||||||
|
-oDPkg::Chroot-Directory= \
|
||||||
-oDPkg::Options::=--force-not-root \
|
-oDPkg::Options::=--force-not-root \
|
||||||
-oDPkg::Options::=--force-script-chrootless \
|
-oDPkg::Options::=--force-script-chrootless \
|
||||||
-oDPkg::Options::=--root="$TARGET" \
|
-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-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)"
|
dpkg --compare-versions "1" "lt" "$(dpkg-query --showformat '${Version}\n' --show usr-is-merged)"
|
||||||
else
|
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 '${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$'
|
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)"
|
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",
|
"-oDebug::NoLocking=1",
|
||||||
# no need for pty magic if we write no log
|
# no need for pty magic if we write no log
|
||||||
"-oDpkg::Use-Pty=0",
|
"-oDpkg::Use-Pty=0",
|
||||||
|
# unset this or otherwise "cat >&$fd" will fail
|
||||||
|
"-oDPkg::Chroot-Directory=",
|
||||||
),
|
),
|
||||||
@{ $options->{APT_ARGV} },
|
@{ $options->{APT_ARGV} },
|
||||||
],
|
],
|
||||||
|
@ -2022,6 +2024,7 @@ sub run_setup() {
|
||||||
print $conf "Apt::Architectures \"$options->{nativearch}\";\n";
|
print $conf "Apt::Architectures \"$options->{nativearch}\";\n";
|
||||||
}
|
}
|
||||||
print $conf "Dir \"$options->{root}\";\n";
|
print $conf "Dir \"$options->{root}\";\n";
|
||||||
|
print $conf "DPkg::Chroot-Directory \"$options->{root}\";\n";
|
||||||
# not needed anymore for apt 1.3 and newer
|
# not needed anymore for apt 1.3 and newer
|
||||||
print $conf
|
print $conf
|
||||||
"Dir::State::Status \"$options->{root}/var/lib/dpkg/status\";\n";
|
"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
|
# Example: if the host has --path-exclude set, then this will also
|
||||||
# affect the chroot. See #808203
|
# affect the chroot. See #808203
|
||||||
my @chrootless_opts = (
|
my @chrootless_opts = (
|
||||||
|
'-oDPkg::Chroot-Directory=',
|
||||||
'-oDPkg::Options::=--force-not-root',
|
'-oDPkg::Options::=--force-not-root',
|
||||||
'-oDPkg::Options::=--force-script-chrootless',
|
'-oDPkg::Options::=--force-script-chrootless',
|
||||||
'-oDPkg::Options::=--root=' . $options->{root},
|
'-oDPkg::Options::=--root=' . $options->{root},
|
||||||
|
@ -3001,6 +3005,7 @@ sub run_install() {
|
||||||
if ($options->{mode} eq 'chrootless') {
|
if ($options->{mode} eq 'chrootless') {
|
||||||
if (scalar @pkgs_to_install > 0) {
|
if (scalar @pkgs_to_install > 0) {
|
||||||
my @chrootless_opts = (
|
my @chrootless_opts = (
|
||||||
|
'-oDPkg::Chroot-Directory=',
|
||||||
'-oDPkg::Options::=--force-not-root',
|
'-oDPkg::Options::=--force-not-root',
|
||||||
'-oDPkg::Options::=--force-script-chrootless',
|
'-oDPkg::Options::=--force-script-chrootless',
|
||||||
'-oDPkg::Options::=--root=' . $options->{root},
|
'-oDPkg::Options::=--root=' . $options->{root},
|
||||||
|
@ -3054,8 +3059,6 @@ sub run_install() {
|
||||||
$options->{mode} eq 'fakechroot'
|
$options->{mode} eq 'fakechroot'
|
||||||
? ('-o', 'DPkg::Install::Recursive::force=true')
|
? ('-o', 'DPkg::Install::Recursive::force=true')
|
||||||
: (),
|
: (),
|
||||||
'-o',
|
|
||||||
"DPkg::Chroot-Directory=$options->{root}",
|
|
||||||
'--yes',
|
'--yes',
|
||||||
'install'
|
'install'
|
||||||
],
|
],
|
||||||
|
|
|
@ -4,6 +4,6 @@ export LC_ALL=C.UTF-8
|
||||||
trap "rm -f /tmp/debian-chroot.tar" EXIT INT TERM
|
trap "rm -f /tmp/debian-chroot.tar" EXIT INT TERM
|
||||||
{{ CMD }} --mode={{ MODE }} --variant=essential --include=apt \
|
{{ 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 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 }}
|
{{ DIST }} /tmp/debian-chroot.tar {{ MIRROR }}
|
||||||
tar -tf /tmp/debian-chroot.tar | sort | grep -v ./var/lib/apt/extended_states | diff -u tar1.txt -
|
tar -tf /tmp/debian-chroot.tar | sort | grep -v ./var/lib/apt/extended_states | diff -u tar1.txt -
|
||||||
|
|
Loading…
Reference in a new issue