DEBORPHAN: rework to not skip all its execution if deborphan is missing; update docs... mika/deborphan
authorMichael Prokop <mika@grml.org>
Thu, 25 Apr 2024 11:48:57 +0000 (13:48 +0200)
committerMichael Prokop <mika@grml.org>
Thu, 25 Apr 2024 11:49:21 +0000 (13:49 +0200)
deborphan is missing since Debian/trixie, though `apt-get -y --purge
autoremove` as well as `dpkg --purge` of packages in rc state are still
useful. Avoid renaming of DEBORPHAN class, as that might break existing
setups.  Instead clarify usage and purpose of DEBORPHAN in docs.

Closes: https://github.com/grml/grml-live/issues/144

docs/grml-live.txt
etc/grml/fai/config/scripts/DEBORPHAN/98-clean-chroot

index da845af..2cedb6d 100644 (file)
@@ -330,7 +330,14 @@ ${GRML_FAI_CONFIG}/config/package_config whereas some further classes are define
 example in ${GRML_FAI_CONFIG}/config/scripts/ so specific feature sets can be
 selected. The following classes are predefined:
 
-* DEBORPHAN: get rid of all packages listed in output of deborphan
+* DEBORPHAN: get rid of "autoremove" and "removed-but-not-yet-purged" packages;
+also all packages listed in output of deborphan (only if deborphan is actually
+present, note that grml-live no longer installs deborphan by default as it's not
+present since Debian/trixie!). This class is called as such for historic
+reasons, and while deborphan itself is no longer relevant nowadays, the name of
+the class was kept as such for backwards compatibility reasons. This class is
+thought to be used *before* any further `GRML*` classes, like
+`DEBORPHAN,GRMLBASE,GRML_FULL,RELEASE,...` to get proper Grml releases.
 
 * FRESHCLAM: execute freshclam (if it's present) to update clamav definitions
 (increases resulting ISO size ~70MB). By default it's skipped to avoid bigger
index 42ed9c2..dce15d4 100755 (executable)
@@ -9,21 +9,10 @@
 set -u
 set -e
 
-if ! [ -x $target/usr/bin/deborphan ] ; then
-  echo "Warning: deborphan not installed"
-  exit 0
-fi
-
 # remove all packages not necessary anymore:
 echo "Executing apt-get -y --purge autoremove"
 $ROOTCMD apt-get -y --purge autoremove
 
-# remove packages until deborphan does not find anymore:
-while [ "$($ROOTCMD deborphan)" != "" ] ; do
-  echo "Executing deborphan"
-  $ROOTCMD apt-get -y --purge remove $($ROOTCMD deborphan)
-done
-
 # make sure we don't have any removed but not-yet-purged packages left,
 # otherwise GRMLBASE/03-get-sources might try to download unavailable
 # packages and will fail doing so
@@ -34,5 +23,15 @@ if [ -n "$PURGE_PACKAGES" ] ; then
   $ROOTCMD dpkg --purge $PURGE_PACKAGES
 fi
 
+# note: deborphan is no longer available as of Debian/trixie,
+# see https://github.com/grml/grml-live/issues/144
+if [ -x "$target"/usr/bin/deborphan ] ; then
+  # remove packages until deborphan does not find anymore:
+  while [ "$($ROOTCMD deborphan)" != "" ] ; do
+    echo "Executing deborphan"
+    $ROOTCMD apt-get -y --purge remove $($ROOTCMD deborphan)
+  done
+fi
+
 ## END OF FILE #################################################################
 # vim:ft=sh expandtab ai tw=80 tabstop=4 shiftwidth=2