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现在提供了一个新的实验性fetchAPI。 -
Node.js现在提供了一个新的实验性node:test模块,它便于创建以 test Anything Protocol (TAP)格式报告结果的测试。 -
Node.js现在首选 IPv6 地址,而不是 IPv4 地址。
要安装 nodejs:18 模块流,请使用:
yum module install nodejs:18
# yum module install nodejs:18
如果要从 nodejs:16 流升级,请参阅 切换到更新的流。
(BZ#2083073)
nodejs:18 rebase 到版本 18.14,npm rebase 到版本 9
Node.js 18.14 在 RHSA-2023:1583 中发布,包括 npm 从版本 8 升级到版本 9 的 SemVer 主要升级。由于维护原因,这个更新是必需的,可能需要调整 npm 配置。
值得注意的是,不限定到特定注册中心的与身份验证相关的设置不再支持。所做的这一变化是出于安全原因。如果您使用了无范围的身份验证配置,则提供的令牌将被发送到 .npmrc 文件中列出的每个注册中心。
如果您使用无范围的身份验证令牌,请在 .npmrc 文件中生成并提供注册中心范围的令牌。
如果您有使用 _auth 的配置行,如 .npmrc 文件中的 //registry.npmjs.org/:_auth,请将它们替换为 //registry.npmjs.org/:_authToken=${NPM_TOKEN},并提供您生成的有范围的令牌。
有关更改的完整列表,请参阅 上游更改日志。
新模块流:ruby:3.1
RHEL 8.7 在新的 ruby:3.1 模块流中引入了 Ruby 3.1.2。这个版本提供了很多性能改进、bug和安全修复,以及与 RHEL 8.5 一起发布的 Ruby 3.0 的新功能。
主要改进包括:
-
Interactive Ruby(IRB)工具现在提供自动完成功能以及文档对话框 -
新的
debuggem,它替换了lib/debug.rb,提供了改进的性能,并支持远程调试和多进程/多线程调试 -
error_highlightgem 现在在 backtrace 中提供精细的错误位置 - 现在可以省略哈希文本数据类型和关键字参数中的值
-
pin 运算符(
^)现在接受模式匹配中的表达式 - 现在,可以在单行模式匹配省略括号
- YJIT 一种新的实验性进程内实时(JIT)编译器,现在在 AMD 和 Intel 64 位构架上提供
-
已引进了
TypeProf For IDE工具,这是 IDE 中Ruby代码的实验性静态类型分析工具。
以下性能改进已在基于方法的实时编译器(MJIT)中实现了:
-
对于像
Rails这样的工作负载,默认的最大 JIT 缓存值从 100 增加到 10000 -
当启用了 class 事件的
TracePoint时,使用 JIT 编译的代码将不再被取消
其他显著变化包括:
-
tracer.rb文件已被删除 -
自版本 4.0 起,
PsychYAML 解析器默认使用secure_load方法
要安装 ruby:3.1 模块流,请使用:
yum module install 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 purge和hg clean命令现在提供了一个新的-i选项,该选项允许您删除忽略的文件,而不是未跟踪的文件 -
hg diff和hg 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
# 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_password和sha256_password插件,用于与MySQL兼容。 -
现在,凭证插件允许提供凭证信息。驱动程序包含三个默认插件:
AWS IAM、Environment和Property。 -
SSL 工厂服务现在使您能够使用自定义的 SSL 实现。例如,您可以创建一个新的
HostnameVerifier实现。
其他显著变化包括:
-
enabledSslProtocolSuites选项现在默认包含 TLSv1.2。
Redis rebase 到版本 6.2.7
Redis 6 是提供 redis:6 模块流的高级键值存储,现已更新到版本 6.2.7。这个更新提供了 RHEL 8.4 以来的 bug 修复、安全修复以及对 6.0 版本的改进。
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 2147483648
已被配置为使用 LimitRequestBody 指令的任何显式值的系统不受此更改的影响。
(BZ#2128016)