Menu Close

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

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

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

从 RHEL 8.3 开始,Node .js 16 包括在 RHEL 8.5 中,与 Node.js 14 提供了大量新功能、程序错误和安全修复。

主要变更包括:

  • V8 引擎已升级到 9.4 版本。
  • npm 软件包管理器已升级到 8.1.2 版本。
  • 新的 Timers Promises API 提供了一组替代的计时器函数,可返回 Promise 对象。
  • Node.js 现在提供了一个新的实验性 Web Streams API。
  • Node.js 现在包含 Corepack,这是一个实验性工具,可让您使用给定项目中配置的软件包管理器,而无需手动安装它们。
  • Node.js 现在提供了一个实验性的 ECMAScript 模块(ESM)加载程序 API,它整合了 ESM 加载器 hook。

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

# yum module install nodejs:16

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

(BZ#1953991, BZ#2027610)

新模块流: ruby:3.0

RHEL 8.5 在新的 ruby:3.0 模块流中引入了 Ruby 3.0.2。与 RHEL 8.3 提供的 Ruby 2.7 相比,这个版本提供了很多性能改进、程序错误和安全修复以及新功能。

主要改进包括:

  • 并发和并行功能:

    • Ractor 是提供线程安全并行执行的 Actor-model 抽象,作为实验性功能提供。
    • 光纤调度程序 已作为实验性功能推出。光纤调度程序截获 阻止操作,这样便无需更改现有代码,即可实现轻量并发。
  • 静态分析功能:

    • 引入了 RBS 语言,它描述了 Ruby 程序的结构。添加了 The rbs gem 来解析 RBS 编写的类型定义。
    • 引进了 TypeProf 实用程序,它是 Ruby 代码的类型分析工具。
  • case/in 表达式的 模式匹配不再是实验性的。
  • 重新设计了单行模式匹配(一种实验功能)。
  • find 模式已添加为实验性功能。

改进的性能:

  • 现在,将长代码粘贴到 交互式 Ruby Shell(IRB) 的速度要快得多。
  • 测量结果 命令已添加到 IRB 中以测量时间。

其他显著变化包括:

  • 关键字参数已与其他参数分隔。
  • 用户安装的 gems 的默认目录现在是 $HOME/.local/share/gem/,除非 $HOME/.gem/ 目录已经存在。

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

# yum module install ruby:3.0

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

(BZ#1938942)

Python urllib 解析功能的默认分隔符更改

为缓解 Python urllib 库中的 Web Cache Poisoning CVE-2021-23336urllib.parse.parse_qslurllib.parse.parse_qs 功能的默认分隔符将从 & 和分号(;)改为只使用 &。

这个变化是在 Python 3.6 中在 RHEL 8.4 中实施的,现在被向后移植到 Python 3.8 和 Python 2.7。

默认分隔符的更改可能会向后不兼容,因此红帽提供了一种方法来配置 Python 软件包中修改了默认分隔符的行为。此外,如果受影响的 urllib 解析功能检测到客户的应用受到更改的影响,则发出警告。

如需更多信息,请参阅 Python urllib 库(CVE-2021-23336)知识库中的 Web Cache Poisoning 的 Mitigation

Python 3.9 不受影响,并且已经包含新的默认分隔符(&),其只能在调用 由Python 代码编写的 urllib.parse.parse_qslurllib.parse.parse_qs 函数时传递 separator 参数来进行修改。

(BZ#1935686, BZ#1931555, BZ#1969517)

Python ipaddress 模块不再允许 IPv4 地址中的零

为缓解 CVE-2021-29921,Python ipaddress 模块现在拒绝带有 AddressValueError 的前导零的 IPv4 地址:不允许前导零 错误。

python38 和 python 39 模块中引入了这个变化。RHEL 中发布的早期 Python 版本不受 CVE-2021-29921 的影响。

依赖之前行为的客户可以预先处理其 IPv4 地址输入,从而去除前导零。例如:

>>> def reformat_ip(address): return '.'.join(part.lstrip('0') if part != '0' else part for part in address.split('.'))
>>> reformat_ip('0127.0.0.1')
'127.0.0.1'

要使用显式循环剥离前导零以提高可读性,请使用:

def reformat_ip(address):
    parts = []
    for part in address.split('.'):
        if part != "0":
            part = part.lstrip('0')
        parts.append(part)
    return '.'.join(parts)

(BZ#1986007, BZ#1970504, BZ#1970505)

php:7.4 模块流被 rebase 到版本 7.4.19

php:7.4 模块流提供的 PHP 脚本语言已从 7.4.6 升级到版本 7.4.19。这个版本提供了多个安全和程序错误修复。

(BZ#1944110)

新软件包: pg_repack

new pg_repack 软件包已添加到 postgresql:12postgresql:13 模块流中。The pg_repack 软件包提供了一个 PostgreSQL 扩展,可让您从表和索引中删除 bloat,也可以恢复集群索引的物理顺序。

(BZ#1967193,BZ#1935889)

新模块流: nginx:1.20

nginx 1.20 web 和代理服务器现在作为 nginx:1.20 模块流提供。与之前发布的 1.18 版本相比,这个版本提供了很多程序错误修复、安全修复、新功能以及改进。

新特性:

  • nginx 现在支持使用在线证书状态协议(OCSP)的客户端 SSL 证书验证。
  • nginx 现在支持根据最小可用空间清除缓存。此支持作为 proxy_cache _path 指令的 min_ free 参数实施。
  • 添加了一个新的 ngx_stream_set_module 模块,它可让您为变量设置值。

增强的指令:

  • 现在提供了多个新指令,如 ssl_conf_commandssl_reject_handshake
  • proxy_cookie_flags 指令现在支持变量。

改进了对 HTTP/2 的支持:

  • ngx_http_v2 模块现在包含 lingering _close、ling ering_time、lingering_timeout 指令。
  • HTTP/2 中的连接处理与 HTTP/1.x 一致。从 nginx 1.20,使用 keepalive_timeoutkeepalive_requests 指令,而不是删除的 http2_recv_timeouthttp2_idle_timeouthttp2_max_requests 指令。

要安装 nginx:1.20 流,请使用:

# yum module install nginx:1.20

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

(BZ#1945671)

squid:4 模块流 rebase 到版本 4.15

Squid 代理服务器(位于 squid:4 模块流中)已从 4.11 升级到 4.15 版本。这个版本提供了各种程序错误和安全修复。

(BZ#1964384)

配额 现在支持 HPE XFS

配额 实用程序现在提供对 HPE XFS 文件系统的支持。因此,HPE XFS 用户可以通过 配额 实用程序监控和管理磁盘使用情况。

(BZ#1945408)

mutt rebase 到版本 2.0.7

Mutt 电子邮件客户端已更新至 2.0.7 版本,提供一些增强和程序错误修复。

主要变更包括:

  • mutt 现在使用 XOAUTH2 机制提供对 OAuth 2.0 授权协议的支持。mutt 现在还支持用于 IMAP、POP 和 SMTP 协议的 OAUTHBEARER 验证机制。基于 OAuth 的功能通过外部脚本提供。因此,您可以使用身份验证令牌将 Mutt 与各种云电子邮件提供商连接,如 Gmail。有关如何使用 OAuth 支持设置 Mutt 的更多信息,请参阅 如何使用 OAuth2 身份验证使用 Gmail 设置 Mutt
  • mutt 添加了对域字面电子邮件地址的支持,例如 user@[IPv6:fcXX:…​].
  • 新的 $ssl_use_tlsv1_3 配置变量允许 TLS 1.3 连接(如果电子邮件服务器支持)。此变量默认为启用。
  • 新的 $imap_deflate 变量添加了对 COMPRESS=DEFLATE 压缩的支持。变量默认为禁用。
  • $ssl_starttls 变量不再控制未加密 IMAP PREAUTH 连接。如果您依赖 STARTTLS 进程,则改为使用 $ssl_force_tls 变量。

请注意,即使更新到新的 Mutt 版本,ssl_force_tls 配置变量仍默认为 no,以防止 RHEL 用户在现有环境中遇到问题。在 Mutt 的上游版本中,ssl_force_tls 现在被默认启用。

(BZ#1912614, BZ#1890084)