6

I have installed httpd on CentOS 7, but the installed version is 2.4.6-45.el7. This page says that the latest version of httpd is 2.4.25.

I want to know if 2.4.6-45.el7 is equivalent to 2.4.25. What does -45.el7 mean? Is there any documentation about this?

12

That's version 2.4.6 and the part after the - is the package release version.

el (no e1 as stated in the question) represents Enterprise Linux and the following is its corresponding version (7). This version is consistent across RedHat and related distributions (including CentOS).

The packaging version changes when it has to be rebuilt because of a change to another package, which is why it increases even though the actual source package is still the same.

  • 1
    thank u @Julie Pelletier. and it means 2.4.6-45.el7 is not equivalent of 2.4.25? it has security issues of versions between 2.4.7 to 2.4.24? any solution to update to 2.4.25? and when u say 'change to another package' what changes do u mean? – user677900 Jan 16 '17 at 18:25
  • 1
    Suppose you manage a distribution and update a library that has a security update. You will then have to rebuild all packages that use that library, even if they didn't change. – Julie Pelletier Jan 16 '17 at 19:19
  • 4
    Unless you have very good reasons to get a specific version, it's rarely a good idea to use anything that's not included in your system's package manager as you would be responsible for all relevant updates and compatibility issues forever. – Julie Pelletier Jan 16 '17 at 19:22
  • 1
    I started typing a long and arduous response, but it can be boiled down to: "RedHat tries to make the smallest deltas in manage software that minimizes backwards compatibility problems, but still includes security updates that might be introduced in later versions of the given package". That minimizes the work they have to do to update thei tens of thousands of packages that they distribute with their OS. – Jon V Jan 16 '17 at 23:56
5

As you can see at the Red Hat open documentation, the characters after - are the Release version

[root@host ~]# yum info httpd
Available Packages
Name        : httpd
Arch        : x86_64
Version     : 2.4.6
Release     : 45.el7.centos
Size        : 2.7 M
Repo        : base/7/x86_64
Summary     : Apache HTTP Server
URL         : http://httpd.apache.org/
License     : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
            : web server.

Taking a look at the RPM naming convention, we can find the same structure explained as an example package:

name-version-release.architecture.rpm
  • release is the number of times this version of the software has been packaged.

This means that a package with the name 2.4.6-45.el7 has the upstream software version 2.4.6 and has been repackaged(for fixes or improvements) creating 45 "internal versions" of the repository that provides this package. Still looking at the Release field, el7 means the version of the Enterprise Linux we are using, followed by .centos(the distribution). -character is used to separate the upstream version from vendor specific information, while . is used to denote information that is specific about the version or release.

However, as RPM based distributions evolving, more things are being added to the package names, and we can find some names like kexec-tools-1.102pre-126.el5_7.7.x86_64, where stripping down you will find:

  • name: kexec-tools-1.102pre-126. Upstream version the packager is using as "stable/base" to develop and apply fixes to the software. As noticed at the comments by Christian Long, this part is further divided into version(1.102pre) and release(-126)
  • EL version: Version of the OS - el5_7. Since dots are being used as separator of information, the underscore means Enterprise Linux version 5.7.
  • Package Release: Same as above: .7 "repacks" of this package.
  • Architecture: Package architecture - .x86_64 - Useful when you need to install software of other compatible architectures like i386 packages on 64 bit based distributions.

In some packages, you can even find .20161112git at the package name, showing what specific fixes are being backported from that day at the upstream repo. Example: libpcap-1.4.0-4.20130826git2dbcaa1.el6.x86_64

You can query changelogs to see what has improved/fixed, what Red Hat issues were closed and CVEs patched, comparing with the current package version:

[root@host ~]# rpm -q --changelog httpd
* Thu Nov 03 2016 CentOS Sources <bugs@centos.org> - 2.4.6-45.el7.centos
- Remove index.html, add centos-noindex.tar.gz
- change vstring
- change symlink for poweredby.png
- update welcome.conf with proper aliases

