4.11. 動的プログラミング言語、Web サーバー、およびデータベースサーバー

Python 3.11 は RHEL 9 で利用可能

RHEL 9.2 では、新しいパッケージ python3.11 とそのために構築された一連のパッケージ、および ubi9/python-311 コンテナーイメージによって提供される Python 3.11 が導入されています。

以前にリリースされた Python 3.9 と比較して注目すべき機能強化は次のとおりです。

  • パフォーマンスが大幅に向上しました。
  • 新しい match キーワードを使用した構造パターンマッチング (他の言語の switch と同様)。
  • たとえば、閉じられていない丸かっこや角かっこを示すエラーメッセージが改善されました。
  • デバッグやその他の使用例のための正確な行番号。
  • 定義を丸かっこで囲むことにより、複数行にわたるコンテキストマネージャーの定義をサポートします。
  • 新しい X | Y 型ユニオン演算子、variadic generics、新しい Self 型など、タイプヒントと typing モジュールに関連するさまざまな新機能。
  • エラーの原因となった式を示すトレースバック内の正確なエラー位置。
  • TOML の解析をサポートする新しい tomllib 標準ライブラリーモジュール。
  • 例外グループと新しい 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 のライフサイクルは、RHEL 9 のデフォルトの Python 実装である Python 3.9 よりも短いことに注意してください。Red Hat Enterprise Linux アプリケーションストリームのライフサイクル を参照してください。

Bugzilla:2127923

nodejs:18 がバージョン 18.14 にリベースされ、npm がバージョン 9 にリベースされました。

更新された Node.js 18.14 には、npm のバージョン 8 からバージョン 9 への SemVer メジャーアップグレードが含まれています。この更新はメンテナンス上の理由から必要であり、npm 設定の調整が必要になる場合があります。

特に、特定のレジストリーに範囲を限定しない認証関連の設定はサポートされなくなりました。この変更はセキュリティー上の理由から行われました。スコープ指定されていない認証設定を使用した場合、指定されたトークンは .npmrc ファイルにリストされているすべてのレジストリーに送信されます。

スコープなしの認証トークンを使用する場合は、レジストリースコープ付きトークンを生成して .npmrc ファイルに指定します。

.npmrc ファイル内に //registry.npmjs.org/:_auth など、_auth を使用する設定行がある場合は、それらを //registry.npmjs.org/:_authToken=${NPM_TOKEN} に置き換え、生成したスコープ付きトークンを指定します。

変更の完全なリストについては、アップストリームの変更ログ を参照してください。

Bugzilla:2178088

git がバージョン 2.39.1 にリベースされました。

Git バージョン管理システムがバージョン 2.39.1 に更新され、以前にリリースされたバージョン 2.31 に比べて、バグ修正、拡張機能、およびパフォーマンスが向上しました。

主な機能拡張は、次のとおりです。

  • git log コマンドは、git describe 出力のフォーマットプレースホルダーをサポートするようになりました。git log --format=%(describe)
  • git commit コマンドで、ログメッセージを変更せずにコミットの内容を修正できる --fixup<commit> オプションがサポートされるようになりました。この更新により、以下も使用できるようになります。

    • --fixup=amend:<commit> オプションは、メッセージとコンテンツの両方を変更します。
    • --fixup=reword:<commit> オプションは、コミットメッセージのみを更新します。
  • git clone コマンドで新しい --reject-shallow オプションを使用すると、浅いリポジトリーからのクローン作成を無効にすることができます。
  • git branch コマンドで --recurse-submodules オプションがサポートされるようになりました。
  • git merge-tree コマンドを使用して、次のことができるようになりました。

    • 2 つのブランチをマージできるかどうかをテストします。
    • ブランチがマージされた場合にマージコミットになるツリーを計算します。
  • 新しい safe.bareRepository 設定変数を使用して、ベアリポジトリーをフィルタリングして除外できます。

Bugzilla:2139379

git-lfs がバージョン 3.2.0 にリベースされました。

Git Large File Storage (LFS) 拡張機能がバージョン 3.2.0 に更新され、以前にリリースされたバージョン 2.13 に比べて、バグ修正、拡張機能、およびパフォーマンスが向上しました。

主な変更点は、以下のとおりです。

  • Git LFS は純粋な SSH ベースのトランスポートプロトコルを導入します。
  • Git LFS はマージドライバーを提供するようになりました。
  • git lfs fsck ユーティリティーは、ポインターが正規であること、および予期される LFS ファイルの形式が正しいことをさらにチェックするようになりました。
  • NT LAN Manager (NTLM) 認証プロトコルのサポートは削除されました。代わりに Kerberos または Basic 認証を使用してください。

Bugzilla:2139383

新しいモジュールストリーム: nginx:1.22

nginx 1.22 Web およびプロキシーサーバーは、nginx:1.22 モジュールストリームとして利用できるようになりました。この更新では、以前にリリースされたバージョン 1.20 に対して、多数のバグ修正、セキュリティー修正、新機能、機能強化が提供されます。

