Что следует за подчеркиванием в строке версии RPM?

2470
Coderer

Я получаю конфликты зависимостей при попытке запустить простой yum update. Я заметил, что в некоторых случаях он ищет пакет, который вызывается foo w.x-y.z.el6только в репо foo w.x-y.z.el6_a.b, где a.bчто-то вроде «2.1» или «2.9». Спецификации для имен файлов RPM не упоминают это подчеркивание битого - что это значит?

2

2 ответа на вопрос

5
David C.

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.

1
vonbrand

Имя пакета RPM: <name> - <версия> - <localrelease>. <Arch> .rpm. <Name> - это имя пакета (очень может быть что-то вроде funky-gui-devel-libs, '-' s разделяющие элементы считаются с конца), <версия> является версией выше (нет '-'!), <localrelease> является локальной версией (может быть несколько раундов патчей на одной и той же исходной базе, обычно она включает в себя целевая система), <arch> - это архитектура. Подчеркивание - это просто разделитель, который здесь не является «-».

Итак, в моем примере вся строка `yzel6_a.b` является ? В этом случае я бы не ожидал, что конечная часть (`_a.b`) повлияет на вычисление версии, но, похоже, это имеет значение ... Coderer 11 лет назад 0