"nvidia-304-updates" vs "nvidia-304" (and similar)? [duplicate]

What is the difference between these two modules? Whoever created them didn't seem to think of including a clear description.


Solution 1:

You can research which Nvidia driver you need at: Unix Drivers | NVIDIA

If you click on the 304 link, you find information about the driver and the Supported Products tab lists the cards that need this driver. Find your card and you will know which driver you need.

If you look up the package names in Software Center or Synaptic, you will find the url to that same Nvidia page in the package description and you will see the driver version that the Ubuntu package is providing.

The difference between nvidia-304 and nvidia-304-updates is the Nvidia version (and perhaps the version of Ubuntu patch of that number) that it points to.

In general, the updates package will point to the newest revision by Nvidia and the package without updates in the name will point to the previous stable version. The exact relationship, however, may vary by Ubuntu release.

For example, at the Nvidia driver page, you can see that 304.108 is called "the Latest Legacy GPU version". It was released August 8, 2013. A link to the archived drivers shows that the previous version was 304.88, released on April 2, 2013.

So, in 13.10, 304-updates currently refers to 304.108 and 304 currently refers to 304.88

In general, you will want the updates version since it will point to the newest driver. But exactly what you need depends on the exact model of your card since the newest features in the driver may not work with your card.

In addition to the Nvidia number, the Ubuntu developers patch the driver, so the actual binary version to install contains the Nvidia number followed by the Ubuntu version number.

In 13.04 and 12.04 both packages refer to 304.88, but to different Ubuntu-patched versions. For example, in 13.04, 304 is 304.88-0ubuntu1 and 304-updates is 304.88-0ubuntu2. Information about the Ubuntu version can be found in Launchpad.

So you see that the actual binary file that the nvidia-304 and nvidia-304-updates packages will provide to your system will change over time. You can see this easily by viewing the changelog. 304 now points to 88, before that to 84, before that 64, etc.

A little research or experimentation may be needed to determine which each driver you need and it may change over time. On my laptop with an older Nvidia card, as the version numbers changed I had to go from 304-updates to 304 because 304-updates began to point to a newer version of the driver that caused problems for my card.

A note based on comments:

These version numbers assume that you are using the versions of 304 and 304-updates provided by the standard Ubuntu repositories. It is possible to replace the standard repository for these packages with PPA's (Personal Package Archives). One commonly used PPA is xorg-edgers, which provides bleeding edge versions of the drivers. Someone may choose to use this PPA if they need or want a version of the driver that is newer than the one offered by the Ubuntu release they are using.

Here's the important point for the meaning of the 304 and 304-update packages (and others) after a PPA like that has been installed: they no longer have the same meaning. If you install 304 from xorg-edgers, 304 will now point to the newest driver provided by xorg-edgers and the relationship built into the package name structure will no longer hold. Additional Drivers will still report the the package name as 304 (because the package name hasn't changed). Nvidia-settings will report the actual version of the binary that it sees, in this case a non-standard 108. It doesn't know (or care) that the binary came from a PPA, not the standard repository.