* Wed Aug 03 2016 Luboš Uhliarik <luhliari@redhat.com> - 2.4.6-45
- RFE: run mod_rewrite external mapping program as non-root (#1316900)

* Tue Jul 12 2016 Joe Orton <jorton@redhat.com> - 2.4.6-44
- add security fix for CVE-2016-5387

* Tue Jul 05 2016 Joe Orton <jorton@redhat.com> - 2.4.6-43
- add 451 (Unavailable For Legal Reasons) response status-code (#1343582)

* Fri Jun 17 2016 Joe Orton <jorton@redhat.com> - 2.4.6-42
- mod_cache: treat cache as valid with changed Expires in 304 (#1331341)

* Wed Feb 24 2016 Jan Kaluza <jkaluza@redhat.com> - 2.4.6-41
- mod_cache: merge r->err_headers_out into r->headers when the response
  is cached for the first time (#1264989)
- mod_ssl: Do not send SSL warning when SNI hostname is not found as per
  RFC 6066 (#1298148)
- mod_proxy_fcgi: Ignore body data from backend for 304 responses (#1263038)
- fix apache user creation when apache group already exists (#1299889)
- fix apache user creation when USERGROUPS_ENAB is set to 'no' (#1288757)
- mod_proxy: fix slow response time for reponses with error status code
  when using ProxyErrorOverride (#1283653)
- mod_ldap: Respect LDAPConnectionPoolTTL for authn connections (#1300149)
- mod_ssl: use "localhost" in the dummy SSL cert for long FQDNs (#1240495)
- rotatelogs: improve support for localtime (#1244545)
- ab: fix read failure when targeting SSL server (#1255331)
- mod_log_debug: fix LogMessage example in documentation (#1279465)
- mod_authz_dbd, mod_authn_dbd, mod_session_dbd, mod_rewrite: Fix lifetime
  of DB lookup entries independently of the selected DB engine (#1287844)
- mod_ssl: fix hardware crypto support with custom DH parms (#1291865)
- mod_proxy_fcgi: fix SCRIPT_FILENAME when a balancer is used (#1302797)
---remaining output suppressed---
  • 1
    upvote for completeness, but this answer would have helped me more if you had used httpd in all your examples (since that's the search that brought me here) – andrew lorien Jan 17 '17 at 1:01
  • 1
    @andrewlorien. Good catch. Changed my examples to reflect the httpd package, that is the one who created this question :) – user34720 Jan 17 '17 at 9:35
  • In your breakdown of kexec-tools-1.102pre-126.el5_7.7.x86_64, 1.102pre is the Version, and 126.el5_7.7 is the Release. See this comment on the Red Hat discussion page you linked to. – Christian Long Jan 11 '18 at 23:23
  • See my answer for more detail on the breakdown of kexec-tools-1.102pre-126.el5_7.7.x86_64. – Christian Long Jan 11 '18 at 23:36
  • 1
    updated my answer. Thanks for the comment – user34720 Jan 12 '18 at 11:57
2

It's not .e17, but .el7 and stands for centos 7.

2.4.6 is the primary version number and -45 the extended backport patches.

  • thank u @mmmint. can you give me more details or doc about backport. this patches are only security fixes or all changes to httpd? why version number is not like apache httpd like 2.4.25? – user677900 Jan 16 '17 at 18:37
  • 1
    @a.v, backports are generally only security patches and fixes to critical bugs. New features are included only if they're an inherent component of either a security patch or a bugfix. – Mark Jan 16 '17 at 22:17
0

Responding to one detail in @nwildner's otherwise excellent answer.

He gave as an example the rpm file kexec-tools-1.102pre-126.el5_7.7.x86_64.

In this example, 1.102pre is the upstream version, and 126.7 is the rpm package release. The rpm naming convention uses dashes to separate name-version-release. That page says, "The only restriction placed on the version is that it cannot contain a dash".

If you download kexec-tools-1.102pre-126.el5_7.7.x86_64.rpm, you can see the version and release numbers.

rpm -qi kexec-tools-1.102pre-126.el5_7.7.x86_64.rpm

Name        : kexec-tools
Version     : 1.102pre
Release     : 126.el5_7.7
Architecture: x86_64

If you look at the changelog for that rpm file, you can see package release version 126, 126.1, etc., all the way up to 126.7. All are based on the 1.102pre upstream version.

rpm -q --changelog kexec-tools-1.102pre-126.el5_7.7.x86_64.rpm

* Thu Jan 12 2012 Amerigo Wang <amwang@redhat.com> - 1.102pre-126.7
- Remove the restriction for Xen HVM guests, resolve bug 772164.

* Fri Apr 29 2011 Amerigo Wang <amwang@redhat.com> - 1.102pre-126.6
- Add the missing part of the previous patch. Resolve bug 700636.

* Fri Mar 04 2011 Amerigo Wang <amwang@redhat.com> - 1.102pre-126.5
- Get the backup memory region dynamically. Resolve bug 682085.

The confusing thing is that the distribution tag (the 'el5_7' part) is sometimes stuck in the middle of the release string. Here for example, the major part of the release string is '126', the minor part of the release string is '7', and the distribution tag is stuck in between the two.

Here's what the kexec-tools.spec that was used to build this rpm file would look like.

Name:         kexec-tools
Version:      1.102pre
Release:      126%{?dist}.7

For more on the RPM naming format, see the RPM Packaging Guide, especially the part about building RPMs.

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.