From e1ab57301f1014f81652aaf1b015b504cccbad9a Mon Sep 17 00:00:00 2001 From: Philip Roche Date: Mon, 22 Jan 2024 19:41:22 +0000 Subject: [PATCH] fix: Fix calls to `unminimize` if lxd-installer package not present (LP: #2049723) The unminimize script will try to install the lxd snap using the shim script `/usr/sbin/lxd` from the lxd-installer package. Previously `unminimize` was using `snap` to install `lxd` directly which was being diverted by diverting the `snap` command. This is no longer the case so we can remove `/usr/sbin/lxd` from the lxd-installer package if it exists and then redirect any calls to `/usr/sbin/lxd` to `/bin/true` This is a cherry pick forward port from Jammy livecd-rootfs version 2.765.37. (cherry picked from commit 8b83212372e0c1adb1dbdf7ead234f93c52a189e) --- debian/changelog | 7 +++++ .../hooks/01-unminimize.chroot_early | 30 ++++++++++++++----- 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/debian/changelog b/debian/changelog index 42c70398..54763960 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +livecd-rootfs (24.04.20) noble; urgency=medium + + * fix: Fix for calling unminimize if lxd-installer package + not installed. (LP: #2049723) + + -- Philip Roche Mon, 22 Jan 2024 13:26:43 +0000 + livecd-rootfs (24.04.19) noble; urgency=medium * live-build/auto/config: don't repeatedly add the same pass name to the diff --git a/live-build/ubuntu-server/hooks/01-unminimize.chroot_early b/live-build/ubuntu-server/hooks/01-unminimize.chroot_early index ec91fdc8..0d7ab5a4 100755 --- a/live-build/ubuntu-server/hooks/01-unminimize.chroot_early +++ b/live-build/ubuntu-server/hooks/01-unminimize.chroot_early @@ -10,14 +10,30 @@ case ${PASS} in ;; esac -# The unminimize script will try to install the lxd snap. We can't -# do that at this stage so just neuter the snap command (the snap +# The unminimize script will try to install the lxd snap using the shim script +# /usr/sbin/lxd from the lxd-installer package. +# We can't do that at this stage so just neuter the lxd command (the snap # will get properly seeded by generic machinery). -dpkg-divert --add --divert /usr/bin/snap.REAL --rename /usr/bin/snap -ln -s /bin/true /usr/bin/snap -yes | /usr/local/sbin/unminimize -rm /usr/bin/snap -dpkg-divert --remove --rename /usr/bin/snap +if [ -f "/usr/sbin/lxd" ]; then + dpkg-divert --add --divert /usr/sbin/lxd.REAL --rename /usr/sbin/lxd + ln -s /bin/true /usr/sbin/lxd + yes | /usr/local/sbin/unminimize + # unminimize also uninstalls lxd-installer package + # and also removed `/usr/sbin/lxd` as a result, so we don't need to restore, but + # we do need to remove the mock we used as part of dpkg-divert + # first we need to remove the diversion + dpkg-divert --remove --no-rename /usr/sbin/lxd + # now remove the renamed file that we originally diverted to + rm -v /usr/sbin/lxd.REAL +else + # if /usr/sbin/lxd doesn't exist then lxd-installer package isn't installed. + # Instead, we can mock the command to avoid the unminimize script failing + ln -s /bin/true /usr/sbin/lxd + yes | /usr/local/sbin/unminimize + # as the lxd-installer package was not installed and thus not removed by `unminimize` + # the mock /usr/sbin/lxd will still be present, so we need to remove it + rm -v /usr/sbin/lxd +fi # Fix up missing recommends. Other non-layered flavors handle this in # live-build/auto/build, but we need to do it here. Also, there are