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 Promises
API 提供了一组替代的计时器函数,可返回Promise
对象。 -
Node.js
现在提供了一个新的实验性Web Streams
API。 -
Node.js
现在包含Corepack
,这是一个实验性工具,可让您使用给定项目中配置的软件包管理器,而无需手动安装它们。 -
Node.js
现在提供了一个实验性的 ECMAScript modules (ESM) loader hooks API,它整合了 ESM loader hooks。
要安装 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
程序的结构。添加了rbs
gem 来解析用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
如果要从以前的 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): 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。这个版本提供了多个安全和 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
如果要从 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
现在默认启用。