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


RHEL 9 中 Python 3.11 可用

RHEL 9.2 引入了 Python 3.11,由新软件包 python3.11 提供,以及为其构建的一套软件包,以及 ubi9/python-311 容器镜像。

与之前发布的 Python 3.9 相比,显著改进包括:

  • 显著提高了性能。
  • 使用新的 match 关键字(类似于其它语言中的 switch )的结构化模式匹配。
  • 改进了错误消息,例如,表示未闭合的括号或方括号。
  • 用于调试和其他用例的确切行号。
  • 通过将定义放在括号中来支持跨多行定义上下文管理器。
  • 与类型提示和 typing 模块相关的各种新功能,如新的 X | Y 类型联合操作符、可变泛型和新的 Self 类型。
  • 追踪中指向导致错误的表达式的精确错误位置。
  • 新的 tomllib 标准库模块,它支持解析 TOML。
  • 可以使用例外组和新 except* 语法,同时提高和处理多个不相关的异常。

Python 3.11 及为其构建的软件包可与 Python 3.9 并行安装在同一系统上。

要从 python3.11 堆栈安装软件包,请使用:

# dnf install python3.11
# dnf install python3.11-pip

要运行解释器,例如:

$ python3.11
$ python3.11 -m pip --help

如需更多信息,请参阅 安装和使用 Python

请注意,Python 3.11 的生命周期会短于 Python 3.9,这是 RHEL 9 中的默认 Python 实现;请参阅 Red Hat Enterprise Linux 应用程序流生命周期

Bugzilla:2127923

nodejs:18 rebase 到版本 18.14,npm rebase 到版本 9

更新的 Node.js 18.14 包括 npm 从版本 8 到 9 的 SemVer 主升级。由于维护原因,这个更新是必需的,可能需要调整 npm 配置。

值得注意的是,不再支持不限定到特定注册中心的与身份验证相关的设置。这一变化是出于安全原因而做的。如果您使用了无范围的身份验证配置,则提供的令牌将被发送到 .npmrc 文件中列出的每个个注册中心。

如果您使用无范围的身份验证令牌,请在 .npmrc 文件中生成并提供注册中心范围的令牌。

如果您有使用 _auth 的配置行,如 .npmrc 文件中的 //registry.npmjs.org/:_auth,请将它们替换为 //registry.npmjs.org/:_authToken=${NPM_TOKEN},并提供您生成的有范围的令牌。

有关更改的完整列表,请参阅 上游更改日志

Bugzilla:2178088

git rebase 到版本 2.39.1

Git 版本控制系统已更新至版本 2.39.1,与之前发布的版本 2.31 相比,它提供了 bug 修复、功能增强和性能改进。

主要改进包括:

  • git log 命令现在支持 git describe 输出的格式占位符: git log --format=%(describe)
  • git commit 命令现在支持 --fixup<commit> 选项,该选项可让您修复提交的内容,而不更改日志消息。有了这个更新,您还可以使用:

    • --fixup=amend:<commit> 选项,来更改消息和内容。
    • --fixup=reword:<commit> 选项,来只更新提交消息。
  • 您可以将新的 --reject-shallow 选项与 git clone 命令一起使用,以禁用来自 shallow 存储库的克隆。
  • git branch 命令现在支持 --recurse-submodules 选项。
  • 现在,您可以使用 git merge-tree 命令来:

    • 测试两个分支是否可以合并。
    • 如果分支被合并了,计算在合并提交中生成的树。
  • 您可以使用新的 secure.bareRepository 配置变量来过滤 bare 存储库。

Bugzilla:2139379

git-lfs rebase 到版本 3.2.0

Git 大文件存储(LFS) 扩展已更新至版本 3.2.0,与之前发布的版本 2.13 相比,其提供了 bug 修复、增强和性能改进。

主要变更包括:

  • Git LFS 引入了一个纯基于 SSH 的传输协议。
  • Git LFS 现在提供了一个合并驱动程序。
  • git lfs fsck 工具现在还会检查指针是否规范,并且是否预期的 LFS 文件具有正确的格式。
  • 对 NT LAN Manager (NTLM)身份验证协议的支持已删除。改为使用 Kerberos 或基本身份验证。

Bugzilla:2139383

新模块流:nginx:1.22

nginx 1.22 web 和代理服务器现在作为 nginx:1.22 模块流提供。与之前发布的版本 1.20 相比,这个更新提供了很多 bug 修复、安全修复、新功能和增强。

新特性:

  • nginx 现在支持:

    • 使用 OpenSSL 3.0 时的 OpenSSL 3.0 和 SSL_sendfile() 函数。
    • PCRE2 库。
    • mail 代理模块中的 POP3 和 IMAP 管道。
  • nginx 现在将 Auth-SSL-ProtocolAuth-SSL-Cipher 标头行传递给邮件代理服务器。

增强的指令:

  • 现在提供了多个新指令,如 ssl_conf_commandssl_reject_handshake
  • proxy_cookie_flags 指令现在支持变量。
  • nginx 现在支持以下指令中的变量: proxy_ssl_certificate,proxy_ssl_certificate_key,grpc_ssl_certificate,grpc_ssl_certificate_key,uwsgi_ssl_certificate, 和 uwsgi_ssl_certificate_key.
  • 流模块中的 listen 指令现在支持一个新的 fastopen 参数,该参数为侦听套接字启用 TCP Fast Open 模式。
  • mail 代理模块中添加了一个新的 max_errors 指令。

