バックポート
バックポート (英: backporting)とは、ソフトウェアシステムやソフトウェアコンポーネントの新しいバージョンからパーツを取得し、それらを同じソフトウェアの古いバージョンに移植するアクションのこと。これは、ソフトウェア開発プロセスのメンテナンス段階の一部であり、一般的には、ソフトウェアの古いバージョンのセキュリティ問題を修正するため、および古いバージョンに新しい機能を提供するために使用される。
概要
[編集]バックポートの最も単純で最も一般的な例は、ソフトウェアの新しいバージョンでセキュリティホールが修正された状況である。この単純な例を考えてみる。
- あるソフトウェアのv2.0には、テキスト「is_unsecured」を「is_secured」に変更することで修正されるセキュリティの脆弱性があった。
- このソフトウェアのv1.0にも同じセキュリティホールが存在している。これは新しいバージョンにも同じコードベースが使われているためだ。しかし、テキストは「is_notsecure」と少し変更されている。
ソフトウェアv2.0を修正する変更を加え、ソフトウェアv1.0にも適用できるように変更することで、修正を効果的にバックポートした[1]。
実際の状況では、ソフトウェアの1つの側面で行われた変更は、単純なもの(数行のコードのみが変更されたもの)から重くて大規模なもの(多くの変更がコードの複数のファイルにまたがる)まである。大規模である場合、バックポートは面倒で非効率になりがちで、古いバージョンのソフトウェアが本当に必要な場合にのみ実行する必要がある(たとえば、新しいバージョンがまだミッション・クリティカルでの使用を妨げる堅牢性の問題を抱えている場合)[2]。
手順
[編集]バックポートのプロセスは、大きく次のステップに分けることができる[1]。
- バックポートで修正する必要がある古いバージョンのソフトウェアの問題の特定
- コードのどの(通常は最近の)変更が問題を修正したかを見つける
- 古いコードの状況に変更を適応させる(適切なバックポート)
- 1つまたは複数のレベルの品質管理 – バックポートされたバージョンが以前の機能を維持しているかどうか、および新しい機能を適切に実装しているかどうかをテストする。
通常、このような複数の変更はパッチセットにバンドルされている。
バックポートは、ソフトウェアの中核開発者グループによって提供される。バックポートを行うにはソフトウェアのソースコードにアクセスする必要があり、クローズドソースソフトウェアのバックポートを行うには唯一の方法となる。バックポートは通常、ソフトウェアの古いバージョンラインに沿ったバイナリアップグレードに組み込まれる。オープンソースソフトウェアでは、バックポートがソフトウェアディストリビューターによって作成され、後でアップストリームに送信されることがある(つまり、問題のあるソフトウェアの中核開発者に送信される)[2]。
例
[編集]Windows XP用にService Pack 3がリリースされたときにWindows Vistaの多くの機能がWindows XPにバックポートされたため、元々Vistaが最小要件となっていたアプリケーション(主にゲーム)はXP SP3が最小要件となった[3]。 2010年9月以降のDebianプロジェクト[4]は、一部のDebian Linuxソフトウェアパッケージの公式バックポートサービスを提供し、 Ubuntu Linuxもバックポートをサポートする[5]。ただし、UbuntuバックポートはCanonicalからまったくサポートを受けておらず、完全にコミュニティで管理されている。
関連項目
[編集]脚注
[編集]- ^ a b “Backporting Security Fixes”. Red Hat. 2020年5月11日閲覧。
- ^ a b Rahul Sundaram (2016年1月14日). “Staying close to upstream projects”. Fedora Project. 2020年5月11日閲覧。
- ^ Donald Melanson (2007年10月9日). “Microsoft backports Vista features for new Windows XP SP3 beta”. Engadget. 2020年5月11日閲覧。
- ^ “Backports service becoming official”. Debian Project (2010年9月5日). 2020年5月11日閲覧。
- ^ “UbuntuBackports”. Ubuntu Project (2015年11月29日). 2020年5月11日閲覧。