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 应用程序流生命周期。
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}
,并提供您生成的有范围的令牌。
有关更改的完整列表,请参阅 上游更改日志。
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 存储库。
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 或基本身份验证。
新模块流: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 管道。
-
使用 OpenSSL 3.0 时的 OpenSSL 3.0 和
-
nginx
现在将Auth-SSL-Protocol
和Auth-SSL-Cipher
标头行传递给邮件代理服务器。
增强的指令:
-
现在提供了多个新指令,如
ssl_conf_command
和ssl_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-Length
和Transfer-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
集合。 - 向格式化的日志时间戳添加了微秒时间戳解析。
- 添加了缺少的地理国家。
新软件包: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_activity
或EXPLAIN VERBOSE
)唯一跟踪查询。
-
现在,您可以跟踪
PostgreSQL
通过以下方法改进了对查询并行的支持:- 提高了并行顺序扫描的性能。
-
在使用
RETURN QUERY
命令时,SQL Procedural Language (PL/pgSQL
)执行并行查询的能力。 -
在
REFRESH MATERIALIZED VIEW
命令中启用的并行。
-
PostgreSQL
现在包含 SQL 标准MERGE
命令。您可以使用MERGE
编写可在单个语句中包含INSERT
、UPDATE
和DELETE
操作的条件 SQL 语句。 -
PostgreSQL
提供以下新功能以使用正则表达式来检查字符串:regexp_count()
,regexp_instr()
,regexp_like()
和regexp_substr()
。 -
PostgreSQL
添加了security_invoker
参数,您可以使用它来查询具有视图调用者,而不是视图创建者权限的数据。这有助于您确保视图调用者具有使用底层数据的正确权限。 -
PostgreSQL
提高了性能,即在其归档和备份方面。 -
PostgreSQL
添加了对LZ4
和Zstandard
(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 应用程序流生命周期。