diff --git a/debian/changelog b/debian/changelog index 1655a3db..b137231b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +livecd-rootfs (2.765.37) jammy; 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 (2.765.36) jammy; urgency=medium * Use correct /etc/ssh/sshd_config.d/ filename so cloud-init overrides diff --git a/live-build/ubuntu-server/hooks/01-unminimize.chroot_early b/live-build/ubuntu-server/hooks/01-unminimize.chroot_early index f70b59b4..1265966b 100755 --- a/live-build/ubuntu-server/hooks/01-unminimize.chroot_early +++ b/live-build/ubuntu-server/hooks/01-unminimize.chroot_early @@ -10,11 +10,27 @@ 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 \ No newline at end of file