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

nodejs:16 モジュールストリームに完全に対応しました。

以前はテクノロジープレビューとして利用できた nodejs:16 モジュールストリームは、RHSA-2021: 5171 アドバイザリーのリリースで完全に対応しています。nodejs:16 モジュールストリームでは、LTS (Long Term Support) バージョンの Node.js 16.13.1 が提供されるようになりました。

RHEL 8.5 に含まれる Node.js 16 は、RHEL 8.3 以降で利用可能な Node.js 14 上で、多くの新機能と、バグおよびセキュリティーの修正を提供します。

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

  • V8 エンジンがバージョン 9.4 にアップグレードされました。
  • npm パッケージマネージャーがバージョン 8.1.2 にアップグレードされました。
  • 新しい Timers Promises API は、Promise オブジェクトを返すタイマー関数の代替セットを提供します。
  • Node.js が実験的な新しい Web Streams API を提供するようになりました。
  • Node.js には、Corepack が含まれるようになりました。これは、手動でインストールすることなく、指定したプロジェクトに設定されたパッケージマネージャーを使用できるようにする試験的なツールです。
  • Node.js は、ESM ローダーフック API を提供する試験的な ECMAScript モジュール (ESM) を提供します。これにより、ESM ローダーフックが統合されます。

nodejs:16 モジュールストリームをインストールするには、以下を使用します。

# yum module install nodejs:16

nodejs:14 ストリームからアップグレードする場合は、Switching to a later stream を参照してください。

