Why so many homebrew package name with underscore


Just want to know why so many homebrew packages with underscore, are they beta release?

Usually I don't install any packages with underscores, just want to know the reason behind it.

Few example

luajit (2.0.3 < 2.0.3_1)
macvim (7.4-73 < 7.4-73_1)
mysql (5.6.10-boxen3, 5.6.13 < 5.6.21)
node (0.10.32 < 0.10.33_1)
ossp-uuid (1.6.2 < 1.6.2_1)
osxfuse (2.7.1 < 2.7.2)


Best Answer

The underscores in the version numbers indicate Homebrew specific changes or revisions. It means the upstream software hasn't changed, just that the Homebrew formula has been revised in some way.

Taking node as an example, the current release version of Node.js is "0.10.33". However the Homebrew version number has been updated to "0.10.33_1" (in other words, revision 1 of 0.10.33) because the formula was updated to point to a newer version of npm (one of node's dependencies) as you can see in this commit. So it is still the same version of node, but the Homebrew package itself has a new revision.

Similar the luajit package is updated to 2.0.3_1 in this commit where the lua dependency is updated to a newer version. lua itself hasn't been changed, it is still version 2.0.3 but the Homebrew formula has been updated.

Long story short it's perfectly safe to update to releases with an underscore. They don't indicate beta releases.