add a fallback mirror to be added in case when a local mirror is removed
[grml-debootstrap.git] / chroot-script
index 2512b95..89f0f8d 100755 (executable)
@@ -5,6 +5,9 @@
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
 ################################################################################
+# GRML_CHROOT_SCRIPT_MARKER - do not remove this line unless you want to keep
+# this script as /bin/chroot-script on your new installed system
+################################################################################
 
 . /etc/debootstrap/config    || exit 1
 . /etc/debootstrap/variables || exit 1
 
 # use aptitude only if it's available
 if [ -x /usr/bin/aptitude ] ; then
-   APTINSTALL="aptitude -y --without-recommends install $DPKG_OPTIONS"
    APTUPDATE='aptitude update'
-   APTUPGRADE='aptitude -y safe-upgrade'
+   # Debian ISOs do not contain signed Release files
+   if [ -n "$ISO" ] ; then
+      APTINSTALL="aptitude -y --allow-untrusted --without-recommends install $DPKG_OPTIONS"
+      APTUPGRADE='aptitude -y --allow-untrusted safe-upgrade'
+   else
+      APTINSTALL="aptitude -y --without-recommends install $DPKG_OPTIONS"
+      APTUPGRADE='aptitude -y safe-upgrade'
+   fi
 else
    APTINSTALL="apt-get --force-yes -y --no-install-recommends install $DPKG_OPTIONS"
    APTUPDATE='apt-get update'
@@ -88,6 +97,29 @@ chrootmirror() {
 }
 # }}}
 
+# remove local chroot mirror {{{
+remove_chrootmirror() {
+  if [ -n "$KEEP_SRC_LIST" ] ; then
+    echo "KEEP_SRC_LIST has been set, skipping remove_chrootmirror stage."
+    return
+  fi
+
+  if [ -n "$ISO" ] ; then
+    echo "Removing ISO (${ISO}) from sources.list."
+    TMP_ISO=$(echo "$ISO" |sed 's#/#\\/#g')
+    sed -i "/deb $TMP_ISO $RELEASE $COMPONENTS/ D" /etc/apt/sources.list
+  else
+    if [ -n "$MIRROR" -a -n "$(echo $MIRROR|grep file:)" ] ; then
+      echo "Removing local mirror (${MIRROR}) from sources.list."
+      TMP_MIRROR=$(echo "$MIRROR" |sed 's#/#\\/#g')
+      sed -i "/deb $TMP_MIRROR $RELEASE $COMPONENTS/ D" /etc/apt/sources.list
+      echo "Adding fallback mirror entry (${FALLBACK_MIRROR}) to sources.list instead."
+      echo "deb $FALLBACK_MIRROR $RELEASE $COMPONENTS" >> /etc/apt/sources.list
+    fi
+  fi
+}
+# }}}
+
 # set up grml repository {{{
 grmlrepos() {
   if [ -n "$GRMLREPOS" ] ; then
@@ -523,7 +555,8 @@ trap signal_handler HUP INT QUIT TERM
  for i in chrootmirror grmlrepos kernelimg_conf \
      kernel packages extrapackages  reconfigure hosts interfaces \
      timezone fstab hostname initrd grub_install passwords        \
-     custom_scripts upgrade_system remove_apt_cache services ; do
+     custom_scripts upgrade_system remove_apt_cache services \
+     remove_chrootmirror; do
      if stage $i ; then
        $i && stage $i done || exit 1
      fi