linux – How to Understand Linux Versioning

linuxversion

I need to understand the Linux versioning system and distribution concepts. what are public, stable or final terms for versions?

Best Answer

Kernel versioning is independent of distro versioning, except to the extent that distros include patches of their own. This is indicated by tacking an extra identifier onto the version, e.g.:

3.16.6-203

Here 3.16.6 is the version of the vanilla (unmodified) kernel, and -203 is appended by the distro to indicate the relative version of their modifications to it.

It's not necessary for you to understand that in any depth, just that the Linux kernel is an independent entity. Distros combine it with userland software and (in most cases) everything is precompiled to work together on a specific computer architecture (the most common one today being X86-64; some distros call this AMD64 -- they refer to exactly the same thing).

Most of the fundamental userland software actually comes from GNU, an organization distinct from that of the Linux kernel, hence the proper generic name for the OS is usually considered to be "GNU/Linux".

Software is bundled together in repositories managed by the distribution. When you install software, it comes from a default repository (e.g. "stable"), but you may configure the system to use a different one (e.g. "testing") to access different versions of individual things by default. You might also be able to specify a version and if it is not in the default repository, the installer will check a list of others for it.

Distributions come in two different sorts with regard to versioning themselves. While individual software is always being updated, most distros are also upgraded as a whole occasionally, e.g., from Ubuntu 12.x to Ubuntu 13.x. This enables them to make sweeping changes that might be too difficult to do otherwise. However, some distros instead use a rolling release model where there are not distinct releases, there is just one continuously updated version.

To summarize, the concept of versioning might apply to:

  • The Linux kernel, an independent piece of software.
  • Distribution releases, which often have nicknames (e.g. Ubuntu 14.10: "Utopic Unicorn", or Fedora 20: "Heisenbug").
  • The version of individual packages in a distro, which are usually separated into distinct repositories. Like the kernel, these have independent sources that may be modified slightly by the distribution packagers.
  • The "target architecture" a package is compiled for (e.g. X86-64). These may also be separated into repos.

An example of a full package version string, which combines several of these things:

foobar-4.11.3-4.fc20.x86_64

This is for a Fedora .rpm but other distros use similar schemes. Foobar is the package name, 4.11.3 is the version of the source used, -4 indicates the version of the patches applied by Fedora, f20 is the distro version for which this package was compiled, and x86_64 is the architecture for which it was compiled.