Graphics-capable nvidia proprietary drivers with *minimal* dependencies?
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.
Solution 1:
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.