4.11. 动态编程语言、网页和数据库服务器
新模块: python39
RHEL 8.4 引入了 Python 3.9,它由新模块 python39
和 ubi8/python-39
容器镜像提供。
与 Python 3.8 相比的主要改进包括:
-
合并(
|
)和更新(|=
)Operator 已添加到dict
类中。 - 在字符串中添加了删除前缀和后缀的方法。
-
类型提示一般已添加到特定的标准类型,如
list
和dict
。 - IANA Time Zone 数据库现在可以通过新的 zoneinfo 模块获得。
Python 3.9 及其构建的软件包可与同一个系统中的 Python 3.8 和 Python 3.6 并行安装。
要从 python39
模块安装软件包,请使用:
# yum install python39 # yum install python39-pip
python39:3.9
模块流将自动启用。
要运行解释器,例如:
$ python3.9 $ python3.9 -m pip --help
如需更多信息,请参阅 安装和使用 Python。
请注意,红帽将继续对 Python 3.6 提供支持,直至 RHEL 8 生命周期结束。与 Python 3.8 类似,Python 3.9 的生命周期会短于 Red Hat Enterprise Linux 8 应用程序流生命周期。
(BZ#1877430)
Python urllib
解析功能的默认分隔符更改
为缓解 Python urllib
库中的 Web Cache Poisoning CVE-2021-23336,urllib.parse.parse_qsl
和 urllib.parse.parse_qs
功能的默认分隔符将从 &
和分号(;
)改为只使用 &。
随着 RHEL 8.4 的发布,这个更改已被在 Python 3.6 中实现,并在以下 RHEL 8 次要发行本中向后移植到 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#1928904)
新模块流: swig:4.0
RHEL 8.4 引入了Simplified Wrapper 和 Interface Generator(SWIG)版本 4.0,它作为新模块流 swig:4.0
提供。
与之前发布的 SWIG 3.0
相比的显著变化包括:
-
唯一支持的
Python
版本是:2.7 和 3.2 到 3.8。 -
Python
模块已被改进:生成的代码已被简化,现在默认启用大多数优化。 -
添加了对
Ruby 2.7
的支持。 -
PHP 7
现在是唯一受支持的 PHP 版本;对PHP 5
的支持已被删除。 -
在大型接口文件上运行
SWIG
时性能显著提高。 - 添加了对命令行选项文件(也称为响应文件)的支持。
-
添加了对 JavaScript
Node.js
版本 2 到 10 版的支持。 -
添加了对
Octave
版本 4.4 到 5.1 版的支持。
要安装 swig:4.0
模块流,请使用:
# yum module install swig:4.0
如果要从 swig:3.0
流升级,请参阅切换到更新的流。
有关 swig
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 8 Application Streams 生命周期。
新模块流:subversion:1.14
RHEL 8.4 引入了一个新的模块流 subversion:1.14
。Subversion 1.14
是最新的长期支持 (LTS) 版本。
在 RHEL 8.0 中的 Subversion 1.10
的重大变化包括:
-
Subversion 1.14
包括用于自动化并将Subversion
集成到客户构建和发行基础架构的Python 3
绑定。 -
新的
svnadmin rev-size
命令允许用户确定修订版本的总大小。 -
新的
svnadmin build-repcache
命令使管理员能够在缺少的条目填充rep-cache
数据库。 - 添加了一个新的实验性的命令,以概述当前工作副本状态。
-
实施了对
svn log
、svn info
和svn list
命令的各种改进。例如,svn list --human-readable
现在将人类可读的单位用于文件大小。 -
对大型工作副本的
svn status
有了显著改进。
兼容性信息:
-
与
Subversion 1.14
服务器和客户端进行交流的Subversion 1.10
客户端和服务器。但是,除非客户端和服务器升级到最新版本,否则某些功能可能不可用。 -
Subversion 1.10
下创建的存储库可以在Subversion 1.14
中成功加载。 -
在 RHEL 8 中包括的
Subversion 1.14
允许用户在客户端以纯文本形式缓存密码。这个行为与Subversion 1.10
相同,但与Subversion 1.14
的上游版本不同。 -
实验性
Shelving
功能已发生显著变化,它与Subversion 1.10
中创建的 shelves 不兼容。有关详情和升级说明,请参阅上游文档。 -
Subversion 1.14
中更改了使用全局规则和特定于存储库的规则对基于路径的身份验证配置的解释。有关受影响的配置的详情,请参阅上游文档。
要安装 subversion:1:14
模块流,请使用:
# yum module install subversion:1.14
如果要从 subversion:1.10
流升级,请参阅切换到更新的流。
有关 subversion
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 8 Application Streams 生命周期。
新模块流: redis:6
Redis 6
,(高级键值存储)现在作为新模块流 redis:6
提供。
Redis 5
的显著变化包括:
-
Redis
现在支持所有频道上的 SSL。 -
Redis
现在支持访问控制列表 (ACL),它定义了命令调用和密钥模式访问的用户权限。 -
Redis
现在支持一个新的RESP3
协议,它返回更多的语义回复。 -
Redis
现在可以选择使用线程来处理 I/O。 -
Redis
现在为客户端的键值缓存提供服务器端支持。 -
改进了
Redis
活跃的过期周期,可以更快地驱除过期的密钥。
Redis 6
与 Red Hatis 5
兼容,但这个向后不兼容的更改除外:
-
当集合键不存在时,
SPOP <count>
命令不再返回 null。在Redis 6 中
,命令在这种情况下返回一个空集,类似于使用0
参数调用的情况下的情况。
要安装 redis:6
模块流,请使用:
# yum module install redis:6
如果要从 redis:5
流升级,请参阅切换到更新的流。
有关 redis
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 8 Application Streams 生命周期。
(BZ#1862063)
新模块流: postgresql:13
RHEL 8.4 引入了 PostgreSQL 13
,它比版本 12 提供了一些新功能和增强。主要变更包括:
- 通过删除 B-tree 索引条目的重复数据已改进性能
- 提高了使用聚合或分区表的查询的性能
- 改进了使用扩展统计时的查询规划
- 索引的并行配置
- 增量排序
请注意,自 PostgreSQL 11
以来上游提供的对 Just-In-Time(JIT)编译的支持,postgresql :13
模块流不再提供支持。
另请参阅 使用 PostgreSQL。
要安装 postgresql:13
流,请使用:
# yum module install postgresql:13
如果要从 RHEL 8 中的更早的 postgresql
流升级,请按照 切换到更新的流中介绍的步骤进行, 然后迁移 PostgreSQL 数据,如 Migrating to a RHEL 8 版本 所述。
有关 postgresql
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 8 Application Streams 生命周期。
(BZ#1855776)
新模块流:mariadb:10.5
MariaDB 10.5
现在作为新的模块流 mariadb:10.5
提供。与之前发布的 10.3 版本相比的显著改进包括:
-
MariaDB
现在默认使用unix_socket
身份验证插件。该插件允许用户在通过本地 Unix 套接字文件连接到MariaDB
时使用操作系统凭证。 -
MariaDB
支持新的FLUSH SSL
命令重新加载 SSL 证书,而不重新启动服务器。 -
MariaDB
添加了以mariadb-*
命名的二进制代码,mysql*
符号链接指向mariadb-*
的二进制代码。例如,mysqladmin
、mysqlaccess
和mysqlshow
分别指向mariadb-admin
、mariadb-access
和mariadb-show
二进制代码。 -
MariaDB
支持一个新的INET6
数据类型来存储 IPv6 地址。 -
MariaDB
现在使用 Perl Compatible Regular Expressions(PCRE)库版本 2。 -
SUPER
特权已被分成几个特权,以更好地与每个用户角色保持一致。因此,某些语句已更改了所需的权限。 -
MariaDB
添加一个新的全局变量binlog_row_metadata
,以及系统变量和状态变量,以控制记录的元数据量。 -
eq_range_index_dive_limit
变量的默认值已从0
更改为200
。 -
添加了一个新的
SHUTDOWN WAIT FOR ALL SLAVES
服务器命令和一个新的mysqladmin shutdown --wait-for-all-slaves
选项,以指示服务器仅在最后一个 binlog 事件发送到所有连接的副本后关闭。 -
在并行复制中,
slave_parallel_mode
变量现在默认为optimistic
。
InnoDB
存储引擎包括以下更改:
-
InnoDB
现在支持即时DROP COLUMN
操作,并允许用户更改列顺序。 -
以下变量的默认值已更改:
nodb_adaptive_hash_index
变为OFF
,nodb_checksum_algorithm
变为full_crc32
。 -
已删除或弃用了多个
InnoDB
变量。
MariaDB Galera 集群
已升级至版本 4,有以下显著变化:
-
Galera
添加了一个新的流复制功能,它支持复制无限大小的事务。在执行流复制的过程中,集群以小片段复制事务。 -
Galera
现在全面支持全球交易 ID (GTID)。 -
/etc/my.cnf.d/galera.cnf
文件中的wsrep_on
选项的默认值已从1
改为0
,以防止最终用户在没有配置所需的附加选项的情况下启动wsrep
复制。
另请参阅 使用 MariaDB。
要安装 mariadb:10.5
流,请使用:
# yum module install mariadb:10.5
如果要从 mariadb:10.3
模块流升级,请参阅 从 MariaDB 10.3 升级到 MariaDB 10.5。
有关 mariadb
模块流支持长度的详情,请查看 Red Hat Enterprise Linux 8 Application Streams 生命周期。
(BZ#1855781)
MariaDB 10.5
提供 PAM 插件版本 2.0
MariaDB 10.5
添加了可插拔验证模块 (PAM) 插件的新版本。PAM 插件版本 2.0 使用单独的 setuid root
帮助程序二进制文件来执行 PAM 身份验证,这使得 MariaDB
可以使用其他 PAM 模块。
在 MariaDB 10.5
中,可插拔验证模块 (PAM) 插件及其相关文件已移至新软件包 mariadb-pam
。此软件包同时包含 PAM 插件版本:版本 2.0 是默认值,版本 1.0 则作为 auth_pam_v1
共享对象库提供。
请注意,默认情况下 MariaDB
服务器不安装 mariadb-pam
软件包。要在 MariaDB 10.5
中提供 PAM 身份验证插件,请手动安装 mariadb-pam
软件包。
另请参阅已知问题 PAM 插件版本 1.0 在 MariaDB
中无法正常工作。
新软件包: mysql-selinux
RHEL 8.4 添加一个新的 mysql-selinux
软件包,它为 SELinux 模块提供 MariaDB
和 MySQL 数据库
的规则。软件包默认与数据库服务器一起安装。模块的优先级设置为 200
。
(BZ#1895021)
python-PyMySQL
rebase 到版本 0.10.1
python-PyMySQL
软件包提供 pure-Python MySQL 客户端库,它已更新至 0.10.1 版本。该软件包包含在 python36、python
38
和 python39
模块中。
主要变更包括:
-
在这个版本中,增加了对
ed25519
和caching_sha2_password
身份验证机制的支持。 -
python38
和python39
模块中设置的默认字符是utf8mb4
,它们与上游一致。python36
模块保留默认latin1
字符集,以保持与此模块的早期版本的兼容性。 -
在
python36
模块中,/usr/lib/python3.6/site-packages/pymysql/tests/
目录不再可用。
新软件包:python3-pyodbc
在这个版本中,将 python3-pyodbc
软件包添加到 RHEL 8。pyodbc
Python 模块提供对 Open Database Connectivity (ODBC) 数据库的访问。这个模块实现了 Python DB API 2.0 规格,并可与第三方 ODBC 驱动程序一起使用。例如,您现在可以使用 Performance Co-Pilot (pcp
) 来监控 SQL Server 的性能。
(BZ#1881490)
新软件包: micropipenv
现在提供了一个新的 micropipenv
软件包。它为 pip
软件包安装程序提供了一个轻量级打包程序,以支持 Pipenv
和 Poetry
锁定文件。
请注意,micropipenv
软件包在 AppStream 存储库中发布,并在 Compatibility 级别 4 下提供。如需更多信息,请参阅 Red Hat Enterprise Linux 8 应用程序兼容性指南。
(BZ#1849096)
新软件包: py3c-devel
和 py3c-docs
RHEL 8.4 引入了新的 py3c-devel
和 py3c-docs
软件包,这简化了将 C 扩展移植到 Python 3。这些软件包包括一组详细指南以及一组用于更轻松端口的宏。
请注意,py3c-devel
和 py3c-docs
软件包通过不支持的 CodeReady Linux Builder(CRB)存储库 发布。
(BZ#1841060)
增强了用于配置 httpd
的 ProxyRemote
指令
Apache HTTP 服务器中的 ProxyRemote
配置指令已被改进,可以选择性地采用用户名和密码凭据。这些凭据用于使用 HTTP 基本身份验证
向远程代理进行身份验证。此功能已从 httpd 2.5
向后移植。
(BZ#1869576)
非端点证书可与 SSLProxyMachineCertificateFile
和 SSLProxyMachineCertificatePath
httpd
指令一起使用
在这个版本中,您可以使用非端点(非叶子)证书,如证书颁发机构(CA)或中间证书,以及使用 Apache HTTP 服务器中的 SSLProxyMachineCertificateFile
和 SSLProxyMachineCertificatePath
配置指令。Apache HTTP 服务器现在将此类证书视为可信 CA,就像它们与 SSLProxyMachineCertificateChainFile
指令一起使用一样。在以前的版本中,如果非端点证书与 SSLProxyMachineCertificateFile
和 SSLProxyMachineCertificatePath
指令一同使用,则 httpd
无法以配置错误开头。
(BZ#1883648)
mod_security
模块中的新 SecRemoteTimeout
指令
在以前的版本中,您无法修改在 Apache HTTP 服务器的 mod_security
模块中检索远程规则的默认超时时间。在这个版本中,您可以使用新的 SecRemoteTimeout
配置指令,以秒为单位设置自定义超时。
达到超时后,httpd
现在会失败,并带有 Timeout was reached
错误消息。请注意,在这种情况下,错误消息也包含 Syntax 错误
,即使配置文件在语法上有效。httpd
依赖于超时的行为取决于 SecRemoteRulesFailAction
配置指令的值(默认值为 Abort
)。
mod_fcgid
模块现在可以将最多 1024 个环境变量传递给 FCGI 服务器进程
在这个版本中,Apache HTTP 服务器的 mod_fcgid
模块可将最多 1024 个环境变量传递给 FastCGI (FCGI) 服务器进程。以前的 64 个环境变量的限制可能会导致 FCGI 服务器上运行的应用程序出现故障。
perl-IO-String
现在包括在 AppStream 软件仓库中
perl-IO-String
软件包提供 Perl IO::String
模块,现在通过受支持的 AppStream 软件仓库发布。在以前的版本中,在 RHEL 8 的发行版本中,perl-IO-String
软件包包括在不支持的 CodeReady Linux Builder 存储库中。
(BZ#1890998)
新软件包: quota-devel
RHEL 8.4 引入了 quota-devel
软件包,它为实现 配额
远程过程(RPC)服务提供了头文件。
请注意 , quota-devel
软件包通过不受支持的 CodeReady Linux Builder(CRB)存储库 发布。