Why do Linux distributions ship outdated CMake versions? - cmake

Ubuntu shipped CMake 2.8 when version 3.3 was the current version. Other Linux distributions do it similar. Is there a reason like backwards-compatibility issues with CMake 3.0?
I found plenty of people willing to explain how to upgrade CMake to the latest version, but couldn't figure out why it wasn't done by default. I'd like to understand the mentality of keeping it back before I decide to override the decision and upgrade it myself.

Depends on the Linux distribution you're using. A distribution's maintainers cannot ship future versions and often they don't upgrade version with updates as it might break existing applications.
CMake 3.0 has some minor incompatibilities. More important, it got new features and some bugs were fixed. If software relys on these, you'll need a new version.
Btw: With CMake 2.8 the third part of the version number is relevant. They stayed a long time with 2.8.x and added features with increasing x. Then they could not update to 2.9 or 2.10, thus they decided to change the version scheme and increase y in 3.y.
Your question applies to a wider range of software. It is a general question, whether a distribution should stick to defined versions of software they provide or whether they should update it and potentially break the costumers' setup. Enterprise distributions like RHEL or SLE are very conservative and fix bugs for at least a decade. Ubuntu updates it distribution every six month but you can stick to the LTS for three years. Fedora even updates some key components like the kernel after the release. Arch Linux and openSuse Tumbleweed are rolling releases, the update their software almost on a daily bases, when the upstream updates publish new versions.

Related

ScyllaDB: Can I have multi DC cluster with different Scylla versions?

Currently I have a single DC cluster with 3 nodes running 4.1.7 version of Scylla. This setup has been running for a long time and I don't want to make changes to this DC, if possible. Now I have a requirement to add another DC cluster with 3 nodes. Can I set up this new DC with the latest stable version of Scylla? Will the two DCs be able to communicate with each other without any issues? Or am I forced to upgrade the existing DC to the latest version?
Scylla supports rolling upgrades, which means you can indeed upgrade just some of the nodes in the cluster while the rest are still running the older version. The cluster should be able to fully work in this state - including the communication between old and new nodes. Not all upgrade paths are equally supported or have been equally tested, obviously, but most "interesting" upgrade paths (a newer release in the same major version, the next major version) are indeed supported.
That being said, while staying at a half-upgraded state for a long time is possible, it is not recommended. It also means that whatever new features or improved algorithms were introduced in the new version, the new nodes will need to avoid them until the full cluster is upgraded.
OSS 4.1.7 is a pretty old OSS release from Oct 2020. The assumption that you can add another DC running OSS 5.0 (latest OSS release from 10 days ago) to the existing cluster, is a bit of a risky one.
The supported upgrade path (QA tested) is from OSS 4.6 to 5.0. You can read more about the upgrade path here: https://docs.scylladb.com/upgrade/upgrade-opensource/
The tested upgrade route is via minor versions 4.1 --> 4.2 --> 4.3 --> 4.4 --> 4.5 --> 4.6 --> 5.0, jumping multiple minor version should work, but we can't say that it was tested.

Is Apache http server 2.5/2.6 available now?

I want to keep the my Apache HTTP server to its latest version. So I check https://httpd.apache.org/ and it says 2.4.48 is the latest version. I also check https://en.wikipedia.org/wiki/Apache_HTTP_Server#Versions and it says the latest version is 2.4.48 (June 1, 2021; 2 months ago[2])
However, I also see this https://httpd.apache.org/docs/trunk/ and it seems there is 2.5/2.6 version available. I click "New features with Apache 2.5/2.6" link in the page, but get "page not found" error. So, what is the problem?
Apache httpd uses the classic three numbers versioning scheme
Major.Minor.Patchlevel
and uses the Minor version number to distinguish between development versions (odd Minor number) and stable, released versions (even Minor number).
So 2.4.52 is the most recent released version as of the time of this writing.
The 2.5.x versions also exist, being in-progress unstable and unreleased development versions targetted at developers only. Once the 2.5 series matures and is considered to be ready for a release, it will become the 2.6 stable series, successor of the 2.4 stable series. (Just as the 2.4 series is the successor of the 2.2 series, with all 2.3.x versions being unstable development versions leading up to 2.4.0.)
There is not version 2.6.x yet, as development hasn't finished so far.
Unfortunately, I could not find any official informatin on the Apache httpd website detailing this.

How to determine the latest OpenSSL version

What is the most reliable source to find the latest version number?
Is it github?
And if yes, which version should I take?
Right now, here is what I see:
Should I take the 1.0.2k?
But then 1.1.0d seems like it is more recent (if it follows semantic versioning). What do the letters actually mean?
Note: in my case this is to compile an openssl version with nginx.
Last time I picked (quite randomly) the version 1.0.2h which seemed the latest at the time.
So what is the process to follow to find the latest openssl version?
https://www.openssl.org/ shows which version are current and supported.
Currently there are two major versions in development: 1.1.0 and 1.0.2. 1.1.0 is newer and has more features. But due to the cleanups between 1.0.2 and 1.1.0 lots of undocumented API (i.e. things which never were an official API but got used anyway since no official API existed) got broken and not all software works or works stable with 1.1.0 yet. Also, 1.1.0 tends to introduce not only features but also bugs faster than 1.0.2 when looking at the release history. And with 1.1.0 the chance is higher that documented behavior changes even between patch releases.
Thus if you need the new features with 1.1.0 then go with it. If you prefer a more stable version with a smaller chance of bugs use 1.0.2. In all cases you should always use the latest patch release and keep using it if new patches get released or backport security patches.

