tag 543256 patch thanks On Sunday 23 August 2009, Marc 'HE' Brockschmidt wrote: > Please make installation of recommended packages in d-i optional, at > least by adding a question in expert mode. This is one of the features > quite a lot admins turn off right after installations (found out by an > ad-hoc survey here at FrOSCon).
IMO this option is well within the scope of the installer which is all about providing flexibility where reasonable. Attached patches (untested, but straightforward) for three components: - base-installer, where the question is asked (at medium priority) and APT is configured accordingly; the setting will persist for the installed system; - di-utils: apt-install will now respect the global setting instead of always ignoring Recommends; - pkgsel: same, and drop now redundant option to include Recommends for "include" (preseeded additional) packages. The template that asks the question is a first draft, but I do think we have to be fairly explicit. Notes: - in order for the base system to honor Recommends, we'd have to modify debootstrap, but I'm not sure whether it's very relevant there; the "standard" task _will_ honor the recommends choice; - Recommends will still only be installed *if available*, which will depend on the installation method, but note that this is similar to what we already have for non-key packages in tasks; this mainly affects full CD based installs without mirror; should be documented; - if we go this way it will mean that we'll have to continue to support the few "required Recommends" that have been identified in the past; one example is busybox for initramfs-tools, another that IMO is worth keeping is libgl1-mesa-dri for X.Org; we'll have to review the changes made by Joey in tasksel that dropped some packages from tasks, but I doubt many would need to be added back; I see two main advantages to going this way: - empower our more professional and experienced users; - D-I will be a lot more consistent, instead of some components behaving one way and some the other. Cheers, FJP
commit f5f7b6c5313984bc5b7b700a302aa4f48f6f4b22 Author: Frans Pop <f...@debian.org> Date: Sun Aug 23 23:20:01 2009 +0200 Ask whether to install recommended packages Question is asked at medium priority and defaults to installing them. APT in the target system is configured for the choice and the setting will be preserved for the installed system. diff --git a/packages/base-installer/debian/bootstrap-base.postinst b/packages/base-installer/debian/bootstrap-base.postinst index 433433f..2577622 100755 --- a/packages/base-installer/debian/bootstrap-base.postinst +++ b/packages/base-installer/debian/bootstrap-base.postinst @@ -54,6 +54,11 @@ fi FLAVOUR="$(arch_get_kernel_flavour || true)" +ask_install_recommends () { + db_input medium base-installer/install-recommends || true + db_go || exit 10 # back-up to menu +} + install_base_system () { if [ -s /cdrom/.disk/base_include ]; then INCLUDES="$INCLUDES,`grep -v '^#' /cdrom/.disk/base_include | tr '\n' , | sed 's/^,//g;s/,$//'`" @@ -133,6 +138,7 @@ install_base_system () { waypoint 1 check_target waypoint 1 get_mirror_info +waypoint 1 ask_install_recommends waypoint 100 install_base_system waypoint 1 pre_install_hooks waypoint 1 setup_dev diff --git a/packages/base-installer/debian/bootstrap-base.templates b/packages/base-installer/debian/bootstrap-base.templates index 17a40da..e647371 100644 --- a/packages/base-installer/debian/bootstrap-base.templates +++ b/packages/base-installer/debian/bootstrap-base.templates @@ -5,6 +5,23 @@ Type: text # :sl1: _Description: Install the base system +Template: base-installer/install-recommends +Type: boolean +Default: true +_Description: Install recommended packages? + By default the package management system will automatically install + packages recommended by other packages. These are packages which are + not required for the core functionality of the selected software, but + which do enhance that software. + . + This option allows to have a leaner system, but can also result in + features being missing that you might normally expect to be available. + You'd may have to manually install some of the recommended packages + to obtain the full functionality you want. + . + You should not deselect this option unless you are an experienced user. + Your choice will also determine the setting for the installed system. + Template: base-installer/cannot_install Type: error # The base system is the minimal Debian system diff --git a/packages/base-installer/library.sh b/packages/base-installer/library.sh index 55c0801..2127ee6 100644 --- a/packages/base-installer/library.sh +++ b/packages/base-installer/library.sh @@ -155,6 +155,13 @@ install_filesystems () { configure_apt_preferences () { [ ! -d "$APT_CONFDIR" ] && mkdir -p "$APT_CONFDIR" + # Install Recommends? + if db_get debian-installer/install-recommends && [ "$RET" = false ]; + cat >$APT_CONFDIR/00InstallRecommends <<EOT +APT::Install-Recommends "false"; +EOT + fi + # Make apt trust Debian CDs. This is not on by default (we think). # This will be left in place on the installed system. cat > $APT_CONFDIR/00trustcdrom <<EOT
commit 67aa5bf78fcf3aa4f8dc1cf9916020f5f682d6fc Author: Frans Pop <f...@debian.org> Date: Sun Aug 23 23:24:43 2009 +0200 Installing Recommends is now a global setting diff --git a/packages/debian-installer-utils/apt-install b/packages/debian-installer-utils/apt-install index c15757e..d067bff 100755 --- a/packages/debian-installer-utils/apt-install +++ b/packages/debian-installer-utils/apt-install @@ -30,7 +30,7 @@ if [ -e /var/lib/install-cd.id ] && \ fi ERRCODE=0 -in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -o APT::Install-Recommends=false -q -y --no-remove install $packages" || ERRCODE=$? +in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -q -y --no-remove install $packages" || ERRCODE=$? if [ "$REMOUNT_CD" ]; then load-install-cd "/target" || true
commit c3f0a3f84678030e9b5e87e6132b02238b51f046 Author: Frans Pop <f...@debian.org> Date: Sun Aug 23 23:24:04 2009 +0200 Installing Recommends is now a global setting diff --git a/packages/pkgsel/debian/pkgsel.templates b/packages/pkgsel/debian/pkgsel.templates index a8e0e6f..6ce4290 100644 --- a/packages/pkgsel/debian/pkgsel.templates +++ b/packages/pkgsel/debian/pkgsel.templates @@ -45,13 +45,6 @@ Type: string Description: for internal use; can be preseeded Comma/space-separated list of extra packages to install -Template: pkgsel/include/install-recommends -Type: boolean -Default: false -Description: for internal use; can be preseeded - If set to true, then also install packages Recommended by those listed in - pkgsel/include. - Template: pkgsel/progress/fallback Type: text _Description: Running ${SCRIPT}... diff --git a/packages/pkgsel/debian/postinst b/packages/pkgsel/debian/postinst index ae88bea..357e043 100755 --- a/packages/pkgsel/debian/postinst +++ b/packages/pkgsel/debian/postinst @@ -90,7 +90,7 @@ else sleep 2 # allow the message to be seen log "checking for (security) updates to the base system" - in-target sh -c "debconf-apt-progress --from 50 --to 100 --logstderr -- aptitude -q --without-recommends -y -o DPkg::options=--force-confnew '$upgrade_type'" || aptfailed + in-target sh -c "debconf-apt-progress --from 50 --to 100 --logstderr -- aptitude -q -y -o DPkg::options=--force-confnew '$upgrade_type'" || aptfailed tasksel_start=100 fi @@ -142,12 +142,6 @@ log "starting tasksel" db_progress INFO pkgsel/progress/tasksel in-target sh -c "tasksel --new-install --debconf-apt-progress='--from $tasksel_start --to $tasksel_end --logstderr'" || aptfailed -db_get pkgsel/include/install-recommends -if [ "$RET" = true ]; then - recommends= -else - recommends='--without-recommends' -fi db_get pkgsel/include if [ "$RET" ]; then log "installing additional packages" @@ -155,7 +149,7 @@ if [ "$RET" ]; then # Allow comma-separation so that this can more easily be preseeded # at the kernel command line. RET="$(printf '%s' "$RET" | sed 's/,/ /g')" - in-target sh -c "debconf-apt-progress --from 900 --to 950 --logstderr -- aptitude -q $recommends -y install -- $RET" || aptfailed + in-target sh -c "debconf-apt-progress --from 900 --to 950 --logstderr -- aptitude -q -y install -- $RET" || aptfailed fi log "finishing up" diff --git a/packages/pkgsel/pre-pkgsel.d/10popcon b/packages/pkgsel/pre-pkgsel.d/10popcon index 1110a06..e435284 100755 --- a/packages/pkgsel/pre-pkgsel.d/10popcon +++ b/packages/pkgsel/pre-pkgsel.d/10popcon @@ -4,7 +4,7 @@ set -e # Install popularity-contest but remove it if the user decides not to # participate. -if in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -o APT::Install-Recommends=false -q -y -f install popularity-contest"; then +if in-target sh -c "debconf-apt-progress --no-progress --logstderr -- apt-get -q -y -f install popularity-contest"; then if ! grep -q '^PARTICIPATE=\"*yes\"*' /target/etc/popularity-contest.conf; then in-target dpkg --purge popularity-contest fi