Here we are almost done with the release of Calculate Linux 22. We’d like to tell some more about a very important new feature that will make your system even more reliable.
Many users have been using Calculate Linux for a long time without reinstalling it. Some have not upgraded for 5 or even 10 years! Our binary repository updating your system became much easier. The main reason was not the binary approach, as many might think, but the resolution of the numerous blockages that occur while preparing a large number of binary packages. An example of this is nightly builds, which have been regularly updated, tested and taken as a basis for new releases, year after year. Calculate Linux can indeed be considered a distribution with almost unlimited support life! Still, there is a weak point in this beautiful rolling-release update scenario, and those are nearly guaranteed problems when trying to upgrade the system after a long interval.
Update issues can be caused by various reasons. A recent example is that of the April release of Calculate Linux 21 which, if installed in July, will cause an error. The reason is the migration of the Portage tree to EAPI 8. The package manager included in version 3.0.18 did not support EAPI 8. By late June, early July Gentoo maintainers managed to fix version 3.0.20 with EAPI 8 support, and in the middle of July they put EAPI 8 in the Portage tree. As a result, all updates are blocked. The only way around is to run the following commands one after another:
cl-update --sync-only; emerge -1O python:3.9; emerge -1O glibc; emerge -1O portage; cl-update.
It is certainly possible to think of a way to use revisions for installing these packages when starting an upgrade. But this would only be a temporary arrangement. As you might have noticed in the example above, you have to reinstall more than just the package manager to break the lock. Maintaining such a nesting box indefinitely, or for just a year, would be both expensive and problematic.
The idea is not new. Remember how Windows updates, first installing a new browser, then a service pack for it, then updates for the service pack, etc. You think you have updated all the way to the end, but the next run will again roll out a decent amount of updates to the already installed packages. We will do it the same way. To this end, we use the concept of repository “level” for the binary repository (the level parameter in the
/grp/ini.env file of the mirror is now “0”). The package update level used will be stored in the
cl_update_level utility variable. At update time,
cl-update will compare the value of cl_update_level to the mirror and, if necessary, switch to the migration mirror. The migration mirror contains the binary repository as of the time of the last successful system update. The value of
cl_update_level will then be incremented. The utility will return to the working mirror after checking that its level matches the system level, otherwise it will switch the update to the next migration mirror.
We rented a new server to run the migration mirrors, which will be backed up via our well-tested btrfs+btrbk solution. This simple workaround will allow you to update your legacy systems virtually unlimited in time.
The transition of Calculate Utilities to Python 3 is an important step . Due to the lack of support for the necessary libraries in the new version of Python, we delayed it while continuing to support Python 2. In the meantime, work began toward version 4, with plans to completely rewrite the code. Unfortunately the project was delayed and we decided to port CU 3 to Python 3. Most of the migration bugs have been fixed, and Python 2 is no longer included in our distributions. Looking forward, we plan to get back to work on Calculate Utilities 4.
A while ago, we launched a poll on the Reformal platform to gather feedback and ideas from users, just in case. Thanks to everyone who took part in it and submitted their suggestions, either discussing it orvoting. If you missed the news, check this feedback. Some simple stuff has already been fixed, some more challenging issues have been left until better times.
PipeWire is a sound server, a PulseAudio replacement. Alternatively, you can still choose ALSA for use on Calculate Linux, which is likely to be suitable in most cases. Much praise has been given to PipeWire, designed to lower the system requirements and achieve the best possible sound quality. Of course, an important step in switching to it was precisely to prepare a new release featuring PipeWire.
The last major step in the preparation of the new release was the upgrade to the new kernel with long term support 5.15. It should provide better hardware support, improved support for NTFS, performance optimizations and much more. You can install a binary version of kernel 5.10 if you have doubts or problems.
Calculate Linux 22 is scheduled for release this month.