Version locking use cases
Aligned packages
All packages are aligned to the same driver branch, including ones that were never consistent (nvidia-modprobe. etc.).
# apt-get -V dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
nvidia-modprobe (580.95.05-0ubuntu1)
Use 'apt autoremove' to remove it.
The following packages will be DOWNGRADED:
libnvidia-nscq (590.17-0ubuntu1 => 580.95.05-1)
libnvsdm (590.17-0ubuntu1 => 580.95.05-1)
nvidia-fabricmanager (590.17-0ubuntu1 => 580.95.05-1)
nvidia-imex (590.17-0ubuntu1 => 580.95.05-1)
nvidia-modprobe (590.17-0ubuntu1 => 580.95.05-0ubuntu1)
nvidia-persistenced (590.17-0ubuntu1 => 580.95.05-0ubuntu1)
0 upgraded, 0 newly installed, 6 downgraded, 0 to remove and 0 not upgraded.
Need to get 16.4 MB of archives.
After this operation, 4013 kB disk space will be freed.
Do you want to continue? [Y/n]
[...]
All packages can have proper versions even if we must declare dependencies as equal or higher (ex. nvidia-fabricmanager, etc.) due to APT limitations.
# apt-get -V install nvidia-driver-cuda nvidia-driver
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
firmware-nvidia-gsp (570.195.03-1)
libcuda1 (570.195.03-1)
libcuda1:i386 (570.195.03-1)
libcudadebugger1 (570.195.03-1)
libegl-nvidia0 (570.195.03-1)
libegl-nvidia0:i386 (570.195.03-1)
libgles-nvidia1 (570.195.03-1)
libgles-nvidia1:i386 (570.195.03-1)
libgles-nvidia2 (570.195.03-1)
libgles-nvidia2:i386 (570.195.03-1)
libglx-nvidia0 (570.195.03-1)
libglx-nvidia0:i386 (570.195.03-1)
libnvcuvid1 (570.195.03-1)
libnvidia-allocator1 (570.195.03-1)
libnvidia-allocator1:i386 (570.195.03-1)
libnvidia-api1 (570.195.03-1)
libnvidia-cfg1 (570.195.03-1)
libnvidia-egl-gbm1 (1.1.2.1-2)
libnvidia-egl-gbm1:i386 (1.1.2.1-2)
libnvidia-egl-wayland1 (1:1.1.20-1)
libnvidia-egl-wayland1:i386 (1:1.1.20-1)
libnvidia-egl-xcb1 (1:1.0.3-1)
libnvidia-egl-xcb1:i386 (1:1.0.3-1)
libnvidia-egl-xlib1 (1:1.0.3-1)
libnvidia-egl-xlib1:i386 (1:1.0.3-1)
libnvidia-eglcore (570.195.03-1)
libnvidia-eglcore:i386 (570.195.03-1)
libnvidia-encode1 (570.195.03-1)
libnvidia-fbc1 (570.195.03-1)
libnvidia-glcore (570.195.03-1)
libnvidia-glcore:i386 (570.195.03-1)
libnvidia-glvkspirv (570.195.03-1)
libnvidia-glvkspirv:i386 (570.195.03-1)
libnvidia-gpucomp (570.195.03-1)
libnvidia-gpucomp:i386 (570.195.03-1)
libnvidia-ml1 (570.195.03-1)
libnvidia-ml1:i386 (570.195.03-1)
libnvidia-ngx1 (570.195.03-1)
libnvidia-nvvm4 (570.195.03-1)
libnvidia-opticalflow1 (570.195.03-1)
libnvidia-pkcs11-openssl3 (570.195.03-1)
libnvidia-ptxjitcompiler1 (570.195.03-1)
libnvidia-ptxjitcompiler1:i386 (570.195.03-1)
libnvidia-rtcore (570.195.03-1)
libnvidia-sandboxutils (570.195.03-1)
libnvidia-vksc-core (570.195.03-1)
libnvoptix1 (570.195.03-1)
nvidia-driver-libs (570.195.03-1)
nvidia-driver-libs:i386 (570.195.03-1)
nvidia-egl-icd (570.195.03-1)
nvidia-kernel-dkms (570.195.03-1)
nvidia-kernel-support (570.195.03-1)
nvidia-modprobe (570.195.03-1)
nvidia-opencl-icd (570.195.03-1)
nvidia-persistenced (570.195.03-1)
nvidia-vdpau-driver (570.195.03-1)
nvidia-vulkan-icd (570.195.03-1)
nvidia-vulkan-icd:i386 (570.195.03-1)
xserver-xorg-video-nvidia (570.195.03-1)
Suggested packages:
nvidia-settings (570.195.03-1)
libnvidia-fbc
vulkan-tools (1.3.239.0+dfsg1-1)
vulkan-tools:i386 (1.3.239.0+dfsg1-1)
The following NEW packages will be installed:
firmware-nvidia-gsp (570.195.03-1)
libcuda1 (570.195.03-1)
libcuda1:i386 (570.195.03-1)
libcudadebugger1 (570.195.03-1)
libegl-nvidia0 (570.195.03-1)
libegl-nvidia0:i386 (570.195.03-1)
libgles-nvidia1 (570.195.03-1)
libgles-nvidia1:i386 (570.195.03-1)
libgles-nvidia2 (570.195.03-1)
libgles-nvidia2:i386 (570.195.03-1)
libglx-nvidia0 (570.195.03-1)
libglx-nvidia0:i386 (570.195.03-1)
libnvcuvid1 (570.195.03-1)
libnvidia-allocator1 (570.195.03-1)
libnvidia-allocator1:i386 (570.195.03-1)
libnvidia-api1 (570.195.03-1)
libnvidia-cfg1 (570.195.03-1)
libnvidia-egl-gbm1 (1.1.2.1-2)
libnvidia-egl-gbm1:i386 (1.1.2.1-2)
libnvidia-egl-wayland1 (1:1.1.20-1)
libnvidia-egl-wayland1:i386 (1:1.1.20-1)
libnvidia-egl-xcb1 (1:1.0.3-1)
libnvidia-egl-xcb1:i386 (1:1.0.3-1)
libnvidia-egl-xlib1 (1:1.0.3-1)
libnvidia-egl-xlib1:i386 (1:1.0.3-1)
libnvidia-eglcore (570.195.03-1)
libnvidia-eglcore:i386 (570.195.03-1)
libnvidia-encode1 (570.195.03-1)
libnvidia-fbc1 (570.195.03-1)
libnvidia-glcore (570.195.03-1)
libnvidia-glcore:i386 (570.195.03-1)
libnvidia-glvkspirv (570.195.03-1)
libnvidia-glvkspirv:i386 (570.195.03-1)
libnvidia-gpucomp (570.195.03-1)
libnvidia-gpucomp:i386 (570.195.03-1)
libnvidia-ml1 (570.195.03-1)
libnvidia-ml1:i386 (570.195.03-1)
libnvidia-ngx1 (570.195.03-1)
libnvidia-nvvm4 (570.195.03-1)
libnvidia-opticalflow1 (570.195.03-1)
libnvidia-pkcs11-openssl3 (570.195.03-1)
libnvidia-ptxjitcompiler1 (570.195.03-1)
libnvidia-ptxjitcompiler1:i386 (570.195.03-1)
libnvidia-rtcore (570.195.03-1)
libnvidia-sandboxutils (570.195.03-1)
libnvidia-vksc-core (570.195.03-1)
libnvoptix1 (570.195.03-1)
nvidia-driver (570.195.03-1)
nvidia-driver-cuda (570.195.03-1)
nvidia-driver-libs (570.195.03-1)
nvidia-driver-libs:i386 (570.195.03-1)
nvidia-egl-icd (570.195.03-1)
nvidia-kernel-dkms (570.195.03-1)
nvidia-kernel-support (570.195.03-1)
nvidia-modprobe (570.195.03-1)
nvidia-opencl-icd (570.195.03-1)
nvidia-persistenced (570.195.03-1)
nvidia-vdpau-driver (570.195.03-1)
nvidia-vulkan-icd (570.195.03-1)
nvidia-vulkan-icd:i386 (570.195.03-1)
xserver-xorg-video-nvidia (570.195.03-1)
0 upgraded, 61 newly installed, 0 to remove and 0 not upgraded.
Need to get 406 MB/407 MB of archives.
After this operation, 1252 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Consistency
All packages can be renamed, simplified and made consistent for all branches. This means consistent documentation and consistent instructions that we don’t need to edit every time we release a new branch.
Mixing of Canonical packages
We solve the issue where one or more random Canonical packages are pulled down mixed in a transaction with NVIDIA packages when installing / upgrading.
# apt-get -V install libnvidia-compute-580 libnvidia-gl-580 libnvsdm-580 nvidia-fabricmanager-580 nvidia-imex-580 libnvidia-nscq-580
[...]
# dpkg -l | grep nvidia | grep ubuntu0
ii libnvidia-nscq-580 580.65.06-0ubuntu0.24.04.1 amd64 NVSwitch Configuration and Query library
ii nvidia-fabricmanager-580 580.65.06-0ubuntu0.24.04.1 amd64 Fabric Manager for NVSwitch based systems.
ii nvidia-imex-580 580.65.06-0ubuntu0.24.04.1 amd64 IMEX Manager for NVIDIA based systems.
# apt-get install nvidia-driver-pinning-580
[...]
# apt-get -V install libnvidia-compute-580 libnvidia-gl-580 libnvsdm nvidia-fabricmanager nvidia-imex libnvidia-nscq
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
libnvidia-compute-580 is already the newest version (580.95.05-0ubuntu1).
libnvidia-gl-580 is already the newest version (580.95.05-0ubuntu1).
libnvsdm is already the newest version (580.95.05-1).
The following packages will be REMOVED:
libnvidia-nscq-580
nvidia-fabricmanager-580
nvidia-imex-580
The following NEW packages will be installed:
libnvidia-nscq (580.95.05-1)
nvidia-fabricmanager (580.95.05-1)
nvidia-imex (580.95.05-1)
0 upgraded, 3 newly installed, 3 to remove and 0 not upgraded.
Need to get 15.8 MB of archives.
After this operation, 26.6 kB of additional disk space will be used.
Do you want to continue? [Y/n] ^C
[...]
Easy downgrade
Users can also downgrade easily, which is not really the case now.
# apt-get -V dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following package was automatically installed and is no longer required:
libnvidia-nvvm704 (590.17-1)
Use 'apt autoremove' to remove it.
The following packages will be REMOVED:
libnvidia-present (590.17-1)
libnvidia-tileiras (590.17-1)
The following packages will be DOWNGRADED:
firmware-nvidia-gsp (590.17-1 => 570.195.03-1)
libcuda1 (590.17-1 => 570.195.03-1)
libcuda1:i386 (590.17-1 => 570.195.03-1)
libcudadebugger1 (590.17-1 => 570.195.03-1)
libegl-nvidia0 (590.17-1 => 570.195.03-1)
libegl-nvidia0:i386 (590.17-1 => 570.195.03-1)
libgles-nvidia1 (590.17-1 => 570.195.03-1)
libgles-nvidia1:i386 (590.17-1 => 570.195.03-1)
libgles-nvidia2 (590.17-1 => 570.195.03-1)
libgles-nvidia2:i386 (590.17-1 => 570.195.03-1)
libglx-nvidia0 (590.17-1 => 570.195.03-1)
libglx-nvidia0:i386 (590.17-1 => 570.195.03-1)
libnvcuvid1 (590.17-1 => 570.195.03-1)
libnvidia-allocator1 (590.17-1 => 570.195.03-1)
libnvidia-allocator1:i386 (590.17-1 => 570.195.03-1)
libnvidia-api1 (590.17-1 => 570.195.03-1)
libnvidia-cfg1 (590.17-1 => 570.195.03-1)
libnvidia-eglcore (590.17-1 => 570.195.03-1)
libnvidia-eglcore:i386 (590.17-1 => 570.195.03-1)
libnvidia-encode1 (590.17-1 => 570.195.03-1)
libnvidia-fbc1 (590.17-1 => 570.195.03-1)
libnvidia-glcore (590.17-1 => 570.195.03-1)
libnvidia-glcore:i386 (590.17-1 => 570.195.03-1)
libnvidia-glvkspirv (590.17-1 => 570.195.03-1)
libnvidia-glvkspirv:i386 (590.17-1 => 570.195.03-1)
libnvidia-gpucomp (590.17-1 => 570.195.03-1)
libnvidia-gpucomp:i386 (590.17-1 => 570.195.03-1)
libnvidia-ml1 (590.17-1 => 570.195.03-1)
libnvidia-ml1:i386 (590.17-1 => 570.195.03-1)
libnvidia-ngx1 (590.17-1 => 570.195.03-1)
libnvidia-nvvm4 (590.17-1 => 570.195.03-1)
libnvidia-opticalflow1 (590.17-1 => 570.195.03-1)
libnvidia-pkcs11-openssl3 (590.17-1 => 570.195.03-1)
libnvidia-ptxjitcompiler1 (590.17-1 => 570.195.03-1)
libnvidia-ptxjitcompiler1:i386 (590.17-1 => 570.195.03-1)
libnvidia-rtcore (590.17-1 => 570.195.03-1)
libnvidia-sandboxutils (590.17-1 => 570.195.03-1)
libnvidia-vksc-core (590.17-1 => 570.195.03-1)
libnvoptix1 (590.17-1 => 570.195.03-1)
nvidia-driver (590.17-1 => 570.195.03-1)
nvidia-driver-cuda (590.17-1 => 570.195.03-1)
nvidia-driver-libs (590.17-1 => 570.195.03-1)
nvidia-driver-libs:i386 (590.17-1 => 570.195.03-1)
nvidia-egl-icd (590.17-1 => 570.195.03-1)
nvidia-kernel-dkms (590.17-1 => 570.195.03-1)
nvidia-kernel-support (590.17-1 => 570.195.03-1)
nvidia-modprobe (590.17-1 => 570.195.03-1)
nvidia-opencl-icd (590.17-1 => 570.195.03-1)
nvidia-persistenced (590.17-1 => 570.195.03-1)
nvidia-vdpau-driver (590.17-1 => 570.195.03-1)
nvidia-vulkan-icd (590.17-1 => 570.195.03-1)
nvidia-vulkan-icd:i386 (590.17-1 => 570.195.03-1)
xserver-xorg-video-nvidia (590.17-1 => 570.195.03-1)
0 upgraded, 0 newly installed, 53 downgraded, 2 to remove and 0 not upgraded.
Need to get 406 MB of archives.
After this operation, 112 MB disk space will be freed.
Do you want to continue? [Y/n]
[...]
Installing a specific driver version
Users can pin a specific driver build and switch to it effortlessly.
# apt-get install nvidia-driver-pinning-570.199
[..]
# apt-get -V dist-upgrade --autoremove
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following packages will be REMOVED:
libnvidia-nvvm704 (595.00-36675729)
libnvidia-present (580.103-1)
The following packages will be DOWNGRADED:
firmware-nvidia-gsp (580.103-1 => 570.199-1)
libcuda1 (580.103-1 => 570.199-1)
libcuda1:i386 (580.103-1 => 570.199-1)
libcudadebugger1 (580.103-1 => 570.199-1)
libegl-nvidia0 (580.103-1 => 570.199-1)
libegl-nvidia0:i386 (580.103-1 => 570.199-1)
libgles-nvidia1 (580.103-1 => 570.199-1)
libgles-nvidia1:i386 (580.103-1 => 570.199-1)
libgles-nvidia2 (580.103-1 => 570.199-1)
libgles-nvidia2:i386 (580.103-1 => 570.199-1)
libglx-nvidia0 (580.103-1 => 570.199-1)
libglx-nvidia0:i386 (580.103-1 => 570.199-1)
libnvcuvid1 (580.103-1 => 570.199-1)
libnvidia-allocator1 (580.103-1 => 570.199-1)
libnvidia-allocator1:i386 (580.103-1 => 570.199-1)
libnvidia-api1 (580.103-1 => 570.199-1)
libnvidia-cfg1 (580.103-1 => 570.199-1)
libnvidia-eglcore (580.103-1 => 570.199-1)
libnvidia-eglcore:i386 (580.103-1 => 570.199-1)
libnvidia-encode1 (580.103-1 => 570.199-1)
libnvidia-fbc1 (580.103-1 => 570.199-1)
libnvidia-glcore (580.103-1 => 570.199-1)
libnvidia-glcore:i386 (580.103-1 => 570.199-1)
libnvidia-glvkspirv (580.103-1 => 570.199-1)
libnvidia-glvkspirv:i386 (580.103-1 => 570.199-1)
libnvidia-gpucomp (580.103-1 => 570.199-1)
libnvidia-gpucomp:i386 (580.103-1 => 570.199-1)
libnvidia-ml1 (580.103-1 => 570.199-1)
libnvidia-ml1:i386 (580.103-1 => 570.199-1)
libnvidia-ngx1 (580.103-1 => 570.199-1)
libnvidia-nvvm4 (580.103-1 => 570.199-1)
libnvidia-opticalflow1 (580.103-1 => 570.199-1)
libnvidia-pkcs11-openssl3 (580.103-1 => 570.199-1)
libnvidia-ptxjitcompiler1 (580.103-1 => 570.199-1)
libnvidia-ptxjitcompiler1:i386 (580.103-1 => 570.199-1)
libnvidia-rtcore (580.103-1 => 570.199-1)
libnvidia-sandboxutils (580.103-1 => 570.199-1)
libnvidia-vksc-core (580.103-1 => 570.199-1)
libnvoptix1 (580.103-1 => 570.199-1)
libxnvctrl0 (580.103-1 => 570.199-1)
nvidia-driver (580.103-1 => 570.199-1)
nvidia-driver-cuda (580.103-1 => 570.199-1)
nvidia-driver-libs (580.103-1 => 570.199-1)
nvidia-driver-libs:i386 (580.103-1 => 570.199-1)
nvidia-egl-icd (580.103-1 => 570.199-1)
nvidia-kernel-open-dkms (580.103-1 => 570.199-1)
nvidia-kernel-support (580.103-1 => 570.199-1)
nvidia-modprobe (580.103-1 => 570.199-1)
nvidia-open (580.103-1 => 570.199-1)
nvidia-opencl-icd (580.103-1 => 570.199-1)
nvidia-persistenced (580.103-1 => 570.199-1)
nvidia-settings (580.103-1 => 570.199-1)
nvidia-vdpau-driver (580.103-1 => 570.199-1)
nvidia-vulkan-icd (580.103-1 => 570.199-1)
nvidia-vulkan-icd:i386 (580.103-1 => 570.199-1)
nvidia-xconfig (580.103-1 => 570.199-1)
xserver-xorg-video-nvidia (580.103-1 => 570.199-1)
0 upgraded, 0 newly installed, 57 downgraded, 2 to remove and 0 not upgraded.
Need to get 0 B/341 MB of archives.
After this operation, 171 MB disk space will be freed.
Do you want to continue? [Y/n]
Tracking latest driver
Non-enterprise users (laptops, workstations, etc.) can just add the repository and get upgraded to the latest drivers (there are bugs open on this topic).
# apt-get -V dist-upgrade
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
The following NEW packages will be installed:
libnvidia-tileiras (590.17-1)
The following packages will be upgraded:
firmware-nvidia-gsp (580.95.05-1 => 590.17-1)
libcuda1 (580.95.05-1 => 590.17-1)
libcuda1:i386 (580.95.05-1 => 590.17-1)
libcudadebugger1 (580.95.05-1 => 590.17-1)
libegl-nvidia0 (580.95.05-1 => 590.17-1)
libegl-nvidia0:i386 (580.95.05-1 => 590.17-1)
libgles-nvidia1 (580.95.05-1 => 590.17-1)
libgles-nvidia1:i386 (580.95.05-1 => 590.17-1)
libgles-nvidia2 (580.95.05-1 => 590.17-1)
libgles-nvidia2:i386 (580.95.05-1 => 590.17-1)
libglx-nvidia0 (580.95.05-1 => 590.17-1)
libglx-nvidia0:i386 (580.95.05-1 => 590.17-1)
libnvcuvid1 (580.95.05-1 => 590.17-1)
libnvidia-allocator1 (580.95.05-1 => 590.17-1)
libnvidia-allocator1:i386 (580.95.05-1 => 590.17-1)
libnvidia-api1 (580.95.05-1 => 590.17-1)
libnvidia-cfg1 (580.95.05-1 => 590.17-1)
libnvidia-eglcore (580.95.05-1 => 590.17-1)
libnvidia-eglcore:i386 (580.95.05-1 => 590.17-1)
libnvidia-encode1 (580.95.05-1 => 590.17-1)
libnvidia-fbc1 (580.95.05-1 => 590.17-1)
libnvidia-glcore (580.95.05-1 => 590.17-1)
libnvidia-glcore:i386 (580.95.05-1 => 590.17-1)
libnvidia-glvkspirv (580.95.05-1 => 590.17-1)
libnvidia-glvkspirv:i386 (580.95.05-1 => 590.17-1)
libnvidia-gpucomp (580.95.05-1 => 590.17-1)
libnvidia-gpucomp:i386 (580.95.05-1 => 590.17-1)
libnvidia-ml1 (580.95.05-1 => 590.17-1)
libnvidia-ml1:i386 (580.95.05-1 => 590.17-1)
libnvidia-ngx1 (580.95.05-1 => 590.17-1)
libnvidia-nvvm4 (580.95.05-1 => 590.17-1)
libnvidia-nvvm704 (580.95.05-1 => 590.17-1)
libnvidia-opticalflow1 (580.95.05-1 => 590.17-1)
libnvidia-pkcs11-openssl3 (580.95.05-1 => 590.17-1)
libnvidia-present (580.95.05-1 => 590.17-1)
libnvidia-ptxjitcompiler1 (580.95.05-1 => 590.17-1)
libnvidia-ptxjitcompiler1:i386 (580.95.05-1 => 590.17-1)
libnvidia-rtcore (580.95.05-1 => 590.17-1)
libnvidia-sandboxutils (580.95.05-1 => 590.17-1)
libnvidia-vksc-core (580.95.05-1 => 590.17-1)
libnvoptix1 (580.95.05-1 => 590.17-1)
nvidia-driver (580.95.05-1 => 590.17-1)
nvidia-driver-cuda (580.95.05-1 => 590.17-1)
nvidia-driver-libs (580.95.05-1 => 590.17-1)
nvidia-driver-libs:i386 (580.95.05-1 => 590.17-1)
nvidia-egl-icd (580.95.05-1 => 590.17-1)
nvidia-kernel-dkms (580.95.05-1 => 590.17-1)
nvidia-kernel-support (580.95.05-1 => 590.17-1)
nvidia-modprobe (580.95.05-1 => 590.17-1)
nvidia-opencl-icd (580.95.05-1 => 590.17-1)
nvidia-persistenced (580.95.05-1 => 590.17-1)
nvidia-vdpau-driver (580.95.05-1 => 590.17-1)
nvidia-vulkan-icd (580.95.05-1 => 590.17-1)
nvidia-vulkan-icd:i386 (580.95.05-1 => 590.17-1)
xserver-xorg-video-nvidia (580.95.05-1 => 590.17-1)
55 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/432 MB of archives.
After this operation, 44.5 MB disk space will be freed.
Do you want to continue? [Y/n]
Upgrade warning messages
Renaming the packages without the branch also solves the errors when switching packages that provide virtual packages.
# apt-get -V install --purge libnvidia-compute-580 libnvidia-gl-580
[...]
Removing nvidia-driver-575-open (575.57.08-0ubuntu1) ...
Removing nvidia-utils-575 (575.57.08-0ubuntu1) ...
Removing xserver-xorg-video-nvidia-575 (575.57.08-0ubuntu1) ...
dpkg: libnvidia-compute-575:amd64: dependency problems, but removing anyway as you requested:
nvidia-compute-utils-575 depends on libnvidia-compute-575.
libnvidia-gl-575:amd64 depends on libnvidia-compute-575 (>= 575.57.08).
Removing libnvidia-compute-575:amd64 (575.57.08-0ubuntu1) ...
(Reading database ... 37374 files and directories currently installed.)
Preparing to unpack .../nvidia-persistenced_580.101-0ubuntu1_amd64.deb ...
Unpacking nvidia-persistenced (580.101-0ubuntu1) over (580.95.05-0ubuntu1) ...
dpkg: libnvidia-cfg1-575:amd64: dependency problems, but removing anyway as you requested:
nvidia-persistenced depends on libnvidia-cfg1; however:
Package libnvidia-cfg1 is not installed.
Package libnvidia-cfg1-575:amd64 which provides libnvidia-cfg1 is to be removed.
(Reading database ... 37374 files and directories currently installed.)
Removing libnvidia-cfg1-575:amd64 (575.57.08-0ubuntu1) ...
Selecting previously unselected package libnvidia-cfg1-580:amd64.
(Reading database ... 37369 files and directories currently installed.)
Preparing to unpack .../libnvidia-cfg1-580_580.101-0ubuntu1_amd64.deb ...
Unpacking libnvidia-cfg1-580:amd64 (580.101-0ubuntu1) ...
[...]
Simpler documentation
The documentation will be much simpler, we will add notes for the pinning package already in 580, but for example, from 590 onwards the whole documentation will not require any editing at every new branch.
Pinning, if needed:
# apt install nvidia-driver-pinning-580
Installing:
# apt install libnvidia-gl libnvidia-gl:i386
# apt install libnvidia-compute libnvidia-gl
# apt install libnvidia-compute libnvidia-nscq libnvsdm nvidia-fabricmanager nvidia-imex
Switching branch to upgrade:
# apt install nvidia-driver-pinning-590
# apt upgrade
DGX systems
On DGX systems, where only a few branches are supported, the pinning package should be preinstalled or directly required by another package, so branches can be switched by the team controlling those packages.