I'm getting dependency conflicts when trying to run a simple yum update. I notice that in some cases, it's looking for a package called foo w.x-y.z.el6 while the repo only has foo w.x-y.z.el6_a.b, where a.b is something like "2.1" or "2.9". The spec for RPM file names doesn't mention this underscore bit -- what's it mean?


vonbrand has it all correct.

In your example, version w.x-y.z.el6_a.b means the upstream version number is w.x and your local distribution's version (typically a patch or build number) is y.z.el6_a.b

This is distinct from version w.x-y.z.el6, which is the same upstream version (w.x), but a different local distribution version (y.z.el6). They are not the same version.

As for what the difference between y.z.el6 and y.z.el6_a.b, that would depend on the specific syntax of the section, which is entirely dependent on how the person/group making the package internally numbers its versions. For packages from Red Hat, the change you are observing typically refers to a different build within a single patch-level. The source code may be identical for the two versions, but they are compiled against different releases of RHEL6 (e.g. 6.3 vs. 6.4). They might depend on different versions of glibc or other shared libraries.

For example, an update I just applied replaced cups-1.4.2-48.el6_3.3.x86_64.rpm with cups-1.4.2-50.el6_4.4.x86_64.rpm. Both are builds of cups version 1.4.2. As I understand Red Hat's convention, the package has been upgraded from patch level 48 to 50, and is now built against RHEL 6.4 (vs. 6.3). I'm not sure what the final ".4" vs ".3" means - I have some packages where the version ends in "el6", some that end in "el6_3", some in "el6_4", some in "el6_4.1", some in "el6_4.4", etc. Of course, since all these version numbers are distribution-specific, I would need to find some kind of Red Hat document to be certain.

In summary, for your example, these two packages are different patches/builds of the same upstream source version, but the specific meaning beyond that is going to require asking the source of the package.


The RPM package name is <name>-<version>-<localrelease>.<arch>.rpm The <name> is the package name (it can very well be something like funky-gui-devel-libs, the '-'s separating stuff are counted from the end), <version> is the upstream version (no '-'!), <localrelease> is a local version (there might be several rounds of patches on the same upstream base, it usually includes the target system), <arch> is the architecture. The underscore is just a separator that isn't a '-' here.

  • So, in my example, the whole string y.z.el6_a.b is the <localrelease>? In that case, I wouldn't expect the end part (_a.b) to impact version calculation, but it seems to matter... – Coderer Jan 22 '13 at 15:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.