(BZ#1953991、BZ#2027610)

新しいモジュールストリーム: ruby:3.0

RHEL 8.5 では、新しい ruby:3.0 モジュールストリームに Ruby 3.0.2 が導入されました。このバージョンでは、RHEL 8.3 で配布される Ruby 2.7 に対するパフォーマンスの向上、バグおよびセキュリティー修正、および新機能が数多く追加されました。

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

  • 同時実行機能および並列処理機能:

    • スレッドセーフ実行を提供する Actor-model 抽象化である Ractor は実験的な機能として提供されます。
    • Fiber Scheduler が実験的な機能として導入されました。Fiber Scheduler はブロッキング操作をインターセプトし、既存のコードを変更せずに軽量の同時実行を可能にします。
  • 静的な分析機能:

    • Ruby プログラムの構造を説明する RBS 言語が導入されました。RBS で書かれたタイプ定義を解析するために rbs gem が追加されまし た。
    • TypeProf ユーティリティーが導入されました。これは Ruby コードのタイプ解析ツールです。
  • case/in 式を使用したパターンの照合は実験的なものではありません。
  • 実験的な機能である 1 行パターンの一致が再設計されました。
  • 検索パターンが実験的な機能として追加されました。

以下のパフォーマンスの向上が実装されています。

  • Interactive Ruby Shell (IRB) に長いコードを貼り付けることができるようになりました。
  • measure コマンドが、時間測定のために IRB に追加されました。

その他の主な変更点は次の通りです。

  • キーワード引数は他の引数から分離されています。
  • $HOME/.gem/ ディレクトリーがすでに存在しない限り、ユーザーがインストールした gems のデフォルトディレクトリーは $HOME/.local/share /gem/ になります。

ruby:3.0 モジュールストリームをインストールするには、以下を使用します。

# yum module install ruby:3.0

以前の ruby モジュールストリームからアップグレードするには、Switching to a later stream を参照してください。

(BZ#1938942)

Python urllib 解析関数のデフォルト区切り文字の変更点

Python urllib ライブラリーの Web Cache Poisoning CVE-2021-23336 を緩和するため、urllib.parse.parse_qsl および urllib.parse.parse_qs 関数のデフォルト区切り文字が、アンパサンド (&) とセミコロン (;) の両方が単一のアンパサンドに変更されます。

この変更は、RHEL 8.4 のリリースで Python 3.6 に実装され、Python 3.8 および Python 2.7 にバックポートされます。

デフォルトの区切り文字の変更は後方互換性がない可能性があるため、Red Hat はデフォルトの区切り文字が変更された Python パッケージの動作を設定する手段を提供します。さらに、影響を受ける urllib 解析関数は、お客様のアプリケーションが変更の影響を受けることを検知すると警告を発行します。

詳細は、Mitigation of Web Cache Poisoning in the Python urllib library (CVE-2021-23336) ナレッジ記事を参照してください。

Python 3.9 は影響を受けませんが、新しいデフォルトの区切り文字 (&) がすでに含まれているため、Python コードで urllib.parse.parse_qsl および urllib.parse.parse_qs 関数を呼び出す時に、セパレーターパラメーターを渡すことしか変更できません。

(BZ#1935686、BZ#1931555、BZ#1969517)

Python ipaddress モジュールで、IPv4 アドレスでゼロを使用できなくなりました。

CVE-2021-29921 を緩和するために、Python ipaddress モジュールが、AddressValueError: Leading zeros の先頭のゼロを持つ IPv4 アドレスを拒否するようになりました。

この変更は、python38 および python39 モジュールに導入されました。RHEL に同梱される以前の Python バージョンは、CVE-2021-29921 の影響を受けません。

以前の動作に依存するお客様は、IPv4 アドレス入力を事前に処理して、先頭のゼロオフを削除します。以下に例を示します。

>>> def reformat_ip(address): return '.'.join(part.lstrip('0') if part != '0' else part for part in address.split('.'))
>>> reformat_ip('0127.0.0.1')
'127.0.0.1'

読みやすために明示的なループで先頭のゼロを取り除くには、以下を使用します。

def reformat_ip(address):
    parts = []
    for part in address.split('.'):
        if part != "0":
            part = part.lstrip('0')
        parts.append(part)
    return '.'.join(parts)

(BZ#1986007、BZ#1970504、BZ#1970505)

php:7.4 モジュールストリームがバージョン 7.4.19 にリベース

php:7.4 モジュールストリームが提供する PHP スクリプト言語が、バージョン 7.4.6 から 7.4.19 にアップグレードされました。今回の更新で、複数のセキュリティー修正およびバグ修正が提供されます。

(BZ#1944110)

新しいパッケージ: pg_repack

postgresql:12 および postgresql:13 モジュールストリームに、新しい pg_repack パッケージが追加されました。pg_repack パッケージは PostgreSQL 拡張を提供し、テーブルおよびインデックスから bloat を取り除き、必要に応じてクラスターインデックスの物理順序を復元します。

(BZ#1967193、BZ#1935889)

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

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

新機能:

  • nginx が、OCSP (Online Certificate Status Protocol) を使用したクライアント SSL 証明書の検証に対応するようになりました。
  • nginx が、最小限の空き領域に基づくキャッシュクリアに対応するようになりました。これに対応するのは、proxy_cache_path ディレクティブの min_free パラメーターとして実装されています。
  • 新しい ngx_stream_set_module モジュールが追加されました。これにより、変数の値を設定できるようになりました。

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

  • ssl_conf_commandssl_reject_handshake など、新しいディレクティブが複数利用できるようになりました。
  • proxy_cookie_flags ディレクティブが変数に対応するようになりました。

HTTP/2 のサポートが改善されました。

  • ngx_http_v2 モジュールに、lingering_close ディレクティブ、lingering_time ディレクティブ、lingering_timeout ディレクティブが含まれるようになりました。
  • HTTP/2 での接続の処理は、HTTP/1.x に合わせて行われました。nginx 1.20 では、削除した http2_recv_timeout ディレクティブ、http2_idle_timeout ディレクティブ、および http2_max_requests ディレクティブの代わりに、keepalive_timeout ディレクティブおよび keepalive_requests ディレクティブを使用します。

nginx:1.20 ストリームをインストールするには、以下を実行します。

# yum module install nginx:1.20

nginx:1.20 ストリームからアップグレードする場合は、後続のストリームへの切り替え を参照してください。

(BZ#1945671)

squid:4 モジュールストリームがバージョン 4.15 にリベース

squid:4 モジュールストリームで利用可能な Squid プロキシーサーバーが、バージョン 4.11 からバージョン 4.15 にアップグレードされました。今回の更新で、さまざまなバグ修正およびセキュリティー修正が提供されます。

(BZ#1964384)

quota が HPE XFS に対応

quota ユーティリティーは、HPE XFS ファイルシステムのサポートを提供するようになりました。その結果、HPE XFS のユーザーは、quota ユーティリティーを使用して、ユーザーおよびグループのディスク使用量を監視および管理できます。

(BZ#1945408)

mutt がバージョン 2.0.7 にリベース

Mutt メールクライアントはバージョン 2.0.7 に更新され、機能強化およびバグ修正が数多く追加されました。

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

  • Mutt は、XOAUTH2 メカニズムを使用して OAuth 2.0 承認プロトコルをサポートするようになりました。Mutt は、IMAP、POP、および SMTP プロトコルの OAUTHBEARER 認証メカニズムもサポートするようになりました。OAuth ベースの機能は、外部スクリプトから提供されます。これにより、認証トークンを使用して Gmail などのさまざまなクラウドメールアドレスと Mutt を接続できます。OAuth サポートで Mutt を設定する方法の詳細は、How to set up Mutt with Gmail using OAuth2 authentication を参照してください。
  • Mutt では、ドメインリテラルのメールアドレスがサポートされるようになりました (例: user@[IPv6:fcXX:…​])。
  • 新しい $ssl_use_tlsv1_3 設定変数により、TLS 1.3 接続がメールサーバーでサポートされる場合、この接続が可能になります。この変数はデフォルトで有効になっています。
  • 新しい $imap_deflate 変数により、COMPRESS=DEFLATE 圧縮がサポートされるようになりました。デフォルトでは、この変数は無効です。
  • $ssl_starttls 変数は、暗号化されていない IMAP PREAUTH 接続の中止を制御しなくなりました。STARTTLS プロセスに依存している場合は、代わりに $ ssl_force_tls 変数を使用してください。

新しい Mutt バージョンに更新した後でも、RHEL ユーザーが既存の環境で問題に遭遇するのを防ぐために、ssl_force_tls 設定変数はデフォルトで no になっていることに注意してください。Mutt のアップストリームバージョンでは、ssl_force_tls がデフォルトで有効になりました。

(BZ#1912614BZ#1890084)