Score:1

Graphics-capable nvidia proprietary drivers with *minimal* dependencies?

cn flag

What is with the insane list of dependencies for the proprietary nvidia drivers?

I have been trying to get GUI LXC containers to work, but that is another story. It's mainly relevant because it is the reason why I want the drivers to be able to drive a display, but not bring all the trappings of a desktop.

In the process of trying different driver versions/sources, I noticed that Gnome kept getting installed. Indeed, even the server version of the nvidia drivers pulls in a crazy list of dependencies. Do I really need all this crap? How do I figure out what crap I really do need? Does this come from Nvidia or the Universe repo maintainers?

sudo apt install --dry-run nvidia-driver-470-server | less

Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
  acl adwaita-icon-theme apg aptdaemon aptdaemon-data aspell aspell-en
  at-spi2-core avahi-daemon avahi-utils bluez bolt bubblewrap build-essential
  cheese-common colord colord-data cpp cpp-9 cracklib-runtime cups-pk-helper
  dbus-user-session dbus-x11 dconf-cli dconf-gsettings-backend dconf-service
  dctrl-tools desktop-file-utils dictionaries-common dirmngr dkms
  dns-root-data dnsmasq-base docbook-xml dpkg-dev emacsen-common enchant-2
  evolution-data-server evolution-data-server-common fakeroot fontconfig
  fprintd g++ g++-9 gcc gcc-9 gcc-9-base gcr gdm3 geoclue-2.0
  gir1.2-accountsservice-1.0 gir1.2-atk-1.0 gir1.2-atspi-2.0
  gir1.2-freedesktop gir1.2-gck-1 gir1.2-gcr-3 gir1.2-gdesktopenums-3.0
  gir1.2-gdkpixbuf-2.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-gtk-3.0 gir1.2-gweather-3.0 gir1.2-ibus-1.0 gir1.2-json-1.0
  gir1.2-mutter-6 gir1.2-nm-1.0 gir1.2-nma-1.0 gir1.2-notify-0.7
  gir1.2-packagekitglib-1.0 gir1.2-pango-1.0 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 glib-networking glib-networking-common glib-networking-services
  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 gnupg
  gnupg-l10n gnupg-utils gpg gpg-agent gpg-wks-client gpg-wks-server gpgconf
  gpgsm gsettings-desktop-schemas gstreamer1.0-clutter-3.0 gstreamer1.0-gl
  gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-pulseaudio
  gstreamer1.0-x gtk-update-icon-cache hicolor-icon-theme humanity-icon-theme
  hunspell-en-us ibus ibus-data ibus-gtk ibus-gtk3 iio-sensor-proxy im-config
  ippusbxd language-selector-gnome libaa1 libalgorithm-diff-perl
  libalgorithm-diff-xs-perl libalgorithm-merge-perl libappindicator3-1
  libappstream4 libarchive13 libasan5 libasound2-plugins libaspell15
  libassuan0 libasyncns0 libatk-bridge2.0-0 libatk1.0-0 libatk1.0-data
  libatomic1 libatspi2.0-0 libavahi-client3 libavahi-common-data
  libavahi-common3 libavahi-core7 libavahi-glib1 libavc1394-0 libbluetooth3
  libboost-thread1.71.0 libc-dev-bin libc6-dev libcaca0 libcairo-gobject2
  libcamel-1.2-62 libcanberra-gtk3-0 libcanberra-gtk3-module libcanberra-pulse
  libcc1-0 libcdparanoia0 libcheese-gtk25 libcheese8 libclutter-1.0-0
  libclutter-1.0-common libclutter-gst-3.0-0 libclutter-gtk-1.0-0
  libcogl-common libcogl-pango20 libcogl-path20 libcogl20 libcolord-gtk1
  libcolord2 libcolorhug2 libcrack2 libcrypt-dev libcups2 libcurl3-gnutls
  libdaemon0 libdatrie1 libdbusmenu-glib4 libdbusmenu-gtk3-4 libdconf1
  libdpkg-perl libdrm-amdgpu1 libdrm-intel1 libdrm-nouveau2 libdrm-radeon1
  libdv4 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 libegl-mesa0 libegl1 libenchant-2-2 libepoxy0
  libexif12 libfakeroot libfile-fcntllock-perl libflac8 libfontenc1
  libfprint-2-2 libgail-common libgail18 libgbm1 libgcc-9-dev libgck-1-0
  libgcr-base-3-1 libgcr-ui-3-1 libgd3 libgdata-common libgdata22
  libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-bin libgdk-pixbuf2.0-common libgdm1
  libgee-0.8-2 libgeoclue-2-0 libgeocode-glib0 libgjs0g libgl1 libgl1-mesa-dri
  libglapi-mesa libgles2 libglib2.0-bin libglvnd0 libglx-mesa0 libglx0
  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 libgomp1 libgphoto2-6 libgphoto2-l10n libgphoto2-port12
  libgraphene-1.0-0 libgraphite2-3 libgsound0 libgssdp-1.2-0
  libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-0
  libgstreamer-plugins-good1.0-0 libgstreamer1.0-0 libgtk-3-0 libgtk-3-bin
  libgtk-3-common 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
  libgusb2 libgweather-3-16 libgweather-common libharfbuzz-icu0 libharfbuzz0b
  libhunspell-1.7-0 libhyphen0 libibus-1.0-5 libical3 libice6 libidn11
  libiec61883-0 libieee1284-3 libinput-bin libinput10 libisl22 libitm1
  libjack-jackd2-0 libjansson4 libjavascriptcoregtk-4.0-18 libjbig0
  libjpeg-turbo8 libjpeg8 libjson-glib-1.0-0 libjson-glib-1.0-common libksba8
  liblcms2-2 libldb2 libllvm12 liblsan0 libmbim-glib4 libmbim-proxy
  libmediaart-2.0-0 libmm-glib0 libmozjs-68-0 libmp3lame0 libmpc3 libmpfr6
  libmpg123-0 libmtdev1 libmutter-6-0 libmysqlclient21 libndp0
  libnl-route-3-200 libnm0 libnma0 libnotify4 libnpth0 libnspr4 libnss-mdns
  libnss3 libnvidia-cfg1-470-server libnvidia-common-470-server
  libnvidia-compute-470-server libnvidia-decode-470-server
  libnvidia-encode-470-server libnvidia-extra-470-server
  libnvidia-fbc1-470-server libnvidia-gl-470-server libnvidia-ifr1-470-server
  libopenjp2-7 libopus0 liborc-0.4-0 libpackagekit-glib2-18 libpam-fprintd
  libpam-gnome-keyring libpango-1.0-0 libpangocairo-1.0-0 libpangoft2-1.0-0
  libpangoxft-1.0-0 libpcsclite1 libphonenumber7 libprotobuf17 libproxy1v5
  libpulse-mainloop-glib0 libpulse0 libpulsedsp libpwquality-common
  libpwquality1 libqmi-glib5 libqmi-proxy libquadmath0 libraw1394-11
  librest-0.7-0 librsvg2-2 librsvg2-common librygel-core-2.6-2
  librygel-db-2.6-2 librygel-renderer-2.6-2 librygel-server-2.6-2
  libsamplerate0 libsane libsane-common libsbc1 libsecret-1-0 libsecret-common
  libshout3 libsm6 libsmbclient libsnapd-glib1 libsndfile1 libsnmp-base
  libsnmp35 libsoup-gnome2.4-1 libsoup2.4-1 libsoxr0 libspeex1 libspeexdsp1
  libstartup-notification0 libstdc++-9-dev libstemmer0d libtag1v5
  libtag1v5-vanilla libtalloc2 libteamdctl0 libtevent0 libthai-data libthai0
  libtheora0 libtiff5 libtsan0 libtwolame0 libubsan1 libudisks2-0 libv4l-0
  libv4lconvert0 libvdpau1 libvisual-0.4-0 libvorbisenc2 libvpx6 libvte-2.91-0
 libvte-2.91-common libvulkan1 libwacom-bin libwacom-common libwacom2
  libwavpack1 libwayland-client0 libwayland-cursor0 libwayland-egl1
  libwayland-server0 libwbclient0 libwebkit2gtk-4.0-37 libwebp6 libwebpdemux2
  libwebrtc-audio-processing1 libwhoopsie-preferences0 libwhoopsie0 libwoff1
  libx11-xcb1 libxatracker2 libxaw7 libxcb-dri2-0 libxcb-dri3-0 libxcb-glx0
  libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-present0 libxcb-randr0
  libxcb-render-util0 libxcb-res0 libxcb-shape0 libxcb-sync1 libxcb-util1
  libxcb-xfixes0 libxcb-xkb1 libxcb-xv0 libxcomposite1 libxcursor1 libxdamage1
  libxfixes3 libxfont2 libxft2 libxi6 libxinerama1 libxkbcommon-x11-0
  libxkbcommon0 libxkbfile1 libxklavier16 libxmu6 libxpm4 libxrandr2
  libxshmfence1 libxslt1.1 libxss1 libxt6 libxtst6 libxv1 libxvmc1 libxxf86vm1
  libyelp0 linux-libc-dev manpages-dev mesa-vdpau-drivers mesa-vulkan-drivers
  mobile-broadband-provider-info modemmanager mousetweaks mutter mutter-common
  mysql-common network-manager network-manager-gnome network-manager-pptp
  nvidia-compute-utils-470-server nvidia-dkms-470-server
  nvidia-kernel-common-470-server nvidia-kernel-source-470-server nvidia-prime
  nvidia-settings nvidia-utils-470-server p11-kit p11-kit-modules packagekit
  packagekit-tools patch pinentry-curses pinentry-gnome3 pkg-config ppp
  pptp-linux pulseaudio pulseaudio-module-bluetooth pulseaudio-utils
  python3-aptdaemon python3-aptdaemon.gtk3widgets python3-cairo python3-cups
  python3-cupshelpers python3-defer python3-ibus-1.0 python3-ldb
  python3-macaroonbakery python3-protobuf python3-rfc3339 python3-talloc
  python3-tz python3-xkit 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-mono ubuntu-session
  ubuntu-wallpapers ubuntu-wallpapers-focal unzip update-inetd usb-modeswitch
  usb-modeswitch-data vdpau-driver-all wamerican whoopsie-preferences
  wpasupplicant x11-common 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-470-server 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

When I installed from the .run file downloaded from the Nvidia website, I also ended up with bits of Gnome.

I see that a different package nvidia-headless-470-server has a much more reasonable list of dependencies, but I do need it to be graphics-capable as it will be driving GUI apps. But preferably using X without a window manager.

Score:2
in flag

My guess is the nvidia-settings dependency is requiring most of the others. "nvidia-settings" is a GUI and is only a recommended dependency. Your package installer may have a way to ignore "recommended" and "suggested" dependencies. You can also ignore them when installing packages from the command line by using the correct options.

Stonecraft avatar
cn flag
Yeah you are correct. A little probing revealed that it was related to GUI settings apps, which of course require a GUI. I naively thought a "server" install would avoid GUI tools. I always forget that innocuous looking dependencies can have huge dependencies. Also I was confused by the difference between using `--no-install-recommends` and NOT using `--install-recommends`.
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.