4.10. 动态编程语言、网页和数据库服务器

nodejs:18 模块流现在完全支持

以前作为技术预览提供的 nodejs:18 模块流,现在在 RHSA-2022:8833 公告版中完全支持。nodejs:18 模块流现在提供 Node.js 18.12,它是一个长期支持(LTS)版本。

RHEL 8.7 中包含的 Node.js 18 提供了许多新功能,以及自 RHEL 8.5 以来对 Node.js 16 的 bug 和安全修复。

主要变更包括:

  • V8 引擎已升级到版本 10.2。
  • npm 软件包管理器已升级到版本 8.18.0。
  • Node.js 现在提供了一个新的实验性 fetch API。
  • Node.js 现在提供了一个新的实验性 node:test 模块,它便于创建以 test Anything Protocol (TAP)格式报告结果的测试。
  • Node.js 现在首选 IPv6 地址,而不是 IPv4 地址。

要安装 nodejs:18 模块流,请使用:

# yum module install nodejs:18

如果要从 nodejs:16 流升级,请参阅 切换到更新的流

(BZ#2083073)

nodejs:18 rebase 到版本 18.14,npm rebase 到版本 9

Node.js 18.14RHSA-2023:1583 中发布,包括 npm 从版本 8 升级到版本 9 的 SemVer 主要升级。由于维护原因,这个更新是必需的,可能需要调整 npm 配置。

值得注意的是,不限定到特定注册中心的与身份验证相关的设置不再支持。所做的这一变化是出于安全原因。如果您使用了无范围的身份验证配置,则提供的令牌将被发送到 .npmrc 文件中列出的每个注册中心。

如果您使用无范围的身份验证令牌,请在 .npmrc 文件中生成并提供注册中心范围的令牌。

如果您有使用 _auth 的配置行,如 .npmrc 文件中的 //registry.npmjs.org/:_auth,请将它们替换为 //registry.npmjs.org/:_authToken=${NPM_TOKEN},并提供您生成的有范围的令牌。

有关更改的完整列表,请参阅 上游更改日志

(BZ#2178087)

新模块流:ruby:3.1

RHEL 8.7 在新的 ruby:3.1 模块流中引入了 Ruby 3.1.2。这个版本提供了很多性能改进、bug和安全修复,以及与 RHEL 8.5 一起发布的 Ruby 3.0 的新功能。

主要改进包括:

  • Interactive Ruby (IRB)工具现在提供自动完成功能以及文档对话框
  • 新的 debug gem,它替换了 lib/debug.rb,提供了改进的性能,并支持远程调试和多进程/多线程调试
  • error_highlight gem 现在在 backtrace 中提供精细的错误位置
  • 现在可以省略哈希文本数据类型和关键字参数中的值
  • pin 运算符(^)现在接受模式匹配中的表达式
  • 现在,可以在单行模式匹配省略括号
  • YJIT 一种新的实验性进程内实时(JIT)编译器,现在在 AMD 和 Intel 64 位构架上提供
  • 已引进了 TypeProf For IDE 工具,这是 IDE 中 Ruby 代码的实验性静态类型分析工具。

以下性能改进已在基于方法的实时编译器(MJIT)中实现了:

  • 对于像 Rails 这样的工作负载,默认的最大 JIT 缓存值从 100 增加到 10000
  • 当启用了 class 事件的 TracePoint 时,使用 JIT 编译的代码将不再被取消

其他显著变化包括:

  • tracer.rb 文件已被删除
  • 自版本 4.0 起,Psych YAML 解析器默认使用 secure_load 方法

要安装 ruby:3.1 模块流,请使用:

# yum module install ruby:3.1

如果要从以前的 ruby 模块流升级,请参阅 切换到更新的流

(BZ#2063772)

新模块流:mercurial:6.2

RHEL 8.7 将 Mercurial 6.2 添加为新的模块流。从 RHEL 8.0 开始,此版本提供了很多 bug 修复、增强,以及 Mercurial 4.8 方面的性能改进。

主要变更包括:

  • Mercurial 6.2 支持 Python 3.6 或更高版本
  • Mercurial 不再支持 Python 2
  • hg purgehg clean 命令现在提供了一个新的 -i 选项,该选项允许您删除忽略的文件,而不是未跟踪的文件
  • hg diffhg extdiff 命令现在支持 --from <revision>--to <revision> 参数
  • 现在提供了一个新的内部合并工具 internal:mergediff
  • Z 标准(ZSTD)压缩现在默认用于新的存储库(如果有的话)
  • 现在,提供了一个指定所需扩展的新方法,其在找不到所需的扩展时防止 Mercurial 启动

另外,提供了一个新的 mercurial-chg 工具,它为 hg 命令提供了一个 C 包装器。当您使用 chg 命令时,会创建一个 Mercurial 命令服务器后台进程,C 程序连接到该后台进程并执行 Mercurial 命令。因此,性能会显著提高。

要安装 mercurial:6.2 模块流,请使用:

# yum module install mercurial:6.2

如果要从 mercurial:4.8 流升级,请参阅 切换到更新的流

(BZ#2089849)

mariadb-java-client rebase 到版本 2.7.1

为用 Java 开发的应用程序提供 MariaDB 连接器的 mariadb-java-client 软件包更新至版本 2.7.1。

这个更新在服务中引入了以下变化:

  • 客户端身份验证插件现在被定义为服务。因此,您可以轻松地添加新的客户端身份验证插件。驱动程序包括 caching_sha2_passwordsha256_password 插件,用于与 MySQL 兼容。
  • 现在,凭证插件允许提供凭证信息。驱动程序包含三个默认插件:AWS IAMEnvironmentProperty
  • SSL 工厂服务现在使您能够使用自定义的 SSL 实现。例如,您可以创建一个新的 HostnameVerifier 实现。

其他显著变化包括:

  • enabledSslProtocolSuites 选项现在默认包含 TLSv1.2。

(BZ#2043212)

Redis rebase 到版本 6.2.7

Redis 6 是提供 redis:6 模块流的高级键值存储,现已更新到版本 6.2.7。这个更新提供了 RHEL 8.4 以来的 bug 修复、安全修复以及对 6.0 版本的改进。

(BZ#1999873)

httpd 配置中 LimitRequestBody 指令的新默认值

要修复 CVE-2022-29404,Apache HTTP 服务器中的 LimitRequestBody 指令的默认值已从 0 (无限)变为 1 GiB。

httpd 配置文件中没有明确指定 LimitRequestBody 的值系统上,更新 httpd 软件包会将 LimitRequestBody 设为默认值 1 GiB。因此,如果 HTTP 请求正文的总大小超过这个 1 GiB 默认限制,则 httpd 会返回 413 Request Entity Too Large 错误码。

如果 HTTP 请求消息正文的新默认允许的大小不满足您的用例,请在相应的上下文中(服务器、每目录、每文件或每位置)更新您的 httpd 配置文件,并以字节为单位设置您的首选限制。例如,要设置一个新的 2 GiB 限制,请使用:

LimitRequestBody 2147483648

已被配置为使用 LimitRequestBody 指令的任何显式值的系统不受此更改的影响。

(BZ#2128016)