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 相比,提供了大量新功能以及 bug 和安全修复。
主要变更包括:
-
V8引擎已升级到版本 9.4。 -
npm软件包管理器已升级到版本 8.1.2。 -
新的
Timers PromisesAPI 提供了一组替代的计时器函数,可返回Promise对象。 -
Node.js现在提供了一个新的实验性Web StreamsAPI。 -
Node.js现在包含Corepack,这是一个实验性工具,可让您使用给定项目中配置的软件包管理器,而无需手动安装它们。 -
Node.js现在提供了一个实验性的 ECMAScript modules (ESM) loader hooks API,它整合了 ESM loader hooks。
要安装 nodejs:16 模块流,请使用:
yum module install 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 相比,这个版本提供了很多性能改进、bug 和安全修复以及新功能。
主要改进包括:
并发和并行功能:
-
Ractor,一个提供了线程安全并行执行的 Actor-model 抽象,作为实验性功能提供。 -
Fiber Scheduler已作为实验性功能引入。Fiber Scheduler截获阻止操作,这样无需更改现有代码,便可实现轻量级并发。
-
静态分析功能:
-
引入了
RBS语言,它描述了Ruby程序的结构。添加了rbsgem 来解析用RBS编写的类型定义。 -
引进了
TypeProf工具,它是一种Ruby代码的类型分析工具。
-
引入了
-
与
case/in表达式匹配的模式不再是实验性的。 - 单行模式匹配,一种实验功能,已重新设计。
- find 模式已添加为实验性功能。
改进的性能:
-
现在,将长代码粘贴到
交互式 Ruby Shell(IRB)的速度非常快。 -
measure命令已添加到IRB中,以进行时间测量。
其他显著变化包括:
- 关键字参数已与其他参数分隔。
-
用户安装的 gems 的默认目录现在是
$HOME/.local/share/gem/,除非$HOME/.gem/目录已经存在。
要安装 ruby:3.0 模块流,请使用:
yum module install ruby:3.0
# yum module install ruby:3.0
如果要从以前的 ruby 模块流升级,请参阅 切换到后期的流。
Python urllib 解析功能的默认分隔符更改
为缓解 Python urllib 库中的 Web Cache Poisoning CVE-2021-23336,urllib.parse.parse_qsl 和 urllib.parse.parse_qs 功能的默认分隔符将从 & 和分号(;)改为只使用 &。
这个变化已在 RHEL 8.4 的 Python 3.6 中实现,现在被移植到 Python 3.8 和 Python 2.7 中。
默认分隔符的更改可能会向后不兼容,因此红帽提供了一种方法来配置 Python 软件包中修改了默认分隔符的行为。此外,如果受影响的 urllib 解析功能检测到客户的应用受到更改的影响,则发出警告。
如需更多信息,请参阅 Python urllib 库中的 Web Cache Poisoning 的迁移(CVE-2021-23336) 知识库文章。
Python 3.9 不受影响,并且已经包含新的默认分隔符(&),其只能在调用 由Python 代码编写的 urllib.parse.parse_qsl 和 urllib.parse.parse_qs 函数时传递 separator 参数来进行修改。
(BZ#1935686, BZ#1931555, BZ#1969517)
Python ipaddress 模块不再允许 IPv4 地址中的零
为缓解 CVE-2021-29921,Python ipaddress 模块现在拒绝显示AddressValueError 的前导为零的 IPv4 地址:Leading zeros are not permitted 错误。
python38 和python39 模块中已引入了这个变化。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): 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'
要使用显式循环去除前导零以提高可读性,请使用:
(BZ#1986007, BZ#1970504, BZ#1970505)
php:7.4 模块流被 rebase 到版本 7.4.19
php:7.4 模块流提供的 PHP 脚本语言已从 7.4.6 升级到版本 7.4.19。这个版本提供了多个安全和 bug 修复。
(BZ#1944110)
新软件包:pg_repack
新的 pg_repack 软件包已添加到 postgresql:12 和 postgresql:13 模块流中。pg_repack 软件包提供了一个 PostgreSQL 扩展,可让您从表和索引中删除 bloat,也可以选择恢复集群索引的物理顺序。
(BZ#1967193,BZ#1935889)
新模块流:nginx:1.20
nginx 1.20 web 和代理服务器现在作为 nginx:1.20 模块流提供。与之前发布的版本 1.18 相比,这个版本提供了很多 bug 修复、安全修复、新功能以及改进。
新特性:
-
nginx现在支持使用在线证书状态协议(OCSP)的客户端 SSL 证书验证。 -
nginx现在支持根据最小可用空间的缓存清除。此支持作为proxy_cache_path指令的min_free参数实现。 -
添加了一个新的
ngx_stream_set_module模块,它可让您为变量设置值。
增强的指令:
-
现在提供了多个新指令,如
ssl_conf_command和ssl_reject_handshake。 -
proxy_cookie_flags指令现在支持变量。
改进了对 HTTP/2 的支持:
-
ngx_http_v2模块现在包含lingering_close、lingering_time、lingering_timeout指令。 -
处理 HTTP/2 中的连接与处理 HTTP/1.x 中的连接一致。从
nginx 1.20开始,使用keepalive_timeout和keepalive_requests指令,而不是删除的http2_recv_timeout、http2_idle_timeout和http2_max_requests指令。
要安装 nginx:1.20 流,请使用:
yum module install nginx:1.20
# yum module install nginx:1.20
如果要从 nginx:1.20 流升级,请参阅 切换到后期的流。
(BZ#1945671)
squid:4 模块流 rebase 到版本 4.15
squid:4 模块流中的Squid 代理服务器已从版本 4.11 升级到版本 4.15。这个更新提供了各种 bug 和安全修复。
(BZ#1964384)
LVM system.devices 文件功能现在包括在 RHEL 8 中
RHEL 8.5 引入了 LVM system.devices 文件功能。通过在 /etc/lvm/devices/system.devices 文件中创建一个设备列表,您可以选择 LVM 的特定设备来识别和使用,并防止 LVM 使用不需要的设备。
要启用 system.devices 文件功能,请在 lvm.conf 配置文件中设置 use_devicesfile=1,并将设备添加到 system.devices 文件中。LVM 在启用了 system.devices 文件功能时会忽略任何设备过滤设置。要防止警告信息,请从 lvm.conf 文件中删除您的过滤器设置。
如需更多信息,请参阅 lvmdevices (8) 手册页。
(BZ#1922312)
quota 现在支持 HPE XFS
quota 工具现在提供对 HPE XFS 文件系统的支持。因此,HPE XFS 的用户可以通过 quota 工具监控和管理磁盘使用情况。
(BZ#1945408)
mutt rebase 到版本 2.0.7
Mutt 电子邮件客户端已更新至版本 2.0.7,其提供了一些增强和 bug 修复。
主要变更包括:
-
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变量不再控制终止未加密 IMAPPREAUTH连接。如果您依赖STARTTLS进程,则改为使用$ssl_force_tls变量。
请注意,即使更新到新的 Mutt 版本后,ssl_force_tls 配置变量仍默认为 no,以防止 RHEL 用户在其现有环境中遇到问题。在 Mutt 的上游版本中,ssl_force_tls 现在默认启用。