其他更改:

  • nginx 现在总是返回一个错误,如果:

    • 使用了 CONNECT 方法。
    • Content-LengthTransfer-Encoding 头都在请求中指定。
    • 请求头名称包含空格或控制字符。
    • Host 请求头行包含空格或控制字符。
  • nginx 现在阻止包含 Transfer-Encoding 头的所有 HTTP/1.0 请求。
  • nginx 现在使用应用程序层协议协商(ALPN)建立了 HTTP/2 连接,且不再支持 Next Protocol Negotiation (NPN)协议。

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

# dnf module install nginx:1.22

如需更多信息,请参阅设置和配置 NGINX

有关支持的 nginx 模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Bugzilla:2096174

mod_security rebase 到版本 2.9.6

Apache HTTP 服务器的 mod_security 模块已更新至版本 2.9.6,与之前可用的版本 2.9.3 相比,其提供了新功能、bug 修复和安全修复。

主要改进包括:

  • 调整了 modsecurity.conf-recommended 文件中的解析器激活规则。
  • mod_security 解析 HTTP 多部分请求的方式的改进。
  • 添加了一个新的 MULTIPART_PART_HEADERS 集合。
  • 向格式化的日志时间戳添加了微秒时间戳解析。
  • 添加了缺少的地理国家。

Bugzilla:2143211

新软件包:tomcat

RHEL 9.2 引入了 Apache Tomcat 服务器版本 9。Tomcat 是 Java Servlet 和 JavaServer Pages 技术官方参考实现中使用的 servlet 容器。Java Servlet 和 JavaServer Pages 规范是由 Sun 在 Java 社区流程下开发的。Tomcat 是在开放和参与的环境中开发的,并在 Apache 软件许可证版本 2.0 下发布。

Bugzilla:2160511

新模块流:postgresql:15

RHEL 9.2 引入了 PostgreSQL 15 作为 postgresql:15 模块流。与版本 13 相比,PostgreSQL 15 提供了很多新功能和增强。主要变更包括:

  • 现在,您可以使用子脚本访问 PostgreSQL JSON 数据。查询示例:

    SELECT ('{ "postgres": { "release": 15 }}'::jsonb)['postgres']['release'];
  • PostgreSQL 现在支持多范围数据类型,并扩展了 range_agg 函数来聚合多范围数据类型。
  • PostgreSQL 改进了监控和可观察性:

    • 现在,您可以跟踪 COPY 命令和 Write-ahead-log (WAL)活动的进度。
    • PostgreSQL 现在提供对复制槽的统计信息。
    • 通过启用 compute_query_id 参数,您现在可以通过几个 PostgreSQL 功能(包括 pg_stat_activityEXPLAIN VERBOSE )唯一跟踪查询。
  • PostgreSQL 通过以下方法改进了对查询并行的支持:

    • 提高了并行顺序扫描的性能。
    • 在使用 RETURN QUERY 命令时,SQL Procedural Language (PL/pgSQL)执行并行查询的能力。
    • REFRESH MATERIALIZED VIEW 命令中启用的并行。
  • PostgreSQL 现在包含 SQL 标准 MERGE 命令。您可以使用 MERGE 编写可在单个语句中包含 INSERTUPDATEDELETE 操作的条件 SQL 语句。
  • PostgreSQL 提供以下新功能以使用正则表达式来检查字符串:regexp_count(), regexp_instr(), regexp_like()regexp_substr()
  • PostgreSQL 添加了 security_invoker 参数,您可以使用它来查询具有视图调用者,而不是视图创建者权限的数据。这有助于您确保视图调用者具有使用底层数据的正确权限。
  • PostgreSQL 提高了性能,即在其归档和备份方面。
  • PostgreSQL 添加了对 LZ4Zstandard (zstd)丢失压缩算法的支持。
  • PostgreSQL 提高了其内存中和磁盘上排序算法。
  • 更新的 postgresql.service systemd 单元文件现在可确保 postgresql 服务在网络启动后启动。

以下更改向后不兼容:

  • 公共模式的默认权限已被修改。新创建的用户需要使用 GRANT ALL ON SCHEMA public TO myuser; 命令明确授予权限。例如:

    postgres=# CREATE USER mydbuser;
    postgres=# GRANT ALL ON SCHEMA public TO mydbuser;
    postgres=# \c postgres mydbuser
    postgres=$ CREATE TABLE mytable (id int);
  • 在管道模式下不再支持 libpq PQsendQuery() 函数。修改受影响的应用程序,以使用 PQsendQueryParams() 函数。

另请参阅 使用 PostgreSQL

要安装 postgresql:15 流,请使用:

# dnf module install postgresql:15

如果要从 RHEL 9 中早期的 postgresql 流升级,请迁移 PostgreSQL 数据,如 迁移到 PostgreSQL 的 RHEL 9 版本 中所述。

有关支持的 postgresql 模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Bugzilla:2128410

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.