Chapter 9. Dynamic programming languages, web servers, database servers
The following chapter contains the most notable changes to dynamic programming languages, web servers, and database servers between RHEL 8 and RHEL 9.
9.1. Notable changes to dynamic programming languages, web and database servers Copy linkLink copied to clipboard!
Initial Application Streams versions in RHEL 9
RHEL 9 improves the Application Streams experience by providing initial Application Stream versions that can be installed as RPM packages using the traditional dnf install command.
RHEL 9.0 provides the following dynamic programming languages:
- Node.js 16
- Perl 5.32
- PHP 8.0
- Python 3.9
- Ruby 3.0
RHEL 9.0 includes the following version control systems:
- Git 2.31
- Subversion 1.14
The following web servers are distributed with RHEL 9.0:
- Apache HTTP Server 2.4
- nginx 1.20
The following proxy caching servers are available:
- Varnish Cache 6.6
- Squid 5.2
RHEL 9.0 offers the following database servers:
- MariaDB 10.5
- MySQL 8.0
- PostgreSQL 13
- Redis 6.2
Some additional Application Stream versions will be distributed as modules with a shorter life cycle in future minor RHEL 9 releases.
Additional Application Streams available in RHEL 9
When planning to adopt or upgrade to RHEL 9, review the Red Hat Enterprise Linux Application Streams Life Cycle for any additional streams that you plan to use. Verify that their supported lifetime matches the lifecycle of your workloads.
Change of currency symbol for Bulgaria and Croatia in glibc locales
In RHEL 9.8, the C libraries configure the glibc locales for Bulgaria and Croatia to use the euro currency symbol. The relevant interfaces are not versioned, so the currency symbol changes immediately for all data that uses these locales, including existing data.
If your applications rely on currency formatting or parsing for the Bulgarian or Croatian locales, review their behavior after upgrading to RHEL 9.8. Verify that:
- User interfaces correctly display the euro symbol instead of the previous currency symbol.
- Any parsing, validation, or reporting logic that assumes the old currency symbol continues to work as expected or is updated accordingly.
The PostGIS extension is available for PostgreSQL
Starting with RHEL 9.7, the PostGIS extension is available for PostgreSQL. With this extension, PostgreSQL supports geographic objects, enabling spatial queries and analysis for Geographic Information System (GIS) applications, such as mapping, geolocation, and distance calculations within a relational database.
Major differences in the Python ecosystem since RHEL 8
The unversioned python command
The unversioned form of the python command (/usr/bin/python) is available in the python-unversioned-command package. On some systems, this package is not installed by default. To install the unversioned form of the python command manually, use the dnf install /usr/bin/python command.
In RHEL 9, the unversioned form of the python command points to the default Python 3.9 version and it is an equivalent to the python3 and python3.9 commands. In RHEL 9, you cannot configure the unversioned command to point to a different version than Python 3.9.
The python command is intended for interactive sessions. In production, it is recommended to use python3, python3.9, or python3.11 explicitly.
You can uninstall the unversioned python command by using the dnf remove /usr/bin/python command.
If you need a different python or python3 command, you can create custom symlinks in /usr/local/bin or ~/.local/bin, or use a Python virtual environment.
Several other unversioned commands are available, such as /usr/bin/pip in the python3-pip package. In RHEL 9, all unversioned commands point to the default Python 3.9 version.
Architecture-specific Python wheels
Architecture-specific Python wheels built on RHEL 9 newly adhere to the upstream architecture naming, which allows customers to build their Python wheels on RHEL 9 and install them on non-RHEL systems. Python wheels built on previous releases of RHEL are forward compatible and can be installed on RHEL 9. Note that this affects only wheels containing Python extensions, which are built for each architecture, not Python wheels with pure Python code, which is not architecture-specific.
Differences between the perl and perl-interpreter packages
RHEL 9 provides both the perl and perl-interpreter packages. The perl package is suitable for development because it contains the full Perl upstream distribution in dependencies, including GCC. On production systems, use the perl-interpreter package, which contains the main /usr/bin/perl interpreter.
Notable changes to libdb
RHEL 8 and RHEL 9 currently provide Berkeley DB (libdb) version 5.3.28, which is distributed under the LGPLv2 license. The upstream Berkeley DB version 6 is available under the AGPLv3 license, which is more restrictive.
The libdb package is deprecated as of RHEL 9 and might not be available in future major RHEL releases. Cryptographic algorithms have been removed from libdb in RHEL 9. Multiple libdb dependencies have been removed from RHEL 9.
Users of libdb are advised to migrate to a different key-value database. For more information, see the Knowledgebase article Available replacements for the deprecated Berkeley DB (libdb) in RHEL.
Tomcat available since RHEL 9.2
RHEL 9.2 introduces the Apache Tomcat server version 9. Tomcat is the servlet container that is used in the official Reference Implementation for the Java Servlet and JavaServer Pages technologies. The Java Servlet and JavaServer Pages specifications are developed by Sun under the Java Community Process. Tomcat is developed in an open and participatory environment and released under the Apache Software License version 2.0.
A new module stream: postgresql:18
RHEL 9.8 introduces PostgreSQL 18 as the postgresql:18 module stream.
Notable changes:
-
The new Asynchronous I/O (AIO) subsystem provides up to three times faster data reads. You can enable this subsystem by setting the
io_methodvariable. - The MD5 authentication method is deprecated and will be removed in a future major PostgreSQL release.
- By default, data page checksums are enabled in PostgreSQL 18. If you upgrade from a previous version with data page checksums disabled, you must either enable the feature before the update or disable it during the upgrade. For further details, see Upgrading from a RHEL 9 version of PostgreSQL 16 to PostgreSQL 18.
- PostgreSQL 18 supports native OAUth 2.0 single sign-on authentication.
- The database service supports Federal Information Processing Standards (FIPS) mode validation for regulated environments.
-
The
pg_upgradeutility preserves statistics during major release upgrades and significantly faster reaches full performance after an upgrade.
A new module stream: mariadb:11.8
MariaDB 11.8 is available as a new module stream, mariadb:11.8.
Notable changes over the previously available version 10.11 include:
-
By default, MariaDB 11.8 uses the
utf8mb4character set instead oflatin1and legacyutf8to ensure full Unicode support. Vector support was added to support machine learning. This includes the
VECTOR(N)data type and the following functions:-
VEC_DISTANCE() -
VEC_DISTANCE_EUCLIDEAN() -
VEC_DISTANCE_COSINE() -
Vec_FromText(json_array) -
Vec_ToText(vector_column)
-
-
The
mariadb-dumpandmariadb-importutilities natively support parallel operations. Specify the--dirand--paralleloptions to dump or load multiple databases simultaneously. -
The upper limit of the
TIMESTAMPdata type was increased from2038-01-19to2106-02-07while still using 4 bytes of storage. -
The
UUID_v4()andUUID_v7()functions were added. -
The JSON handling was improved. This includes new functions, such as
JSON_SCHEMA_VALID(). The following system variables were added to define the maximum storage for temporary tables and other internally created temporary files:
-
max_tmp_session_space_usagelimits the disk space used per session -
max_tmp_total_space_usagelimits the total disk space used by the MariaDB server instance
-
-
The
des_encryptanddes_decryptconfiguration file parameters are deprecated and will be removed in a future MariaDB release.
Notable breaking differences:
The following utilities were renamed but symbolic links were created for backward compatibility:
-
mysql>mariadb -
mysqldump>mariadb-dump -
mysqladmin>mariadb-admin
If you still use the previous names of these utilities, they display deprecation warnings.
-
-
The
innodb_defragmentconfiguration parameter is no longer supported. Remove it from your configuration files.
For more information about MariaDB, see Using MariaDB.
To install the mariadb:11.8 stream, enter:
# dnf module install mariadb:11.8
If you want to upgrade from MariaDB 10.11, see Upgrading from a RHEL 9 version of MariaDB 10.11 to MariaDB 11.8.
For information about the length of support for the mariadb module streams, see Red Hat Enterprise Linux Application Streams Life Cycle.
The mysql:8.4 module now includes the perl-DBD-MySQL package
This update adds the perl-DBD-MySQL package to the mysql:8.4 module. Starting with Red Hat Enterprise Linux (RHEL) 9.7, the perl-DBD-MySQL package is linked against libmysqlclient instead of libmariadb. To ensure compatibility, perl-DBD-MySQL is included within mysql:8.4. As a result, the perl-DBD-MySQL package is fully compatible with the mysql:8.4 module, which resolves dependency conflicts and installation failures.