sudo apt-get install cuda has huge number of dependencies

I am installing cuda on a machine running Ubuntu server with the intention of running completely headless. I have no need for X server or any desktop managers or anything. Yet installing cuda via the .deb file seems to require me to install ~600 packages including lots of desktop windowing stuff I don’t care about.

Is there a way to install without all of this being loaded onto my machine?

use the runfile installer method.

txbob, I wonder whether it might make sense to add a sticky note to the forum recommending the runfile installer method? So many people get entangled in the complexities of package installers that not a week goes by that we don’t see questions of this sort, and the answer is always pretty much the same.

Well guys, I cannot find another thread where the question was asked.

Anyway, I’m also surprised to see the number of dependancies apt-get install cuda installs…

The following additional packages will be installed:
  accountsservice acl acpid adwaita-icon-theme apg aptdaemon aspell aspell-en at-spi2-core
  avahi-daemon avahi-utils bbswitch-dkms bind9-host bluez bluez-obexd bsdmainutils
  build-essential busybox-initramfs bzip2 ca-certificates-java cheese-common colord colord-data
  cpio cracklib-runtime crda cuda-8-0 cuda-command-line-tools-8-0 cuda-core-8-0 cuda-cublas-8-0
  cuda-cublas-dev-8-0 cuda-cudart-8-0 cuda-cudart-dev-8-0 cuda-cufft-8-0 cuda-cufft-dev-8-0
  cuda-curand-8-0 cuda-curand-dev-8-0 cuda-cusolver-8-0 cuda-cusolver-dev-8-0 cuda-cusparse-8-0
  cuda-cusparse-dev-8-0 cuda-demo-suite-8-0 cuda-documentation-8-0 cuda-driver-dev-8-0
  cuda-drivers cuda-license-8-0 cuda-misc-headers-8-0 cuda-npp-8-0 cuda-npp-dev-8-0
  cuda-nvgraph-8-0 cuda-nvgraph-dev-8-0 cuda-nvml-dev-8-0 cuda-nvrtc-8-0 cuda-nvrtc-dev-8-0
  cuda-runtime-8-0 cuda-samples-8-0 cuda-toolkit-8-0 cuda-visual-tools-8-0 cups-pk-helper dbus
  dbus-x11 dconf-cli dconf-gsettings-backend dconf-service default-jre default-jre-headless
  desktop-file-utils dh-python dictionaries-common diffstat distro-info-data dkms dns-root-data
  dnsmasq-base dosfstools dpkg-dev eject emacsen-common enchant evolution-data-server
  evolution-data-server-common evolution-data-server-online-accounts fakeroot fontconfig
  fontconfig-config fonts-dejavu-core fonts-dejavu-extra freeglut3 freeglut3-dev fuse g++ g++-5
  gconf-service gconf-service-backend gconf2 gconf2-common gcr gdisk geoclue geoclue-ubuntu-geoip
  geoip-database gettext gettext-base gir1.2-atk-1.0 gir1.2-freedesktop gir1.2-gdkpixbuf-2.0
  gir1.2-glib-2.0 gir1.2-gnomekeyring-1.0 gir1.2-gtk-3.0 gir1.2-ibus-1.0 gir1.2-notify-0.7
  gir1.2-packagekitglib-1.0 gir1.2-pango-1.0 gkbd-capplet glib-networking glib-networking-common
  glib-networking-services gnome-bluetooth gnome-desktop3-data gnome-keyring gnome-menus
  gnome-power-manager gnome-screensaver gnome-session-bin gnome-settings-daemon-schemas
  gnome-user-guide gnome-user-share groff-base gsettings-desktop-schemas gsettings-ubuntu-schemas
  gstreamer1.0-clutter-3.0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x
  gvfs gvfs-backends gvfs-common gvfs-daemons gvfs-libs hardening-includes hicolor-icon-theme
  humanity-icon-theme hunspell-en-us hwdata ibus ibus-gtk ibus-gtk3 ifupdown im-config
  indicator-applet indicator-application indicator-bluetooth indicator-datetime
  indicator-keyboard indicator-messages indicator-power indicator-session indicator-sound
  initramfs-tools initramfs-tools-bin initramfs-tools-core intltool-debian ippusbxd iproute2
  iptables iputils-arping isc-dhcp-client isc-dhcp-common iso-codes iw java-common
  keyboard-configuration klibc-utils kmod krb5-locales lib32gcc1 libaa1 libaccount-plugin-1.0-0
  libaccount-plugin-generic-oauth libaccount-plugin-google libaccounts-glib0 libaccounts-qt5-1
  libaccountsservice0 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl
  libappindicator3-1 libapt-inst2.0 libapt-pkg-perl libarchive-zip-perl libarchive13
  libasn1-8-heimdal libasound2 libasound2-data libasound2-plugins libaspell15 libasprintf-dev
  libasprintf0v5 libassuan0 libasyncns0 libatasmart4 libatk-bridge2.0-0 libatk1.0-0
  libatk1.0-data libatm1 libatspi2.0-0 libauthen-sasl-perl libavahi-client3 libavahi-common-data
  libavahi-common3 libavahi-core7 libavahi-glib1 libavc1394-0 libbind9-140 libbluetooth3
  libbonobo2-0 libbonobo2-common libboost-filesystem1.58.0 libboost-system1.58.0 libbsd0
  libc6-i386 libcaca0 libcairo-gobject2 libcairo2 libcamel-1.2-54 libcanberra-gtk3-0
  libcanberra-gtk3-module libcanberra-pulse libcanberra0 libcap-ng0 libcdio-cdda1
  libcdio-paranoia1 libcdio13 libcdparanoia0 libcgi-fast-perl libcgi-pm-perl libcgmanager0
  libcheese-gtk25 libcheese8 libclass-accessor-perl libclone-perl 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 libcolord2 libcolorhug2 libcrack2 libcroco3 libcuda1-375 libcups2
  libcurl3-gnutls libdaemon0 libdata-alias-perl libdatrie1 libdbus-1-3 libdbus-glib-1-2
  libdbusmenu-glib4 libdbusmenu-gtk3-4 libdconf1 libdigest-hmac-perl libdns-export162 libdns162
  libdouble-conversion1v5 libdpkg-perl libdrm-amdgpu1 libdrm-dev libdrm-intel1 libdrm-nouveau2
  libdrm-radeon1 libdrm2 libdv4 libebackend-1.2-10 libebook-1.2-16 libebook-contacts-1.2-2
  libecal-1.2-19 libedata-book-1.2-25 libedata-cal-1.2-28 libedataserver-1.2-21 libedit2
  libegl1-mesa libelf1 libemail-valid-perl libenchant1c2a libencode-locale-perl libepoxy0
  libevdev2 libexif12 libexpat1 libexporter-tiny-perl libfakeroot libfcgi-perl libfcitx-config4
  libfcitx-gclient0 libfcitx-utils0 libffi6 libfftw3-single3 libfile-basedir-perl
  libfile-fcntllock-perl libflac8 libfontconfig1 libfontenc1 libfreetype6 libfribidi0 libfuse2
  libgbm1 libgck-1-0 libgconf-2-4 libgcr-3-common libgcr-base-3-1 libgcr-ui-3-1 libgd3
  libgdata-common libgdata22 libgdbm3 libgdk-pixbuf2.0-0 libgdk-pixbuf2.0-common libgee-0.8-2
  libgeoclue0 libgeocode-glib0 libgeoip1 libgeonames0 libgettextpo-dev libgettextpo0 libgif7
  libgirepository-1.0-1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa
  libglib2.0-0 libglib2.0-bin libglib2.0-data libglu1-mesa libglu1-mesa-dev libgnome-2-0
  libgnome-bluetooth13 libgnome-desktop-3-12 libgnome-keyring-common libgnome-keyring0
  libgnome-menu-3-0 libgnome2-common libgnomekbd-common libgnomekbd8 libgnomevfs2-0
  libgnomevfs2-common libgnutls30 libgoa-1.0-0b libgoa-1.0-common libgphoto2-6 libgphoto2-l10n
  libgphoto2-port12 libgpm2 libgraphite2-3 libgssapi-krb5-2 libgssapi3-heimdal
  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-10
  libgtop2-common libgudev-1.0-0 libgusb2 libgweather-3-6 libgweather-common libharfbuzz-icu0
  libharfbuzz0b libhcrypto4-heimdal libheimbase1-heimdal libheimntlm0-heimdal libhogweed4
  libhtml-parser-perl libhtml-tagset-perl libhttp-date-perl libhttp-message-perl
  libhunspell-1.3-0 libhx509-5-heimdal libhyphen0 libibus-1.0-5 libical1a libice-dev libice6
  libicu55 libido3-0.1-0 libiec61883-0 libieee1284-3 libimobiledevice6 libindicator3-7 libinput10
  libio-html-perl libio-pty-perl libio-socket-inet6-perl libio-socket-ssl-perl libio-string-perl
  libipc-run-perl libipc-system-simple-perl libisc-export160 libisc160 libisccc140 libisccfg140
  libjack-jackd2-0 libjansson4 libjavascriptcoregtk-4.0-18 libjbig0 libjpeg-turbo8 libjpeg8
  libjson-c2 libjson-glib-1.0-0 libjson-glib-1.0-common libk5crypto3 libkeyutils1 libklibc
  libkrb5-26-heimdal libkrb5-3 libkrb5support0 liblcms2-2 libldap-2.4-2 libldb1
  liblightdm-gobject-1-0 liblist-moreutils-perl libllvm3.8 liblocale-gettext-perl libltdl7
  liblwp-mediatypes-perl liblwres141 liblzo2-2 libmailtools-perl libmbim-glib4 libmbim-proxy
  libmirclient9 libmircommon5 libmirprotobuf3 libmm-glib0 libmnl0 libmpdec2 libmtdev1
  libmtp-common libmtp-runtime libmtp9 libnautilus-extension1a libndp0 libnet-dns-perl
  libnet-domain-tld-perl libnet-ip-perl libnet-libidn-perl libnet-smtp-ssl-perl
  libnet-ssleay-perl libnetfilter-conntrack3 libnettle6 libnewt0.52 libnfnetlink0 libnih-dbus1
  libnih1 libnl-3-200 libnl-genl-3-200 libnm-glib4 libnm-gtk-common libnm-gtk0 libnm-util2 libnm0
  libnma-common libnma0 libnotify4 libnspr4 libnss-mdns libnss3 libnss3-nssdb liboauth0 libogg0
  libopus0 liborbit-2-0 liborc-0.4-0 libp11-kit-gnome-keyring libp11-kit0 libpackagekit-glib2-16
  libpam-gnome-keyring libpam-systemd libpanel-applet0 libpango-1.0-0 libpangocairo-1.0-0
  libpangoft2-1.0-0 libpangoxft-1.0-0 libparse-debianchangelog-perl libparted2 libpcap0.8 libpci3
  libpciaccess0 libpcre16-3 libpcsclite1 libperl5.22 libperlio-gzip-perl libpipeline1
  libpixman-1-0 libplist3 libplymouth4 libpng12-0 libpolkit-agent-1-0 libpolkit-backend-1-0
  libpolkit-gobject-1-0 libprotobuf-lite9v5 libproxy1v5 libpthread-stubs0-dev
  libpulse-mainloop-glib0 libpulse0 libpulsedsp libpwquality-common libpwquality1
  libpython-stdlib libpython2.7 libpython2.7-minimal libpython2.7-stdlib libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libqmi-glib1 libqmi-proxy libqt5core5a libqt5dbus5
  libqt5gui5 libqt5network5 libqt5opengl5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sql5
  libqt5sql5-sqlite libqt5svg5 libqt5webkit5 libqt5widgets5 libqt5xml5 libraw1394-11
  librest-0.7-0 libroken18-heimdal librsvg2-2 librsvg2-common librtmp1 libsamplerate0 libsane
  libsane-common libsasl2-2 libsasl2-modules libsasl2-modules-db libsecret-1-0 libsecret-common
  libshout3 libsignon-extension1 libsignon-glib1 libsignon-plugins-common1 libsignon-qt5-1
  libslang2 libsm-dev libsm6 libsmbclient libsndfile1 libsocket6-perl libsoup-gnome2.4-1
  libsoup2.4-1 libspeex1 libspeexdsp1 libsqlite3-0 libstdc++-5-dev libsub-name-perl libsystemd0
  libtag1v5 libtag1v5-vanilla libtalloc2 libtasn1-6 libtdb1 libtevent0 libtext-iconv-perl
  libtext-levenshtein-perl libthai-data libthai0 libtheora0 libtiff5 libtimedate-perl
  libtimezonemap-data libtimezonemap1 libtxc-dxtn-s2tc0 libudev1 libudisks2-0 libunistring0
  libunity-control-center1 libunity-settings-daemon1 libupower-glib3 liburi-perl
  liburl-dispatcher1 libusb-1.0-0 libusbmuxd4 libv4l-0 libv4lconvert0 libvdpau1 libvisual-0.4-0
  libvorbis0a libvorbisenc2 libvorbisfile3 libvpx3 libwacom-bin libwacom-common libwacom2
  libwavpack1 libwayland-client0 libwayland-cursor0 libwayland-egl1-mesa libwayland-server0
  libwbclient0 libwebkit2gtk-4.0-37 libwebkit2gtk-4.0-37-gtk2 libwebp5
  libwebrtc-audio-processing-0 libwind0-heimdal libwrap0 libx11-6 libx11-data libx11-dev
  libx11-doc libx11-xcb-dev libx11-xcb1 libxau-dev libxau6 libxaw7 libxcb-dri2-0
  libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-icccm4
  libxcb-image0 libxcb-keysyms1 libxcb-present-dev libxcb-present0 libxcb-randr0
  libxcb-randr0-dev libxcb-render-util0 libxcb-render0 libxcb-render0-dev libxcb-shape0
  libxcb-shape0-dev libxcb-shm0 libxcb-sync-dev libxcb-sync1 libxcb-util1 libxcb-xfixes0
  libxcb-xfixes0-dev libxcb-xkb1 libxcb1 libxcb1-dev libxcomposite1 libxcursor1 libxdamage-dev
  libxdamage1 libxdmcp-dev libxdmcp6 libxext-dev libxext6 libxfixes-dev libxfixes3 libxfont1
  libxft2 libxi-dev libxi6 libxinerama1 libxkbcommon-x11-0 libxkbcommon0 libxkbfile1
  libxklavier16 libxml2 libxmu-dev libxmu-headers libxmu6 libxmuu1 libxnvctrl0 libxpm4 libxrandr2
  libxrender1 libxshmfence-dev libxshmfence1 libxslt1.1 libxt-dev libxt6 libxtables11 libxtst6
  libxv1 libxxf86dga1 libxxf86vm-dev libxxf86vm1 libyaml-libyaml-perl libyelp0 lightdm lintian
  linux-base lsb-release make man-db menu mesa-common-dev mesa-vdpau-drivers mime-support
  mobile-broadband-provider-info modemmanager mountall mousetweaks nautilus-data netbase
  network-manager network-manager-gnome network-manager-pptp notification-daemon ntfs-3g
  nvidia-375 nvidia-375-dev nvidia-modprobe nvidia-opencl-icd-375 nvidia-prime nvidia-settings
  ocl-icd-libopencl1 openjdk-8-jre openjdk-8-jre-headless p11-kit p11-kit-modules parted patch
  patchutils pciutils perl perl-modules-5.22 pinentry-gnome3 pkg-config plymouth
  plymouth-theme-ubuntu-text policykit-1 policykit-1-gnome ppp pptp-linux psmisc pulseaudio
  pulseaudio-module-x11 pulseaudio-utils python python-apt-common python-minimal python-talloc
  python2.7 python2.7-minimal python3 python3-apt python3-aptdaemon python3-aptdaemon.pkcompat
  python3-bs4 python3-cairo python3-chardet python3-cups python3-cupshelpers python3-dbus
  python3-defer python3-gi python3-html5lib python3-lxml python3-minimal python3-pkg-resources
  python3-requests python3-six python3-urllib3 python3-xdg python3-xkit python3.5
  python3.5-minimal qttranslations5-l10n rename rtkit samba-libs screen-resolution-extra
  session-migration sgml-base shared-mime-info signon-keyring-extension signon-plugin-oauth2
  signon-plugin-password signon-ui signon-ui-service signon-ui-x11 signond
  sound-theme-freedesktop system-config-printer-common system-config-printer-gnome
  system-config-printer-udev systemd t1utils tcpd ubuntu-mono ubuntu-system-service
  ubuntu-touch-sounds ucf udev udisks2 unity-control-center unity-control-center-faces
  unity-control-center-signon unity-greeter unity-settings-daemon upower upstart usb-modeswitch
  usb-modeswitch-data usbmuxd usbutils vdpau-driver-all wamerican whiptail wireless-regdb
  wpasupplicant x11-common x11-utils x11-xkb-utils x11proto-core-dev x11proto-damage-dev
  x11proto-dri2-dev x11proto-fixes-dev x11proto-gl-dev x11proto-input-dev x11proto-kb-dev
  x11proto-xext-dev x11proto-xf86vidmode-dev xauth xdg-user-dirs xfonts-base xfonts-encodings
  xfonts-utils xkb-data xml-core xorg-sgml-doctools xserver-common xserver-xorg xserver-xorg-core
  xserver-xorg-input-all xserver-xorg-input-evdev xserver-xorg-input-synaptics
  xserver-xorg-input-vmmouse xserver-xorg-input-wacom xtrans-dev xz-utils yelp yelp-xsl zenity
  zenity-common
