Red Hat Enterprise Linuxでは、アプリケーションソフトウェアの互換性について明確なポリシーを定義し、それに従ってアップデートを提供することでお客様がアップデートを適用しやすくなるよう取り組んでいます。
レッドハットの森若です。
オペレーティングシステムをアップデートをする時、アプリケーションソフトウェアの互換性に問題があるとこの互換性をチェックする必要がでてくるためアップデート作業が困難になってしまいます。Red Hat Enterprise Linuxでは、アプリケーションソフトウェアの互換性について明確なポリシーを定義し、それに従ってアップデートを提供することでお客様がアップデートを適用しやすくなるよう取り組んでいます。
メジャーリリース内の互換性
Red Hat Enterprise Linuxの主要な目標の 1 つは、安定した一貫性のあるランタイム環境をサードパーティアプリケーションへ提供することです。これを実現するために、メジャーリリース内で発行される全てのパッケージアップデートに対して、以下の互換性を維持するよう努めています。
- アプリケーションバイナリの互換性
- 設定ファイルの互換性
- データファイルの互換性
たとえば、Red Hat Enterprise Linux 6.1 から Red Hat Enterprise Linux 6.2 へのパッケージアップデートや、特定の脆弱性を修正するパッケージアップデートは、アプリケーションが標準の Application Binary Interface (ABI) を順守している限りにおいて、その機能を破壊することがないように保守されています。このポリシーと取り組みにより、ほとんどの場合は単純にパッケージの更新を実施してアップデートを完了することができます。
残念ながら完璧な互換性を維持してメンテナンスすることは困難であるため、意図せず互換性が破壊されてしまうケースも発生します。この場合には「リグレッション」と呼ばれてバグ扱いとなり、互換性を回復するための修正が行われます。
実際にリグレッションに対する修正は実施されています。カスタマーポータルにて”regression”などのキーワードで検索すると、一時的にリグレッションが発生し、それを修正したという内容の記事をみつけることができます。皆様がご利用のアプリケーションについて、もしアップデートにより動作が変わるような場合にはサポート窓口までご連絡ください。
メジャーリリース間の互換性
メジャーリリースをまだいだ互換性については、”Application Compatibility Guide”内で定義される「コアライブラリ」と互換性を維持するためのライブラリを2バージョンあとのメジャーリリースまで提供します。
たとえば、Red Hat Enterprise Linux 7のコアライブラリであるlibxml2とlibcを利用したプログラムを作成するとします。将来出荷される “RHEL 8” や “RHEL 9” では異なるバージョンのlibxmlやlibcが採用されるかもしれませんが、その場合であってもRHEL7と互換性を維持するためのライブラリパッケージが提供され、ひきつづき利用することができ、メンテナンスも提供されつづけます。
コアライブラリ以外のライブラリについては、メジャーバージョンが変わったあとの互換性について保証されません。バイナリ形式でソフトウェアを配布したい場合の推奨方式については”Application Compatibility Guide”にまとまっていますのでこちらをご確認ください。
関連リンク
- Red Hat Enterprise Linux Application Compatibility Policies https://access.redhat.com/solutions/5154
- Red Hat Enterprise Linux Application Compatibility Guide https://access.redhat.com/articles/rhel-abi-compatibility
- Red Hat Enterprise Linux 7 ドキュメント「開発者ガイド」内「3.2 互換性」 https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Developer_Guide/lib.compatibility.html