D-I now always installs Recommends by default, except when base-installer/install-recommends is preseeded to false. However, there are a few specific cases where we want to force installing or not installing Recommends with specific packages, irrespective of what the default setting is. An example where we *do* always want Recommends is initramfs-tools, which recommends busybox. In such cases we currently manually apt-install the recommended package. Another case where we may want to force Recommends is kernel images, now that they recommend firmware-linux-free [2]. An example where we *do not* was Recommends came up recently. hw-detect apt-installs acpi-support-base, which depends on console-tools, which recommends console-common and console-data or console-setup. However, the decision whether or not to install console packages is made elsewhere. For example, for serial-console installs we don't install any console packages. Attached a patchseries that makes apt-install recognize two options, --no-recommends and --with-recommends, which allow us to force the correct behavior in such cases. The options are preserved in the queue file [1] if installation of the package is delayed to base-installer. Note that use of these options should remain the exception. Normally we should just honor the general setting. Patches are not yet tested and intended for after the release. Comments? Cheers, FJP [1] Note that only any options passed the first time a package is apt-installed get included. This should not be a problem in practice. [2] For which we should probably have one or more udebs (or else include the firmware files in the correct existing udebs)!
commit db23e412918d6719b38e145a2fe50d34a8e4059d
Author: Frans Pop <fjp@debian.org>
Date: Tue Dec 8 15:10:04 2009 +0100
apt-install: allow to force installing or ignoring Recommends
Irrespective of the default set in base-installer/install-recommends.
This can be used in specific cases where a package really is not usable
without its recommends, or where a package pulls in really undesired extra
packages through Recommends.
Use of this option requires base-installer 1.104.
diff --git a/packages/debian-installer-utils/apt-install b/packages/debian-installer-utils/apt-install
index d067bff..4b979cf 100755
--- a/packages/debian-installer-utils/apt-install
+++ b/packages/debian-installer-utils/apt-install
@@ -2,6 +2,28 @@
set -e
. /lib/chroot-setup.sh
+NO_RECOMMENDS=
+WITH_RECOMMENDS=
+OPTS=
+while :; do
+ case $1 in
+ --no-recommends)
+ NO_RECOMMENDS=1
+ OPTS="$OPTS $1"
+ ;;
+ --with-recommends)
+ WITH_RECOMMENDS=1
+ OPTS="$OPTS $1"
+ ;;
+ -*)
+ logger -t apt-install "Ignored unrecognized option '$1'"
+ ;;
+ *)
+ break
+ ;;
+ esac
+ shift
+done
packages=$@
queue=/var/lib/apt-install/queue
@@ -13,9 +35,9 @@ if [ ! -e /target/etc/apt/sources.list ]; then
mkdir -p /var/lib/apt-install
touch $queue
for pkg in $packages; do
- if ! grep -q "^$pkg$" $queue; then
+ if ! grep -Eq "^$pkg([[:space:]]|$)" $queue; then
logger -t apt-install "Queueing package $pkg for later installation"
- echo "$pkg" >> $queue
+ echo "$pkg$OPTS" >> $queue
fi
done
@@ -29,8 +51,20 @@ if [ -e /var/lib/install-cd.id ] && \
log-output -t apt-install umount /cdrom || true
fi
+apt_opts=
+if db_get base-installer/install-recommends && [ "$RET" = false ]; then
+ if [ "$WITH_RECOMMENDS" ]; then
+ apt_opts="$apt_opts -o APT::Install-Recommends=true"
+ fi
+else
+ if [ "$NO_RECOMMENDS" ]; then
+ apt_opts="$apt_opts -o APT::Install-Recommends=false"
+ fi
+fi
+
ERRCODE=0
-in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -q -y --no-remove install $packages" || ERRCODE=$?
+in-target sh -c "debconf-apt-progress --no-progress --logstderr -- \
+ apt-get -q -y --no-remove $apt_opts install $packages" || ERRCODE=$?
if [ "$REMOUNT_CD" ]; then
load-install-cd "/target" || true
diff --git a/packages/debian-installer-utils/debian/changelog b/packages/debian-installer-utils/debian/changelog
index f839270..fc9fd76 100644
--- a/packages/debian-installer-utils/debian/changelog
+++ b/packages/debian-installer-utils/debian/changelog
@@ -1,3 +1,11 @@
+debian-installer-utils (1.73) UNRELEASED; urgency=low
+
+ * apt-install: allow to force installing or ignoring Recommends irrespective
+ of the default set in base-installer/install-recommends.
+ Use of this option requires base-installer 1.104.
+
+ -- Frans Pop <fjp@debian.org> Tue, 08 Dec 2009 15:05:59 +0100
+
debian-installer-utils (1.72) unstable; urgency=low
[ Colin Watson ]
commit 8477b6dffdedb72434721fbb18e019c555b0b789
Author: Frans Pop <fjp@debian.org>
Date: Tue Dec 8 15:22:07 2009 +0100
Allow for options to be present in queue for apt-install
As of di-utils 1.73 apt-install can accept options. In the queue file
these are included after the package names (separated by a space).
diff --git a/packages/base-installer/debian/changelog b/packages/base-installer/debian/changelog
index 28e58e4..834c7cc 100644
--- a/packages/base-installer/debian/changelog
+++ b/packages/base-installer/debian/changelog
@@ -1,3 +1,9 @@
+base-installer (1.104) UNRELEASED; urgency=low
+
+ * Allow for options to be present in queue for apt-install (di-utils 1.73).
+
+ -- Frans Pop <fjp@debian.org> Tue, 08 Dec 2009 15:16:58 +0100
+
base-installer (1.103) unstable; urgency=low
[ Aurelien Jarno ]
diff --git a/packages/base-installer/library.sh b/packages/base-installer/library.sh
index 154b4c9..e21085c 100644
--- a/packages/base-installer/library.sh
+++ b/packages/base-installer/library.sh
@@ -197,13 +197,15 @@ install_extra () {
if [ -f /var/lib/apt-install/queue ] ; then
# We need to install these one by one in case one fails.
- PKG_COUNT=`cat /var/lib/apt-install/queue | wc -w`
+ PKG_COUNT=$(cat /var/lib/apt-install/queue | wc -w)
CURR_PKG=0
- for PKG in `cat /var/lib/apt-install/queue`; do
+ for LINE in $(cat /var/lib/apt-install/queue); do
+ PKG=${LINE%% *}
+ OPTS=$(echo "$LINE" | sed 's/ .*//')
db_subst base-installer/section/install_extra_package SUBST0 "$PKG"
db_progress INFO base-installer/section/install_extra_package
- if ! log-output -t base-installer apt-install $PKG; then
+ if ! log-output -t base-installer apt-install $OPTS $PKG; then
warning "Failed to install $PKG into /target/: $?"
fi
commit 5055017c316afe8259be15f935bd585ee781cf32
Author: Frans Pop <fjp@debian.org>
Date: Tue Dec 8 15:28:35 2009 +0100
hw-detect.sh: use --no-recommends with apt-install acpi-support-base
This is to avoid pulling in console-{common,data} through console-tools,
which is a really undesired side-effect. The decision to (not) install
console-{common,data} or console-setup is made elsewhere.
Requires di-utils 1.73 and base-installer 1.104.
diff --git a/packages/hw-detect/debian/changelog b/packages/hw-detect/debian/changelog
index d1cda69..18eb860 100644
--- a/packages/hw-detect/debian/changelog
+++ b/packages/hw-detect/debian/changelog
@@ -29,6 +29,9 @@ hw-detect (1.74) UNRELEASED; urgency=low
* Remove no longer needed Lintian override for missing Standards-
Version field.
* Always test for USB support using /sys/bus/usb. Closes: #534413.
+ * hw-detect.sh: avoid pulling in console-{common,data} through console-tools
+ when apt-installing acpi-support-base.
+ Requires di-utils 1.73 and base-installer 1.104.
-- Gaudenz Steilin <gaudenz@debian.org> Sat, 25 Jul 2009 13:02:53 +0200
diff --git a/packages/hw-detect/debian/control b/packages/hw-detect/debian/control
index 15319c2..33f8f79 100644
--- a/packages/hw-detect/debian/control
+++ b/packages/hw-detect/debian/control
@@ -9,7 +9,7 @@ Vcs-Svn: svn://svn.debian.org/d-i/trunk/packages/hw-detect
Package: hw-detect
XC-Package-Type: udeb
Architecture: any
-Depends: rootskel (>= 1.30), archdetect, cdebconf-udeb (>= 0.75), di-utils (>= 1.66)
+Depends: rootskel (>= 1.30), archdetect, cdebconf-udeb (>= 0.75), di-utils (>= 1.73)
Description: Detect hardware and load kernel drivers for it
Package: ethdetect
diff --git a/packages/hw-detect/hw-detect.sh b/packages/hw-detect/hw-detect.sh
index 220070a..b7e21ec 100755
--- a/packages/hw-detect/hw-detect.sh
+++ b/packages/hw-detect/hw-detect.sh
@@ -481,7 +481,8 @@ fi
if [ -d /proc/acpi ]; then
apt-install acpi || true
apt-install acpid || true
- apt-install acpi-support-base || true
+ # Avoid pulling in console-{common,data} through console-tools
+ apt-install --no-recommends acpi-support-base || true
fi
# If hardware has support for pmu, install pbbuttonsd
Attachment:
signature.asc
Description: This is a digitally signed message part.