Suggested packages:
  gnome-control-center aspell-doc spellutils avahi-autoipd bumblebee whois vacation bzip2-doc
  colord-sensor-argyll libarchive1 default-java-plugin debian-keyring cdtool setcd evolution
  evolution-data-server-dbg g++-multilib g++-5-multilib gcc-5-doc libstdc++6-5-dbg
  gconf-defaults-service gettext-doc autopoint apache2-bin libapache2-mod-dnssd groff
  samba-common hunspell openoffice.org-hunspell | openoffice.org-core ibus-clutter ibus-doc
  ibus-qt4 rdnssd click powerd unity-system-compositor apport unity-greeter-session-broadcast
  bash-completion iproute2-doc resolvconf isc-dhcp-client-ddns apparmor isoquery lrzip alsa-utils
  libgssapi-perl libbonobo2-bin libcanberra-gtk0 libgles2-mesa | libgles2 cups-common libdv-bin
  oss-compat libenchant-voikko fcitx libfftw3-bin libfftw3-dev libgd-tools geoip-bin desktop-base
  libgnomevfs2-bin libgnomevfs2-extra gamin | fam gnome-mime-data gnutls-bin gphoto2 gpm krb5-doc
  krb5-user libvisual-0.4-plugins gstreamer1.0-tools libdata-dump-perl libice-doc
  libusbmuxd-tools jackd2 liblcms2-utils avahi-autoipd | zeroconf opus-tools
  libhtml-template-perl libxml-simple-perl libparted-dev libparted-i18n pcscd libqt5libqgtk2
  qt5-image-formats-plugins qtwayland5 libraw1394-doc librsvg2-bin hplip libsane-extras
  sane-utils libsasl2-modules-otp libsasl2-modules-ldap libsasl2-modules-sql
  libsasl2-modules-gssapi-mit | libsasl2-modules-gssapi-heimdal libsm-doc speex libstdc++-5-doc
  libwww-perl url-dispatcher libxcb-doc libxext-doc libxt-doc bindfs binutils-multiarch
  libtext-template-perl lsb make-doc less www-browser menu-l10n gksu | kde-runtime | ktsuss
  nautilus network-manager-openconnect-gnome network-manager-openvpn-gnome
  network-manager-vpnc-gnome network-manager-pptp-gnome icedtea-8-plugin openjdk-8-jre-jamvm
  fonts-ipafont-gothic fonts-ipafont-mincho ttf-wqy-microhei | ttf-wqy-zenhei fonts-indic
  parted-doc ed diffutils-doc perl-doc libterm-readline-gnu-perl | libterm-readline-perl-perl
  pinentry-doc plymouth-themes pavumeter pavucontrol paman paprefs python-doc python-tk
  python2.7-doc binfmt-support python3-doc python3-tk python3-venv python3-apt-dbg python-apt-doc
  python-dbus-doc python3-dbus-dbg python3-genshi python3-lxml-dbg python-lxml-doc
  python3-setuptools python3-ndg-httpsclient python3-openssl python3-pyasn1 python3.5-venv
  python3.5-doc sgml-base-doc python3-smbc systemd-ui systemd-container xfsprogs reiserfsprogs
  exfat-utils btrfs-tools mdadm cryptsetup-bin libcanberra-gtk-module x11-xserver-utils
  lightdm-remote-session-freerdp lightdm-remote-session-uccsconfigure remote-login-service
  metacity | x-window-manager graphviz upstart-monitor comgt wvdial libvdpau-va-gl1
  nvidia-vdpau-driver nvidia-legacy-340xx-vdpau-driver wpagui libengine-pkcs11-openssl mesa-utils
  debhelper xfonts-100dpi | xfonts-75dpi xfonts-scalable gpointing-device-settings touchfreeze
  xinput

openjdk, mdadm, ? Seriously…

I am also wondering why the Debian package does not just do what the runfile installer does ?

openjdk (java) is needed for the Eclipse Nsight Edition.

If you’re asking for a detailed description of what each and every dependency is about, you probably won’t find that.

The package manager method installs using dependency chains, so that if you already have a particular dependency, it does not need to be reinstalled. For a machine which is largely up-to-date, this could save a lot of time.

The package manager method offers two different packaging options, one which is a “local” and one which is a “network” install. The network install uses a set of network repositories. The local method is effectively “what the runfile installer does”, in that it contains all of the necessary packages in a local repo/archive. As a result you get to download a large ~1.5GB blob, just like you do when you download the runfile installer.