新機能:

  • nginx は以下をサポートするようになりました。

    • OpenSSL 3.0、および OpenSSL 3.0 を使用する場合の SSL_sendfile() 関数。
    • PCRE2 ライブラリー。
    • mail プロキシーモジュールでの POP3 および IMAP パイプライン。
  • nginx は、Auth-SSL-Protocol および Auth-SSL-Cipher ヘッダー行をメールプロキシー認証サーバーに渡すようになりました。

拡張されたディレクティブ:

  • ssl_conf_commandssl_reject_handshake など、新しいディレクティブが複数利用できるようになりました。
  • proxy_cookie_flags ディレクティブが変数に対応するようになりました。
  • nginx は、proxy_ssl_certificateproxy_ssl_certificate_keygrpc_ssl_certificategrpc_ssl_certificate_keyuwsgi_ssl_certificate、および uwsgi_ssl_certificate_key ディレクティブの変数をサポートするようになりました。
  • ストリームモジュールの listen ディレクティブは、新しい fastopen パラメーターをサポートするようになりました。これにより、リスニングソケットの TCP Fast Open モードが有効になります。
  • 新しい max_errors ディレクティブが mail プロキシーモジュールに追加されました。

その他の変更:

  • nginx は、次の場合、常にエラーを返すようになりました。

    • CONNECT メソッドが使用されます。
    • Content-LengthTransfer-Encoding の両方のヘッダーがリクエストに指定されます。
    • リクエストヘッダー名にスペースまたは制御文字が含まれています。
    • Host リクエストヘッダー行には、スペースまたは制御文字が含まれています。
  • nginx は、Transfer-Encoding ヘッダーを含むすべての HTTP/1.0 リクエストをブロックするようになりました。
  • nginx は、Application Layer Protocol Negotiation (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 がバージョン 2.9.6 にリベースされました。

Apache HTTP サーバーの mod_security モジュールがバージョン 2.9.6 に更新され、以前に利用可能だったバージョン 2.9.3 に新機能、バグ修正、セキュリティー修正が追加されました。

主な機能拡張は、次のとおりです。

  • modsecurity.conf-recommended ファイル内のパーサーのアクティブ化ルールを調整しました。
  • mod_security が HTTP マルチパートリクエストを解析する方法が強化されました。
  • 新しい MULTIPART_PART_HEADERS コレクションが追加されました。
  • フォーマットされたログのタイムスタンプに microsec のタイムスタンプ解像度を追加しました。
  • 欠落している地域の国を追加しました。

Bugzilla:2143211

新しいパッケージ: tomcat

RHEL 9.2 では、Apache Tomcat サーバーバージョン 9 が導入されています。Tomcat は、Java Servlet および JavaServer Pages テクノロジーの公式リファレンス実装で使用されるサーブレットコンテナーです。Java Servlet および JavaServer Pages の仕様は、Java Community Process に基づいて Sun によって開発されました。Tomcat はオープンな参加型環境で開発され、Apache ソフトウェアライセンスバージョン 2.0 に基づいてリリースされています。

Bugzilla:2160511

新しいモジュールストリーム: postgresql:15

RHEL 9.2 では、PostgreSQL 15postgresql:15 モジュールストリームとして導入されています。PostgreSQL 15 は、バージョン 13 に比べて多くの新機能と拡張機能を提供します。主な変更点は、以下のとおりです。

  • サブスクリプトを使用して PostgreSQL JSON データにアクセスできるようになりました。クエリーの例:

    SELECT ('{ "postgres": { "release": 15 }}'::jsonb)['postgres']['release'];
  • PostgreSQL は、複数範囲のデータ型をサポートし、range_agg 関数を拡張して複数範囲のデータ型を集約するようになりました。
  • PostgreSQL は監視と可観測性を向上させます。

    • COPY コマンドとログ先行書き込み (WAL) アクティビティーの進行状況を追跡できるようになりました。
    • PostgreSQL はレプリケーションスロットに関する統計を提供するようになりました。
    • compute_query_id パラメーターを有効にすることで、pg_stat_activityEXPLAIN VERBOSE など、複数の PostgreSQL 機能を通じてクエリーを独自に追跡できるようになりました。
  • PostgreSQL では、次のようにクエリー並列処理のサポートが向上しています。

    • 並列順次スキャンのパフォーマンスが向上しました。
    • RETURN QUERY コマンドの使用時に並列クエリーを実行する SQL 手続き型言語 (PL/pgSQL) の機能。
    • REFRESH MATERIALIZED VIEW コマンドで並列処理を有効にしました。
  • PostgreSQL には SQL 標準の MERGE コマンドが含まれるようになりました。MERGE を使用すると、INSERTUPDATE、および DELETE アクションを 1 つのステートメントに含めることができる条件付き 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 の RHEL9 バージョンへの移行 の説明に従って PostgreSQL データを移行します。

postgresql モジュールストリームのサポート期間については、Red Hat Enterprise Linux アプリケーションストリームのライフサイクル を参照してください。

Bugzilla:2128410