4.13. Langages de programmation dynamiques, serveurs web et de base de données
Python dans RHEL 9
Python 3.9 est l'implémentation par défaut de Python dans RHEL 9. Python 3.9 est distribué dans un paquet RPM python3 non modulaire dans le dépôt BaseOS et est généralement installé par défaut. Python 3.9 sera pris en charge pendant toute la durée de vie de RHEL 9.
Les versions supplémentaires de Python 3 seront distribuées sous forme de paquets RPM avec un cycle de vie plus court via le dépôt AppStream et pourront être installées en parallèle.
La commande python (/usr/bin/python), ainsi que d'autres commandes liées à Python, telles que pip, sont disponibles sous forme non versionnée et renvoient à la version par défaut Python 3.9.
Python 2 n'est pas distribué avec RHEL 9.
Pour plus d'informations sur Python dans RHEL 9, voir Introduction à Python.
(BZ#1941595, JIRA:RHELPLAN-80598)
Node.js 16 disponible dans RHEL 9
RHEL 9 fournit la version 16 du support à long terme (LTS) de Node.js, une plate-forme de développement logiciel pour la création d'applications réseau rapides et évolutives dans le langage de programmation JavaScript.
Les changements notables survenus sur Node.js 16 à partir de Node.js 14 sont les suivants :
-
Le moteur
V8est passé à la version 9.4. -
Le gestionnaire de paquets
npma été mis à niveau vers la version 8.3.1. -
Une nouvelle API
Timers Promisesfournit un ensemble alternatif de fonctions de minuterie qui renvoient des objetsPromise. -
Node.jsest désormais compatible avecOpenSSL 3.0. -
Node.jsfournit désormais une nouvelle API expérimentaleWeb Streamset une API expérimentale de crochets de chargement de modules ECMAScript (ESM).
Node.js 16 est la version initiale de ce flux d'applications, que vous pouvez installer facilement en tant que paquetage RPM. Node.js 16 a un cycle de vie plus court que RHEL 9. Pour plus de détails, consultez le document Red Hat Enterprise Linux Application Streams Life Cycle (cycle de vie des flux d'applications Red Hat Enterprise Linux ). D'autres versions de Node.js seront fournies en tant que modules ayant également un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
RHEL 9 fournit Ruby 3.0
RHEL 9 est distribué avec Ruby 3.0.3, qui apporte un certain nombre d'améliorations de performance, de corrections de bogues et de sécurité, ainsi que de nouvelles fonctionnalités par rapport à Ruby 2.7.
Parmi les améliorations notables, citons
Caractéristiques de concurence et de parallélisme :
-
Ractorune abstraction de modèle d'acteur qui permet une exécution parallèle sûre pour les threads, est fournie à titre expérimental. -
Fiber Schedulera été introduit à titre expérimental.Fiber Schedulerintercepte les opérations bloquantes, ce qui permet une concurrence légère sans modifier le code existant.
-
Caractéristiques de l'analyse statique :
-
Le langage
RBS, qui décrit la structure des programmesRuby, a été introduit. La gemmerbsa été ajoutée pour analyser les définitions de type écrites enRBS. -
L'utilitaire
TypeProfa été introduit. Il s'agit d'un outil d'analyse de type pour le codeRuby.
-
Le langage
-
La recherche de motifs avec l'expression
case/inn'est plus expérimentale. - La recherche de motifs sur une ligne, qui est une fonctionnalité expérimentale, a été repensée.
- La fonction de recherche de motifs a été ajoutée à titre expérimental.
Les améliorations suivantes ont été apportées aux performances :
-
Le collage d'un long code sur le site
Interactive Ruby Shell (IRB)est désormais beaucoup plus rapide. -
La commande
measurea été ajoutée àIRBpour la mesure du temps.
D'autres changements notables sont à signaler :
- Les arguments de type mot-clé sont désormais séparés des autres arguments.
-
Le répertoire par défaut pour les gemmes installées par l'utilisateur est désormais
$HOME/.local/share/gem/, sauf si le répertoire$HOME/.gem/est déjà présent.
Ruby 3.0 est la version initiale de ce flux d'applications que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Ruby seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-80758)
RHEL 9 présente Perl 5.32
RHEL 9 inclut Perl 5.32, qui apporte un certain nombre de corrections de bogues et d'améliorations par rapport à la version 5.30.
Parmi les améliorations notables, on peut citer
-
Perlsupporte désormais la version 13.0 d'Unicode. -
L'opérateur de citation
qra été amélioré. -
Les fonctions
POSIX::mblen(),mbtowc, etwctombfonctionnent désormais sur les locales shift state et sont thread-safe sur les compilateurs C99 et supérieurs lorsqu'elles sont exécutées sur une plateforme qui dispose de la thread-safety locale ; les paramètres length sont désormais optionnels. -
Le nouvel opérateur infixe expérimental
isavérifie si un objet donné est une instance d'une classe donnée ou une classe dérivée. - Les assertions alpha ne sont plus expérimentales.
- Les exécutions de scripts ne sont plus expérimentales.
- Les vérifications des caractéristiques sont désormais plus rapides.
-
Perlpeut désormais extraire les motifs compilés avant l'optimisation.
Perl 5.32 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Perl seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-80759)
RHEL 9 comprend PHP 8.0
RHEL 9 est distribué avec PHP 8.0, qui apporte un certain nombre de corrections de bogues et d'améliorations par rapport à la version 7.4.
Parmi les améliorations notables, citons
- Les nouveaux arguments nommés sont indépendants de l'ordre et auto-documentés, et vous permettent de ne spécifier que les paramètres requis.
- De nouveaux attributs permettent d'utiliser des métadonnées structurées avec la syntaxe native de PHP.
- Les nouveaux types d'union vous permettent d'utiliser des déclarations de type d'union natives qui sont validées au moment de l'exécution au lieu des annotations PHPDoc pour une combinaison de types.
- Les fonctions internes lèvent désormais plus systématiquement une exception d'erreur au lieu d'un avertissement en cas d'échec de la validation des paramètres.
- Les nouveaux moteurs de compilation Just-In-Time améliorent considérablement les performances des applications.
-
L'extension de débogage et de productivité
Xdebugpour PHP a été mise à jour à la version 3. Cette version introduit des changements majeurs dans les fonctionnalités et la configuration par rapport àXdebug 2.
PHP 8.0 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de PHP seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation du langage de script PHP.
RHEL 9 fournit Git 2.31 et Git LFS 2.13
RHEL 9 est distribué avec Git 2.31 qui fournit un certain nombre d'améliorations et de performances par rapport à la version 2.27 disponible dans RHEL 8. Les changements les plus importants sont les suivants :
-
La commande
git statusindique désormais l'état de la vérification des données éparses (sparse checkout). -
Vous pouvez désormais utiliser l'option
--add-fileavec la commandegit archivepour inclure des fichiers non suivis dans un instantané à partir d'un identifiant de type arbre. -
Vous pouvez utiliser la variable de configuration
clone.defaultremotenamepour personnaliser le surnom du référentiel distant source. -
Vous pouvez configurer la longueur maximale des noms de fichiers de sortie créés par la commande
git format-patch. Auparavant, la limite de longueur était de 64 octets. - La prise en charge de la bibliothèque PCRE1, obsolète, a été supprimée.
En outre, la version 2.13 de l'extension Git Large File Storage (LFS) est désormais disponible. Les améliorations par rapport à la version 2.11 distribuée dans RHEL 8 sont les suivantes :
-
Git LFSsupporte désormais les dépôts SHA-256. -
Git LFSprend désormais en charge le protocolesocks5h. -
Une nouvelle option
--worktreeest disponible pour les commandesgit lfs installetgit lfs uninstall. -
Un nouveau paramètre
--aboveest disponible pour la commandegit lfs migrate import.
(BZ#1956345, BZ#1952517)
Subversion 1.14 dans RHEL 9
RHEL 9 est distribué avec Subversion 1.14. Subversion 1.14 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de Subversion seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
(JIRA:RHELPLAN-82578)
Changements notables dans le serveur HTTP Apache
RHEL 9.0 fournit la version 2.4.51 du serveur HTTP Apache. Les changements notables par rapport à la version 2.4.37 sont les suivants :
Interface de contrôle du serveur HTTP Apache (
apachectl) :-
Le pager
systemctlest maintenant désactivé pour la sortieapachectl status. -
La commande
apachectléchoue maintenant au lieu de donner un avertissement si vous passez des arguments supplémentaires. -
La commande
apachectl graceful-stoprevient maintenant immédiatement. -
La commande
apachectl configtestexécute désormais la commandehttpd -tsans modifier le contexte SELinux. -
La page de manuel
apachectl(8)de RHEL documente désormais pleinement les différences avec la version amontapachectl.
-
Le pager
Outil Apache eXtenSion (
apxs) :-
La commande
/usr/bin/apxsn'utilise ni n'expose plus les drapeaux d'optimisation du compilateur tels qu'ils sont appliqués lors de la construction du paquethttpd. Vous pouvez maintenant utiliser la commande/usr/lib64/httpd/build/vendor-apxspour appliquer les mêmes drapeaux de compilateur que ceux utilisés pour construirehttpd. Pour utiliser la commandevendor-apxs, vous devez d'abord installer le paquetageredhat-rpm-config.
-
La commande
Modules Apache :
-
Le module
mod_luaest désormais fourni dans un paquet séparé. -
Un nouveau connecteur
mod_jkpour le serveur Apache HTTP est un module qui utilise le protocole Apache JServ (AJP) pour connecter les serveurs web avec Apache Tomcat et d'autres backends. -
Un nouveau module
mod_proxy_clusterfournit un équilibreur de charge basé sur httpd qui utilise un canal de communication pour transmettre les demandes de l'équilibreur de charge à l'un des nœuds du serveur d'application. Les nœuds de serveurs d'application utilisent cette connexion pour transmettre à l'équilibreur de charge les facteurs d'équilibrage de la charge côté serveur et les événements du cycle de vie par le biais d'un ensemble personnalisé de méthodes HTTP appelé Mod-Cluster Management Protocol (MCMP). Ce canal de retour d'information supplémentaire permet àmod_proxy_clusterd'offrir un niveau d'intelligence et de granularité que l'on ne trouve pas dans d'autres solutions d'équilibrage de charge. Ce module nécessite que le clientModClustersoit installé sur le serveur dorsal pour communiquer avec succès.
-
Le module
Modifications de la syntaxe de configuration :
-
Dans la directive obsolète
Allowfournie par le modulemod_access_compat, un commentaire (le caractère#) déclenche désormais une erreur de syntaxe au lieu d'être ignoré silencieusement.
-
Dans la directive obsolète
Autres modifications :
- Les identifiants des threads du noyau sont désormais utilisés directement dans les messages du journal des erreurs, ce qui les rend à la fois précis et plus concis.
- Nombreuses améliorations mineures et corrections de bugs.
- Un certain nombre de nouvelles interfaces sont à la disposition des auteurs de modules.
L'API du module httpd n'a fait l'objet d'aucune modification rétrocompatible depuis RHEL 8.
Apache HTTP Server 2.4 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Pour plus d'informations, voir Configuration du serveur web Apache HTTP.
(JIRA:RHELPLAN-68364, BZ#1931976, JIRA:RHELPLAN-80725)
nginx 1.20 disponible dans RHEL 9
RHEL 9 inclut le serveur web et proxy nginx 1.20. Cette version apporte un certain nombre de corrections de bogues, de correctifs de sécurité, de nouvelles fonctionnalités et d'améliorations par rapport à la version 1.18.
Nouvelles fonctionnalités :
-
nginxprend désormais en charge la validation des certificats SSL des clients avec le protocole OCSP (Online Certificate Status Protocol). -
nginxprend désormais en charge l'effacement du cache en fonction de la quantité minimale d'espace libre. Ce support est implémenté dans le paramètremin_freede la directiveproxy_cache_path. -
Un nouveau module
ngx_stream_set_modulea été ajouté, qui permet de définir une valeur pour une variable. -
Un nouveau paquetage
nginx-mod-devela été ajouté, qui fournit tous les fichiers nécessaires, y compris les macros RPM et le code source denginx, pour construire des modules dynamiques externes pournginx.
Directives renforcées :
-
Plusieurs nouvelles directives sont désormais disponibles, telles que
ssl_conf_commandetssl_reject_handshake. -
La directive
proxy_cookie_flagsprend désormais en charge les variables.
Amélioration de la prise en charge de HTTP/2 :
-
Le module
ngx_http_v2comprend désormais les directiveslingering_close,lingering_time,lingering_timeout. -
La gestion des connexions dans HTTP/2 a été alignée sur HTTP/1.x. À partir de
nginx 1.20, utilisez les directiveskeepalive_timeoutetkeepalive_requestsau lieu des directiveshttp2_recv_timeout,http2_idle_timeoutethttp2_max_requestsqui ont été supprimées.
nginx 1.20 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de nginx seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Installation et configuration de NGINX.
Varnish Cache 6.6 dans RHEL 9
RHEL 9 comprend Varnish Cache 6.6, un proxy inverse HTTP très performant.
Les changements notables depuis la version 6.0 sont les suivants :
-
Amélioration des performances des outils de traitement des journaux, tels que
varnishlog - Amélioration de la précision des statistiques
- Un certain nombre d'optimisations dans les consultations du cache
- Diverses modifications de la configuration
- Nombreuses améliorations et corrections de bugs
Varnish Cache 6 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
RHEL 9 présente Squid 5
RHEL 9 est distribué avec Squid 5.2, un serveur proxy de mise en cache haute performance pour les clients web, prenant en charge les objets de données FTP, Gopher et HTTP. Cette version propose un certain nombre de corrections de bogues, de correctifs de sécurité, de nouvelles fonctionnalités et d'améliorations par rapport à la version 4.
Nouvelles fonctionnalités :
Squidaméliore la responsabilité en utilisant l'algorithme Happy Eyeballs (HE).-
Squidutilise désormais une adresse IP reçue dès que la demande de transfert l'exige, au lieu d'attendre que toutes les destinations de transfert potentielles soient entièrement résolues. -
De nouvelles directives sont désormais disponibles :
happy_eyeballs_connect_gaples directiveshappy_eyeballs_connect_limitethappy_eyeballs_connect_timeout. -
La directive
dns_v4_firsta été supprimée.
-
-
Squidutilise désormais l'en-têteCDN-Loopcomme source de détection des boucles dans les réseaux de diffusion de contenu (CDN). -
Squidintroduit la prise en charge du peering pour le bumping SSL. - Une nouvelle fonctionnalité pour les remorques du protocole d'adaptation du contenu Internet (ICAP) est disponible. Elle permet aux agents ICAP d'envoyer de manière fiable les métadonnées du message après le corps du message.
Modifications des options de configuration :
-
L'option de configuration
mark_client_packeta remplacéclientside_mark. -
L'option de configuration
shared_transient_entries_limita remplacécollapsed_forwarding_shared_entries_limit.
Squid 5 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Pour plus d'informations, voir Configuration du serveur proxy de mise en cache Squid.
MariaDB 10.5 dans RHEL 9
RHEL 9 fournit MariaDB 10.5. MariaDB 10.5 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de MariaDB seront fournies sous forme de modules ayant un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation de MariaDB.
RHEL 9 comprend MySQL 8.0
RHEL 9 est distribué avec MySQL 8.0. MySQL 8.0 est la version initiale de ce flux d'applications, que vous pouvez installer facilement en tant que paquetage RPM. MySQL 8.0 a un cycle de vie plus court que RHEL 9. Pour plus de détails, consultez le document Red Hat Enterprise Linux Application Streams Life Cycle (cycle de vie des flux d'applications ).
Pour plus d'informations sur l'utilisation, voir Utilisation de MySQL.
(JIRA:RHELPLAN-78673)
RHEL 9 fournit PostgreSQL 13
PostgreSQL 13 est disponible avec RHEL 9. PostgreSQL 13 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM. D'autres versions de PostgreSQL seront fournies sous forme de modules avec un cycle de vie plus court dans les prochaines versions mineures de RHEL 9.
Pour plus d'informations, voir Utilisation de PostgreSQL.
(JIRA:RHELPLAN-78675)
Redis 6.2 dans RHEL 9
RHEL 9 est distribué avec Redis 6.2, qui apporte un certain nombre de corrections de bogues et de sécurité, ainsi que des améliorations par rapport à la version 6.0 disponible dans RHEL 8.
Notamment, les fichiers de configuration du serveur Redis sont désormais situés dans un répertoire dédié : /etc/redis/redis.conf et /etc/redis/sentinel.conf. Dans la version RHEL 8, l'emplacement de ces fichiers était respectivement /etc/redis.conf et /etc/redis-sentinel.conf.
Redis 6 est la version initiale de ce flux d'applications, que vous pouvez installer facilement sous la forme d'un paquetage RPM.
Nouveau paquet : perl-Module-Signature
RHEL 9 introduit le module Perl perl-Module-Signature. Avec ce nouveau module, vous pouvez activer la vérification des signatures pour cpan afin d'atténuer la CVE-2020-16156. Pour plus d'informations, voir Comment atténuer CVE-2020-16154 dans perl-App-cpanminus et CVE-2020-16156 dans perl-CPAN.
(BZ#2039361)