SRU Request
[Impact]
* ubuntu-drivers installs unnecessary packages when using the "--gpgpu" argument. Also, it should not depend on alsa-utils, its relevant test should.
[Fix]
* Passing in "--no-install-recommends" by default with the "--gpgpu" argument will solve the problem. Also, moving the alsa-utils dependency into the test avoids installing an unneeded dependency on servers.
[Test Case]
* Install ubuntu-drivers-common from -proposed.
* Make sure it doesn't pull in alsa-utils.
* Install the nvidia driver using "sudo ubuntu-drivers install --gpgpu", and check that the desktop related dependencies are not pulled in.
[Regression Risk]
Low, since it changes the amount of dependencies we install on servers.
____________________
+++Update+++
I am in a position where I need to run regression testing using the nVidia drivers on systems configured for GPU compute. This bug prevents me from using ubuntu-drivers to ensure I have the latest Ubuntu Signed drivers.
To resolve this, ubuntu-drivers would need to honor --no-install-recommends and not install all those unnecessary desktop environment packages that make no sense on a headless server
-------------
When I install the packaged nVidia drivers using --gpgpu, I expect that I am getting compute related GPGPU drivers. Instead, I find that on a fresh Focal installation of Ubuntu Server, I also get a full desktop environment.
This sets us up nicely for this bug: https://bugs.launchpad.net/ubuntu/+source/gdm3/+bug/1862559
because this pulls in gdm3 and a whole host of unnecessary desktop packages but does nothing to mitigate the gdm3 propensity to autosuspend, which makes the server become unresponsive when there is no user activity (even when it's running workloads on the GPGPU, the server can still autosuspend).
Additionally, this adds a software stack that causes unnecessary CPU and memory usage on a machine that is meant to run headless and devote all resources to handling GPGPU compute activities.
This is gpgpu mode
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
apg aptdaemon aptdaemon-data aspell aspell-en avahi-daemon avahi-utils bluez bubblewrap colord colord-data cracklib-runtime cups-pk-helper dbus-x11 dconf-cli desktop-file-utils dictionaries-common docbook-xml emacsen-common enchant-2
evolution-data-server evolution-data-server-common fprintd gcr gdm3 geoclue-2.0 gir1.2-accountsservice-1.0 gir1.2-atspi-2.0 gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0 gir1.2-gdm-1.0 gir1.2-geoclue-2.0 gir1.2-gnomebluetooth-1.0
gir1.2-gnomedesktop-3.0 gir1.2-graphene-1.0 gir1.2-gweather-3.0 gir1.2-ibus-1.0 gir1.2-mutter-6 gir1.2-nm-1.0 gir1.2-nma-1.0 gir1.2-notify-0.7 gir1.2-polkit-1.0 gir1.2-rsvg-2.0 gir1.2-secret-1 gir1.2-soup-2.4 gir1.2-upowerglib-1.0
gir1.2-vte-2.91 gjs gkbd-capplet gnome-control-center gnome-control-center-data gnome-control-center-faces gnome-desktop3-data gnome-keyring gnome-keyring-pkcs11 gnome-menus gnome-online-accounts gnome-session-bin gnome-session-common
gnome-settings-daemon gnome-settings-daemon-common gnome-shell gnome-shell-common gnome-startup-applications gnome-user-docs gstreamer1.0-clutter-3.0 hunspell-en-us ibus ibus-data ibus-gtk ibus-gtk3 iio-sensor-proxy im-config ippusbxd
language-selector-gnome libappindicator3-1 libasound2-plugins libaspell15 libavahi-core7 libavahi-glib1 libcamel-1.2-62 libcanberra-gtk3-0 libcanberra-gtk3-module libcanberra-pulse libcheese-gtk25 libclutter-gtk-1.0-0 libcolord-gtk1
libcolorhug2 libcrack2 libdaemon0 libdbusmenu-glib4 libdbusmenu-gtk3-4 libebackend-1.2-10 libebook-1.2-20 libebook-contacts-1.2-3 libecal-2.0-1 libedata-book-1.2-26 libedata-cal-2.0-1 libedataserver-1.2-24 libedataserverui-1.2-2
libenchant-2-2 libexif12 libfontenc1 libfprint-2-2 libgail-common libgail18 libgck-1-0 libgcr-base-3-1 libgcr-ui-3-1 libgd3 libgdata-common libgdata22 libgdm1 libgee-0.8-2 libgeoclue-2-0 libgeocode-glib0 libgjs0g libgles2
libgnome-autoar-0-0 libgnome-bluetooth13 libgnome-desktop-3-19 libgnomekbd-common libgnomekbd8 libgoa-1.0-0b libgoa-1.0-common libgoa-backend-1.0-1 libgphoto2-6 libgphoto2-l10n libgphoto2-port12 libgsound0 libgssdp-1.2-0 libgtk2.0-0
libgtk2.0-bin libgtk2.0-common libgtop-2.0-11 libgtop2-common libgupnp-1.2-0 libgupnp-av-1.0-2 libgupnp-dlna-2.0-3 libgweather-3-16 libgweather-common libharfbuzz-icu0 libhunspell-1.7-0 libhyphen0 libibus-1.0-5 libical3 libice6
libieee1284-3 libimobiledevice6 libjavascriptcoregtk-4.0-18 libldb2 libmediaart-2.0-0 libmozjs-68-0 libmutter-6-0 libnma0 libnotify4 libnss-mdns libnvidia-cfg1-435 libnvidia-common-435 libnvidia-compute-435 libnvidia-decode-435
libnvidia-encode-435 libnvidia-fbc1-435 libnvidia-gl-435 libnvidia-ifr1-435 libopenjp2-7 libpam-fprintd libpam-gnome-keyring libphonenumber7 libplist3 libprotobuf17 libpulse-mainloop-glib0 libpulsedsp libpwquality-common libpwquality1
librygel-core-2.6-2 librygel-db-2.6-2 librygel-renderer-2.6-2 librygel-server-2.6-2 libsane libsane-common libsbc1 libsecret-1-0 libsecret-common libsm6 libsmbclient libsnapd-glib1 libsoxr0 libspeexdsp1 libstartup-notification0 libtalloc2
libtevent0 libupower-glib3 libusbmuxd6 libvdpau1 libwbclient0 libwebkit2gtk-4.0-37 libwebrtc-audio-processing1 libwhoopsie-preferences0 libwhoopsie0 libwoff1 libxatracker2 libxaw7 libxcb-icccm4 libxcb-image0 libxcb-keysyms1
libxcb-render-util0 libxcb-res0 libxcb-shape0 libxcb-util1 libxcb-xkb1 libxcb-xv0 libxfont2 libxkbcommon-x11-0 libxkbfile1 libxklavier16 libxmu6 libxpm4 libxss1 libxt6 libxvmc1 libyelp0 linux-modules-nvidia-435-5.4.0-48-generic
mesa-vdpau-drivers mobile-broadband-provider-info mousetweaks mutter mutter-common network-manager-gnome nvidia-compute-utils-435 nvidia-kernel-common-435 nvidia-kernel-source-435 nvidia-prime nvidia-settings nvidia-utils-435 p11-kit
p11-kit-modules pinentry-gnome3 pkg-config pulseaudio pulseaudio-module-bluetooth pulseaudio-utils python3-aptdaemon python3-aptdaemon.gtk3widgets python3-cairo python3-cups python3-cupshelpers python3-defer python3-ibus-1.0
python3-macaroonbakery python3-protobuf python3-rfc3339 python3-talloc python3-tz rtkit rygel samba-libs sane-utils screen-resolution-extra session-migration sgml-base sgml-data switcheroo-control system-config-printer
system-config-printer-common system-config-printer-udev ubuntu-docs ubuntu-session ubuntu-wallpapers ubuntu-wallpapers-focal unzip update-inetd upower usbmuxd vdpau-driver-all wamerican whoopsie-preferences x11-xkb-utils x11-xserver-utils
xdg-dbus-proxy xfonts-base xfonts-encodings xfonts-utils xml-core xserver-common xserver-xephyr xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-libinput xserver-xorg-input-wacom xserver-xorg-legacy
xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-nvidia-435 xserver-xorg-video-qxl xserver-xorg-video-radeon
xserver-xorg-video-vesa xserver-xorg-video-vmware xwayland yaru-theme-gnome-shell yelp yelp-xsl zenity zenity-common
Suggested packages:
aspell-doc spellutils avahi-autoipd colord-sensor-argyll docbook docbook-dsssl docbook-xsl docbook-defguide evolution gnome-orca gnome-software | gnome-packagekit gnome-user-share realmd libcanberra-gtk-module usbguard chrome-gnome-shell
gir1.2-telepathyglib-0.12 gnome-themes-standard-data gnome-backgrounds gir1.2-telepathylogger-0.2 hunspell openoffice.org-hunspell | openoffice.org-core ibus-clutter ibus-doc indicator-application libenchant-2-voikko libgd-tools gphoto2
gvfs libusbmuxd-tools avahi-autoipd | zeroconf hplip gstreamer1.0-libav network-manager-openconnect-gnome network-manager-openvpn-gnome network-manager-vpnc-gnome network-manager-pptp-gnome pinentry-doc pavumeter pavucontrol paman paprefs
ubuntu-sounds gstreamer1.0-plugins-ugly rygel-playbin rygel-preferences rygel-ruih rygel-tracker tumbler unpaper sgml-base-doc perlsgml w3-recs opensp libxml2-utils gnome-software python3-smbc ubuntu-wallpapers-karmic
ubuntu-wallpapers-lucid ubuntu-wallpapers-maverick ubuntu-wallpapers-natty ubuntu-wallpapers-oneiric ubuntu-wallpapers-precise ubuntu-wallpapers-quantal ubuntu-wallpapers-raring ubuntu-wallpapers-saucy ubuntu-wallpapers-trusty
ubuntu-wallpapers-utopic ubuntu-wallpapers-vivid ubuntu-wallpapers-wily ubuntu-wallpapers-xenial ubuntu-wallpapers-yakkety ubuntu-wallpapers-zesty ubuntu-wallpapers-artful ubuntu-wallpapers-bionic ubuntu-wallpapers-cosmic
ubuntu-wallpapers-disco ubuntu-wallpapers-eoan zip libvdpau-va-gl1 nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver nvidia-legacy-304xx-vdpau-driver nickle cairo-5c xorg-docs-core debhelper xfonts-100dpi | xfonts-75dpi xfonts-scalable
xinput firmware-amd-graphics xserver-xorg-video-r128 xserver-xorg-video-mach64 firmware-misc-nonfree
Recommended packages:
libnvidia-compute-435:i386 libnvidia-decode-435:i386 libnvidia-encode-435:i386 libnvidia-ifr1-435:i386 libnvidia-fbc1-435:i386 libnvidia-gl-435:i386
The following NEW packages will be installed:
apg aptdaemon aptdaemon-data aspell aspell-en avahi-daemon avahi-utils bluez bubblewrap colord colord-data cracklib-runtime cups-pk-helper dbus-x11 dconf-cli desktop-file-utils dictionaries-common docbook-xml emacsen-common enchant-2
evolution-data-server evolution-data-server-common fprintd gcr gdm3 geoclue-2.0 gir1.2-accountsservice-1.0 gir1.2-atspi-2.0 gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0 gir1.2-gdm-1.0 gir1.2-geoclue-2.0 gir1.2-gnomebluetooth-1.0
gir1.2-gnomedesktop-3.0 gir1.2-graphene-1.0 gir1.2-gweather-3.0 gir1.2-ibus-1.0 gir1.2-mutter-6 gir1.2-nm-1.0 gir1.2-nma-1.0 gir1.2-notify-0.7 gir1.2-polkit-1.0 gir1.2-rsvg-2.0 gir1.2-secret-1 gir1.2-soup-2.4 gir1.2-upowerglib-1.0
gir1.2-vte-2.91 gjs gkbd-capplet gnome-control-center gnome-control-center-data gnome-control-center-faces gnome-desktop3-data gnome-keyring gnome-keyring-pkcs11 gnome-menus gnome-online-accounts gnome-session-bin gnome-session-common
gnome-settings-daemon gnome-settings-daemon-common gnome-shell gnome-shell-common gnome-startup-applications gnome-user-docs gstreamer1.0-clutter-3.0 hunspell-en-us ibus ibus-data ibus-gtk ibus-gtk3 iio-sensor-proxy im-config ippusbxd
language-selector-gnome libappindicator3-1 libasound2-plugins libaspell15 libavahi-core7 libavahi-glib1 libcamel-1.2-62 libcanberra-gtk3-0 libcanberra-gtk3-module libcanberra-pulse libcheese-gtk25 libclutter-gtk-1.0-0 libcolord-gtk1
libcolorhug2 libcrack2 libdaemon0 libdbusmenu-glib4 libdbusmenu-gtk3-4 libebackend-1.2-10 libebook-1.2-20 libebook-contacts-1.2-3 libecal-2.0-1 libedata-book-1.2-26 libedata-cal-2.0-1 libedataserver-1.2-24 libedataserverui-1.2-2
libenchant-2-2 libexif12 libfontenc1 libfprint-2-2 libgail-common libgail18 libgck-1-0 libgcr-base-3-1 libgcr-ui-3-1 libgd3 libgdata-common libgdata22 libgdm1 libgee-0.8-2 libgeoclue-2-0 libgeocode-glib0 libgjs0g libgles2
libgnome-autoar-0-0 libgnome-bluetooth13 libgnome-desktop-3-19 libgnomekbd-common libgnomekbd8 libgoa-1.0-0b libgoa-1.0-common libgoa-backend-1.0-1 libgphoto2-6 libgphoto2-l10n libgphoto2-port12 libgsound0 libgssdp-1.2-0 libgtk2.0-0
libgtk2.0-bin libgtk2.0-common libgtop-2.0-11 libgtop2-common libgupnp-1.2-0 libgupnp-av-1.0-2 libgupnp-dlna-2.0-3 libgweather-3-16 libgweather-common libharfbuzz-icu0 libhunspell-1.7-0 libhyphen0 libibus-1.0-5 libical3 libice6
libieee1284-3 libimobiledevice6 libjavascriptcoregtk-4.0-18 libldb2 libmediaart-2.0-0 libmozjs-68-0 libmutter-6-0 libnma0 libnotify4 libnss-mdns libnvidia-cfg1-435 libnvidia-common-435 libnvidia-compute-435 libnvidia-decode-435
libnvidia-encode-435 libnvidia-fbc1-435 libnvidia-gl-435 libnvidia-ifr1-435 libopenjp2-7 libpam-fprintd libpam-gnome-keyring libphonenumber7 libplist3 libprotobuf17 libpulse-mainloop-glib0 libpulsedsp libpwquality-common libpwquality1
librygel-core-2.6-2 librygel-db-2.6-2 librygel-renderer-2.6-2 librygel-server-2.6-2 libsane libsane-common libsbc1 libsecret-1-0 libsecret-common libsm6 libsmbclient libsnapd-glib1 libsoxr0 libspeexdsp1 libstartup-notification0 libtalloc2
libtevent0 libupower-glib3 libusbmuxd6 libvdpau1 libwbclient0 libwebkit2gtk-4.0-37 libwebrtc-audio-processing1 libwhoopsie-preferences0 libwhoopsie0 libwoff1 libxatracker2 libxaw7 libxcb-icccm4 libxcb-image0 libxcb-keysyms1
libxcb-render-util0 libxcb-res0 libxcb-shape0 libxcb-util1 libxcb-xkb1 libxcb-xv0 libxfont2 libxkbcommon-x11-0 libxkbfile1 libxklavier16 libxmu6 libxpm4 libxss1 libxt6 libxvmc1 libyelp0 linux-modules-nvidia-435-5.4.0-48-generic
linux-modules-nvidia-435-generic-hwe-20.04 mesa-vdpau-drivers mobile-broadband-provider-info mousetweaks mutter mutter-common network-manager-gnome nvidia-compute-utils-435 nvidia-driver-435 nvidia-kernel-common-435 nvidia-kernel-source-435
nvidia-prime nvidia-settings nvidia-utils-435 p11-kit p11-kit-modules pinentry-gnome3 pkg-config pulseaudio pulseaudio-module-bluetooth pulseaudio-utils python3-aptdaemon python3-aptdaemon.gtk3widgets python3-cairo python3-cups
python3-cupshelpers python3-defer python3-ibus-1.0 python3-macaroonbakery python3-protobuf python3-rfc3339 python3-talloc python3-tz rtkit rygel samba-libs sane-utils screen-resolution-extra session-migration sgml-base sgml-data
switcheroo-control system-config-printer system-config-printer-common system-config-printer-udev ubuntu-docs ubuntu-session ubuntu-wallpapers ubuntu-wallpapers-focal unzip update-inetd upower usbmuxd vdpau-driver-all wamerican
whoopsie-preferences x11-xkb-utils x11-xserver-utils xdg-dbus-proxy xfonts-base xfonts-encodings xfonts-utils xml-core xserver-common xserver-xephyr xserver-xorg xserver-xorg-core xserver-xorg-input-all xserver-xorg-input-libinput
xserver-xorg-input-wacom xserver-xorg-legacy xserver-xorg-video-all xserver-xorg-video-amdgpu xserver-xorg-video-ati xserver-xorg-video-fbdev xserver-xorg-video-intel xserver-xorg-video-nouveau xserver-xorg-video-nvidia-435
xserver-xorg-video-qxl xserver-xorg-video-radeon xserver-xorg-video-vesa xserver-xorg-video-vmware xwayland yaru-theme-gnome-shell yelp yelp-xsl zenity zenity-common
gdm3 is being pulled in via a "Recommends" chain. Disabling recommends will avoid it[*].
On my groovy system it reduced new packages installed from 452/291MB of archives to 56/165MB of archives. Seems like the right thing to do for at least --gpgpu installs - but maybe for all?
[*] ubuntu- drivers. orig 2020-07-29 15:24:08.000000000 +0000 ubuntu- drivers 2020-10-06 19:18:53.208559657 +0000
--- /usr/bin/
+++ /usr/bin/
@@ -155,7 +155,8 @@
return
ret = subprocess. call([' apt-get' , 'install', '-o', options: :=--force- confnew' , '-y'] + to_install) options: :=--force- confnew' , '-y', recommends' ] + to_install)
- 'DPkg::
+ 'DPkg::
+ '--no-install-
oem_ meta_to_ install = fnmatch. filter( to_install, 'oem-*-meta')