[Bug 2080277] Re: FFe: lxd-installer should prompt before installing LXD
Launchpad Bug Tracker
2080277 at bugs.launchpad.net
Wed Sep 11 09:16:15 UTC 2024
This bug was fixed in the package lxd-installer - 8
---------------
lxd-installer (8) oracular; urgency=medium
* scripts/lxc: ask before proceeding if interactive (LP: #2073941, LP:
#2080277)
-- Simon Deziel <simon.deziel at canonical.com> Tue, 20 Aug 2024 16:56:55
-0400
** Changed in: lxd-installer (Ubuntu)
Status: In Progress => Fix Released
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to lxd-installer in Ubuntu.
https://bugs.launchpad.net/bugs/2080277
Title:
FFe: lxd-installer should prompt before installing LXD
Status in lxd-installer package in Ubuntu:
Fix Released
Bug description:
* Problem description:
It is quite easy to accidentally trigger the on-demand installation of
LXD's snap which takes a while. This is something that can, for
example, happen inside a LXD instance where the operator didn't notice
the instance was "entered". Something:
$ lxc launch ubuntu-minimal:noble c1
$ lxc shell c1 # accidentally enter `c1`
# lxc list # try to interact with LXD in the host but mistakenly triggers lxd-installer
This last step is taking a while because multiple snaps need to be
installed due to that `lxc list` being run in the wrong environment
(instance instead of host). This is why
https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2073941
and https://discourse.ubuntu.com/t/when-an-lxc-command-is-used-on-a-
system-without-lxc-lxd-lxd-is-immediately-installed-should-it-be-that-
way/46570 were opened/reported.
* Motivation for the FFe:
A better behavior would be for `lxd-installer` to detect if there is a
terminal and if yes, prompt for a confirmation before doing the
lengthy installation process. If no terminal is detect, it should
assume that LXD is to be installed on-demand (current behavior). That
is what https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
installer/+git/lxd-installer/+merge/471653
* Additional information:
lxd-installer authoritative sources live at
https://code.launchpad.net/~git-ubuntu-import/ubuntu/+source/lxd-
installer/+git/lxd-installer/+ref/ubuntu/devel so this is not a new
upstream release per se. As such, the only changelog would be:
* scripts/lxc: ask before proceeding if interactive (LP: #2073941,
LP: #2080277)
This changelog and the associated changes are being proposed for
merging in https://code.launchpad.net/~sdeziel/ubuntu/+source/lxd-
installer/+git/lxd-installer/+merge/471653
The changes themselves are simply to prompt for confirmation before
proceeding with the lengthy installation if a terminal is detected.
Source build logs:
$ dpkg-buildpackage --build=source --no-sign -sa
dpkg-buildpackage: info: source package lxd-installer
dpkg-buildpackage: info: source version 8
dpkg-buildpackage: info: source distribution oracular
dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
dpkg-source --before-build .
debian/rules clean
dh clean
dh_auto_clean
dh_clean
dpkg-source -b .
dpkg-source: info: using source format '3.0 (native)'
dpkg-source: info: building lxd-installer in lxd-installer_8.tar.xz
dpkg-source: info: building lxd-installer in lxd-installer_8.dsc
dpkg-genbuildinfo --build=source -O../lxd-installer_8_source.buildinfo
dpkg-genchanges -sa --build=source -O../lxd-installer_8_source.changes
dpkg-genchanges: info: including full source code in upload
dpkg-source --after-build .
dpkg-buildpackage: info: source-only upload: Debian-native package
Binary build logs:
$ dpkg-buildpackage --build=binary --no-sign -sa
dpkg-buildpackage: info: source package lxd-installer
dpkg-buildpackage: info: source version 8
dpkg-buildpackage: info: source distribution oracular
dpkg-buildpackage: info: source changed by Simon Deziel <simon.deziel at canonical.com>
dpkg-buildpackage: info: host architecture amd64
dpkg-source --before-build .
debian/rules clean
dh clean
dh_auto_clean
dh_clean
debian/rules binary
dh binary
dh_update_autotools_config
dh_autoreconf
dh_auto_configure
dh_auto_build
make -j12 "INSTALL=install --strip-program=true"
make[1]: Entering directory '/home/ubuntu/lxd-installer'
true
make[1]: Leaving directory '/home/ubuntu/lxd-installer'
dh_auto_test
create-stamp debian/debhelper-build-stamp
dh_prep
dh_auto_install --destdir=debian/lxd-installer/
make -j12 install DESTDIR=/home/ubuntu/lxd-installer/debian/lxd-installer AM_UPDATE_INFO_DIR=no "INSTALL=install --strip-program=true"
make[1]: Entering directory '/home/ubuntu/lxd-installer'
mkdir -p /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
install -m 0755 scripts/lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin
ln -sf lxc /home/ubuntu/lxd-installer/debian/lxd-installer/usr/sbin/lxd
install -m 0755 lxd-installer-service /home/ubuntu/lxd-installer/debian/lxd-installer/usr/share/lxd-installer
make[1]: Leaving directory '/home/ubuntu/lxd-installer'
dh_installdocs
dh_installchangelogs
dh_installsystemd
dh_perl
dh_link
dh_strip_nondeterminism
dh_compress
dh_fixperms
dh_missing
dh_installdeb
dh_gencontrol
dpkg-gencontrol: warning: Depends field of package lxd-installer: substitution variable ${shlibs:Depends} used, but is not defined
dh_md5sums
dh_builddeb
dpkg-deb: building package 'lxd-installer' in '../lxd-installer_8_all.deb'.
dpkg-genbuildinfo --build=binary -O../lxd-installer_8_amd64.buildinfo
dpkg-genchanges -sa --build=binary -O../lxd-installer_8_amd64.changes
dpkg-genchanges: info: binary-only upload (no source code included)
dpkg-source --after-build .
dpkg-buildpackage: info: binary-only upload (no source included)
Install logs from a LXD VM:
$ lxc launch ubuntu-daily:24.10 c1
Launching c1
$ lxc file push /tmp/l/lxd-installer_8_all.deb c1/tmp/
$ lxc shell c1
root at c1:~# apt-get install /tmp/lxd-installer_8_all.deb
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'lxd-installer' instead of '/tmp/lxd-installer_8_all.deb'
The following packages will be upgraded:
lxd-installer
1 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/4912 B of archives.
After this operation, 1024 B of additional disk space will be used.
Get:1 /tmp/lxd-installer_8_all.deb lxd-installer all 8 [4912 B]
(Reading database ... 38022 files and directories currently installed.)
Preparing to unpack /tmp/lxd-installer_8_all.deb ...
Unpacking lxd-installer (8) over (7) ...
Setting up lxd-installer (8) ...
Scanning processes...
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this
host.
And now to confirm the prompt is only present when running interactively:
root at c1:~# lxc list
Would you like to install LXD snap now (Y/n)?
n
When "scripted", there is no prompting:
root at c1:~# lxc list | cat
Installing LXD snap, please be patient.
If this is your first time running LXD on this machine, you should also run: lxd init
To start your first container, try: lxc launch ubuntu:24.04
Or for a virtual machine: lxc launch ubuntu:24.04 --vm
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
This shows that accidentally running a `lxc` command interactively will be easy to cancel.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2080277/+subscriptions
More information about the foundations-bugs
mailing list