Using httpd 2.4 instead of 2.2 on centos 6

I use Centos 6.5, I've installed apache 2.2 on my server by yum, I want to upgrade my apache to 2.4, but yum not support that, so I download apache 2.4.7 and install it to opt/apache/httpd-2.4.7 follow the tutorial here: Apache 2.4.x Manual install on RHEL 6.4 - No apache modules will load on start . I want to change environment variables to new apache version to write apache 2.4 modules (change include folder for header file, change "modules" folder when build with apxs,...). I think I must install another httpd-devel for apache 2.4.7, because I still not install httpd-devel-2.4.7, but I don't know how to install and use it instead of httpd-devel-2.2 by yum. I can not describe my problems clearly in English, so I hope you can understand it. I'm a newbie and I really need your help. Thank you!
CentOS is image of RHEL, which stands for Red Hat Enterprise Linux. RHEL is designed to be an "Enterprise class" operating system, in which you rely on software packages that are delivered from controlled repositories where they are made available only after being thoroughly tested for Enterprise level use.
From that point of view, its generally not a good idea to install packages from source code, or using third party RPMs, because once you do, your OS is no longer "Enterprise" class.
If you're trying to upgrade for security reasons, you shouldn't. Critical security updates are always backported in previous RPM releases, so you only have to update your current package from the same yum repo from where you got it first. The binary will still say it is Apache 2.2, but it will have the latest security updates.
If you need an actual feature of 2.4, the smart move is to upgrade your CentOS. It may seem like the harder option initially, but it never is in the long run.
In my experience these reports can be fairly basic/binary:
Are you running the latest version of the software? If no flag as security risk.
However this fails to take into account package managers which back port fixes to older versions and so often have addressed potential security issues.
By moving away from the packaged version you are making security updates more difficult (as can't do a simple "yum update" to address them anymore).
Apache 2.2 is still maintained for security and bug fixes - though how long for remains to be seen and it is falling further and further behind in features.
So often you just need to explain (and prove!) you have a regular patching process and so the "version of Apache" you are reporting is not really accurate in terms of security patching.
See here for more details: https://serverfault.com/questions/731657/pci-compliance-apache-versions/
Saying all that we moved to Apache 2.4 on centos a while back for some extra features we wanted and just upgrade it to the latest version as part of regular patching cycle and are not finding it too inconvenient. Yes it's not quite as simple as "yum update" but it's a decision we've made because of some features we required. Not a decision to be taken lightly as Garreth states but it had the added side effect of this not getting highlighted anymore in these sorts of security scans :-)
We made this decision despite upgrading to a newer version of Red Hat as that was still on an older version of Apache (2.4.7 if memory serves me correctly) which still missed a few features we required. Sometimes it's frustrating how far behind some of these "enterprise" versions are, but that's the downside when there are plenty of upsides to using them too (stability, security... etc.).

installing matplotlib on ubuntu?

I have:
Ubuntu 8.04
python 2.5.2 installed on this Ubuntu
matplotlib 0.92.0 installed
I want to upgrade to (atleast) matplotlib 0.99
so that I can do 3d plotting.
The synaptic package (also the command line apt-get)
tells me that whatever I have is the latest matplotlib (which is not true).
How can I install matplotlib 0.99 or matplotlib 1.0.1 ?
You have the latest available package version for your operating system. Given that Ubuntu is at version 11 now and you are using 8.04, the version difference in the matplotlib package might not come as very surprising.
As for installing the newest version, I'd suggest reading:
http://matplotlib.sourceforge.net/faq/installing_faq.html
...if all fails, you can always install from source.
Note that support for Desktop versions of 8.04 LTS is due to expire shortly -- if this is a desktop machine, perhaps the easiest answer is to upgrade to 10.04 LTS, 10.10, or the very-soon-upcoming 11.04 release (or whatever they'll call the next release). Maybe not "the easiest answer", but an answer that includes security updates for Mozilla, Adobe Flash, the Kernel, and so forth.
Many newer versions of packages are supported via the Ubuntu Backports facility, but I didn't spot python-matplotlib in the list of available packages. Perhaps they would provide it if you asked nicely, perhaps it would be too much work.
You can always try installing newer versions from newer releases, but newer versions of python and libraries might introduce worse problems. (But probably will work fine.) See the apt_preferences(5) manpage for details on how to configure multiple APT sources and select some specific packages from a newer distribution (pinning), and rely on the older distribution for all the other packages.
Jim's answer of building the version you need from source is probably your best second option, if installing a newer version of the distribution is too daunting / otherwise impossible at this point.