Bug#761062: Upgrading from 304.117-1 to 340.32-1 with older graphics card leaves system without X Windows

Marvin Renich mrvn at renich.org
Fri Sep 12 12:35:20 UTC 2014

* Vincent Cheng <vcheng at debian.org> [140912 04:37]:
> I'd like to point out that the various nvidia packages are (supposed
> to be) co-installable, letting you pick what driver series to use at
> runtime rather than during package installation (and the kernel
> modules are patched so that they're versioned as well), so I don't
> think we should forcefully fail package installation attempts of
> nvidia drivers that aren't compatible with the user's hardware. Again,
> probably a debconf prompt invoking nvidia-detect at some point would
> be appropriate.

The non-legacy and legacy packages being co-installable isn't sufficient
to solve this problem.  When the non-legacy packages were installed,
they had the correct drivers (kernel and X) for the given hardware, and
there were no legacy packages that had drivers for that hardware.
When nVidia deprecated drivers for a selection of older hardware, they
created a new legacy package, and removed support for those video cards
from the non-legacy package.  Now the user performs a normal upgrade,
getting the new version of the non-legacy package which no longer
supports the user's hardware.  The package has essentially been renamed
from nvidia-kernel-dkms to nvidia-legacy-304xx-kernel-dkms for _some_
users of nvidia-kernel-dkms but not all.

If this were a simple rename, the normal Replaces and Conflicts dance
would get the new package installed correctly, but Debian's package
management system does not have a way to describe that one package
conditionally supersedes another.

Because this bug leaves the system in a severely broken state, I believe
a failed upgrade is the only viable solution.  The upgrade should fail

    the version of the non-legacy package on the system before the
    upgrade supported the hardware and the new version does not,

        and either of the following is true:

    the legacy packages that support the hardware are not installed
    (both kernel and X),

    the nvidia alternative does not point to the version that supports
    the hardware.

I don't believe a debconf prompt is helpful here.  If the above
conditions are met, you want the upgrade to fail (the user presumably
had a working system prior to the upgrade and will definitely have a
broken system if the upgrade continues).  If the above conditions are
not met, you do not want to fail the upgrade, as the nvidia upgrade will
not affect the system (either the system was working prior to the
upgrade and will continue to work afterward, or the system wasn't
working prior to the upgrade so the upgrade won't break anything that
wasn't already broken).

Note that using nvidia-detect in the preinst, which is what I think is
needed to fix this, will require a PreDepends on nvidia-detect.  I think
having the non-legacy packages bring this in as at least a Recommends
would have been a good thing all along, so I don't think that is a big


More information about the pkg-nvidia-devel mailing list