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

新模块: python39

RHEL 8.4 引入了 Python 3.9,它由新模块 python39ubi8/python-39 容器镜像提供。

与 Python 3.8 相比的主要改进包括:

  • 合并(|)和更新(|=)Operator 已添加到 dict 类中。
  • 在字符串中添加了删除前缀和后缀的方法。
  • 类型提示一般已添加到特定的标准类型,如 listdict
  • 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-23336urllib.parse.parse_qslurllib.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_qslurllib.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 生命周期

BZ#1853639

新模块流:subversion:1.14

RHEL 8.4 引入了一个新的模块流 subversion:1.14Subversion 1.14 是最新的长期支持 (LTS) 版本。

在 RHEL 8.0 中的 Subversion 1.10 的重大变化包括:

  • Subversion 1.14 包括用于自动化并将 Subversion 集成到客户构建和发行基础架构的 Python 3 绑定。
  • 新的 svnadmin rev-size 命令允许用户确定修订版本的总大小。
  • 新的 svnadmin build-repcache 命令使管理员能够在缺少的条目填充 rep-cache 数据库。
  • 添加了一个新的实验性的命令,以概述当前工作副本状态。
  • 实施了对 svn logsvn infosvn 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 生命周期

BZ#1844947

新模块流: redis:6

Redis 6,(高级键值存储)现在作为新模块流 redis:6 提供。

Redis 5 的显著变化包括:

  • Redis 现在支持所有频道上的 SSL。
  • Redis 现在支持访问控制列表 (ACL),它定义了命令调用和密钥模式访问的用户权限。
  • Redis 现在支持一个新的 RESP3 协议,它返回更多的语义回复。
  • Redis 现在可以选择使用线程来处理 I/O。
  • Redis 现在为客户端的键值缓存提供服务器端支持。
  • 改进了 Redis 活跃的过期周期,可以更快地驱除过期的密钥。

Redis 6Red 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 到 PostgreSQL 的 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-* 的二进制代码。例如,mysqladminmysqlaccessmysqlshow 分别指向 mariadb-adminmariadb-accessmariadb-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 变为 OFFnodb_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中无法正常工作

BZ#1936842

新软件包: mysql-selinux

RHEL 8.4 添加一个新的 mysql-selinux 软件包,它为 SELinux 模块提供 MariaDBMySQL 数据库 的规则。软件包默认与数据库服务器一起安装。模块的优先级设置为 200

(BZ#1895021)

python-PyMySQL rebase 到版本 0.10.1

python-PyMySQL 软件包提供 pure-Python MySQL 客户端库,它已更新至 0.10.1 版本。该软件包包含在 python36、python 38python39 模块中。

主要变更包括:

  • 在这个版本中,增加了对 ed25519caching_sha2_password 身份验证机制的支持。
  • python38python39 模块中设置的默认字符是 utf8mb4,它们与上游一致。python36 模块保留默认 latin1 字符集,以保持与此模块的早期版本的兼容性。
  • python36 模块中,/usr/lib/python3.6/site-packages/pymysql/tests/ 目录不再可用。

BZ#1820628BZ#1885641

新软件包: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 软件包安装程序提供了一个轻量级打包程序,以支持 PipenvPoetry 锁定文件。

请注意,micropipenv 软件包在 AppStream 存储库中发布,并在 Compatibility 级别 4 下提供。如需更多信息,请参阅 Red Hat Enterprise Linux 8 应用程序兼容性指南

(BZ#1849096)

新软件包: py3c-develpy3c-docs

RHEL 8.4 引入了新的 py3c-develpy3c-docs 软件包,这简化了将 C 扩展移植到 Python 3。这些软件包包括一组详细指南以及一组用于更轻松端口的宏。

请注意,py3c-develpy3c-docs 软件包通过不支持的 CodeReady Linux Builder(CRB)存储库 发布。

(BZ#1841060)

增强了用于配置 httpdProxyRemote 指令

Apache HTTP 服务器中的 ProxyRemote 配置指令已被改进,可以选择性地采用用户名和密码凭据。这些凭据用于使用 HTTP 基本身份验证 向远程代理进行身份验证。此功能已从 httpd 2.5 向后移植。

(BZ#1869576)

非端点证书可与 SSLProxyMachineCertificateFile 和 SSLProxyMachine CertificatePath httpd 指令一起使用

在这个版本中,您可以使用非端点(非叶子)证书,如证书颁发机构(CA)或中间证书,以及使用 Apache HTTP 服务器中的 SSLProxyMachineCertificateFileSSLProxyMachineCertificatePath 配置指令。Apache HTTP 服务器现在将此类证书视为可信 CA,就像它们与 SSLProxyMachineCertificateChainFile 指令一起使用一样。在以前的版本中,如果非端点证书与 SSLProxyMachineCertificateFileSSLProxyMachineCertificatePath 指令一同使用,则 httpd 无法以配置错误开头。

(BZ#1883648)

mod_security 模块中的新 SecRemoteTimeout 指令

在以前的版本中,您无法修改在 Apache HTTP 服务器的 mod_security 模块中检索远程规则的默认超时时间。在这个版本中,您可以使用新的 SecRemoteTimeout 配置指令,以秒为单位设置自定义超时。

达到超时后,httpd 现在会失败,并带有 Timeout was reached 错误消息。请注意,在这种情况下,错误消息也包含 Syntax 错误,即使配置文件在语法上有效。httpd 依赖于超时的行为取决于 SecRemoteRulesFailAction 配置指令的值(默认值为 Abort)。

(BZ#1824859)

mod_fcgid 模块现在可以将最多 1024 个环境变量传递给 FCGI 服务器进程

在这个版本中,Apache HTTP 服务器的 mod_fcgid 模块可将最多 1024 个环境变量传递给 FastCGI (FCGI) 服务器进程。以前的 64 个环境变量的限制可能会导致 FCGI 服务器上运行的应用程序出现故障。

BZ#1876525

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)存储库 发布。

BZ#1868671