MeeGo* パッケージング/コンプライアンス・ガイドライン
概要
次のトピックが含まれます。
- はじめに
- コンプライアンス 3.1.1 - 命名規則
- コンプライアンス 3.1.2 - 依存関係
- コンプライアンス 3.1.3 - RPM との統合
- コンプライアンス 3.1.4 - ファイルシステムのレイアウト
- コンプライアンス 3.1.5 - デスクトップとの統合
- コンプライアンス 3.2.1 - 実行ファイル
- コンプライアンス 3.2.2 - 実装依存命令セットの使用
- 準備完了
はじめに
この記事をお読みになる前に、「MeeGo* Quality/Compliance」 (英語) を参照してください。ここでは、アプリケーションとデバイスのコンプライアンス基準について説明します。Intel AppUp℠ ストアで登録申請を行う前にアプリケーションをテストできるよう、コンプライアンス・ツールのセットアップ方法についても説明します。
この記事では、MeeGo* に準拠し、Intel AppUp℠ ストアに登録申請するための RPM インストール・パッケージの作成ガイドラインを示します。
ここでは、主要なポイントを説明します。詳細は、コンプライアンスのドキュメントを参照してください。
コンプライアンス 3.1.1 - 命名規則
アプリケーション・パッケージの名前は、所有者の完全修飾ドメイン名を逆順に小文字で表したもので始まり、アプリケーション名で終わります (例: com.companyname.appname)。
この命名規則は、アプリケーション名の重複を防ぎ、Intel AppUp℠ ストアでアプリケーションを登録する誰もが覚えやすく、市場性の高いインストール・ファイル名を付けられるようにします。
コンプライアンス 3.1.2 - 依存関係
アプリケーション・パッケージには、「require」 (RPM 用語) で必要なすべてのシステム・コンポーネントが含まれていなければなりません。ただし、アプリケーションの動作に影響を及ぼさない限り (アプリケーションが正しくインストールされ、正しく動作する限り)、任意の依存関係を除くことができます。アプリケーション・パッケージは、この仕様外の機能に依存してはなりません。これはアプリケーションのインストール能力に影響するためです。
システム・コンポーネントの依存関係の解決には、パッケージ名と機能名の利用が認められています。
RPM パッケージ形式では、開発者/パッケージャーは、ほかの RPM パッケージをインストール依存関係として指定することができます。この要件は、アプリケーションを動作させるためにほかのパッケージのインストールが必要な場合は、それらも含める必要があることを示しています。最後から 2 行目は非常に重要なので、もう一度繰り返しましょう。
アプリケーション・パッケージは、この仕様 (このコンプライアンス・ガイドラインのことを指す) 以外の機能に依存してはなりません。これはアプリケーションのインストール能力に影響するためです。
つまり、インストールの依存関係がある場合は、その依存関係が MeeGo* コンプライアンス仕様で指定されているパッケージの一部かどうか知っておく必要があります。依存関係が仕様の一部である場合は、どの MeeGo* 準拠デバイスにも存在するものであり、単に RPM で require することができます。必要とするサードパーティーのパッケージが MeeGo* コンプライアンス仕様で指定されていない場合は、サードパーティー製のライブラリーを同梱する必要があります。また、アプリケーションでこのサードパーティーのリポジトリーを使用することはできません。サードパーティーのリポジトリーを使う代わりに、ライブラリーをダウンロードして RPM に同梱してください。
コンプライアンス 3.1.3 - RPM との統合
どのファイルがインストールされたかパッケージ管理システムが分かるようにアプリケーション・パッケージを作成する必要があります。インストールされたパッケージへのクエリーは、標準のパッケージ管理ツールで、期待どおりに動作しなければなりません。
すべてのファイルをポスト・インストール・スクリプトでインストールするパッケージは認められていません。アプリケーションは、正常にアンインストールされ、システムをインストール前と同じ状態にしなければなりません (ユーザーによって追加されたファイルや構成は除く)。
このクライアントでは、これは単に通常の RPM のようにインストール/アンインストールが行われ、アンインストールによってインストールされたものがすべて削除されなければならないことを意味します。
RPM によるインストール・ファイルの特定例には次のようなものがあります。
例:
- 該当するファイルが含まれているパッケージを見つけます: $ rpm –q –-file filename
- 該当するパッケージによってインストールされるすべてのファイルをリストアップします: $ rpm –ql packagename
コンプライアンス 3.1.4 - ファイルシステムのレイアウト
アプリケーションは /opt/packagename/、および必要に応じて /etc/opt/packagename/ と /var/opt/packagename/ にインストールする必要があります。システム全体の設定ファイルは、作業ディレクトリーではなく、/etc/opt/packagename ディレクトリーに配置します。ロックファイルやキャッシュファイルなどのパッケージからの変数データは、アプリケーションまたはシステムが正しく動作するために特定の場所に配置する必要がある場合を除いて、/var 直下ではなく、/var/opt/packagename ディレクトリーに配置します。ユーザー指定のファイルは ~/.config/packagename ディレクトリーに格納します。これらの規則は、ファイルシステム中のアプリケーション固有の部分を定義することによって、アプリケーション・パッケージ間およびシステムファイル間でファイル名が重複しないようにするために必要です。
この要件は、バイナリー、システム設定ファイル、ロックファイルやキャッシュファイルなどのファイル、およびユーザー指定ファイルを適切なディレクトリーにそれぞれ配置しなければならないことを示しています。
コンプライアンス 3.1.5 - デスクトップとの統合
.desktop ファイルは /usr/share/applications 以下にインストールされ、少なくとも次のフィールドの値が含まれていなければなりません: Name、Comment、[Exec または Link]、Icon、Type、および Categories。.desktop ファイルの Icon フィールドで指定される画像ファイルは SVG または PNG 形式でなければなりません。PNG 形式の場合は、次のサイズで提供する必要があります: 16x16、32x32、64x64、および 128x128。
この要件の前半部分では、アプリケーションの .desktop ファイルを作成する必要があることを示しています。.desktop ファイルには、アプリケーションの起動方法に関する詳細 (アプリケーション名、環境変数、アイコンの場所などを含む) が含まれています。freedesktop.org の「デスクトップ・エントリー仕様」 (英語) を参考にしてください。
以下に、.desktop ファイルの例として、meego-help アプリケーションの .desktop ファイルを示します。
[Desktop Entry]
Version=1.0
Name=Meego Help
Comment=Meego Help Application
Type=Application
Icon=moblin-logo-icon
Terminal=false
Exec=meego-help
Categories=Utility;
この要件の後半部分では、アプリケーションとともに提供する必要があるアイコンのサイズについて述べています。
コンプライアンス 3.2.1 - 実行ファイル
MeeGo* 準拠のすべてのバイナリー実行ファイルと共有ライブラリーは ELF 形式で、次のソースからのみ外部インターフェイスをインポートします。
- アプリケーション・パッケージの一部として提供される共有ライブラリー
- MeeGo* Core 共有ライブラリー (外部インターフェイスがライブラリーのパブリック・インターフェイスの一部である場合)
さらに、実行ファイルは MeeGo* プロファイル固有の共有ライブラリーのパブリック・インターフェイスを使うことができますが、その場合、アプリケーションはそのプロファイルにのみ準拠します。
実行ファイルが MeeGo* システム・コンポーネントのプラグインである場合、システム・コンポーネントの実行ファイル、および実行ファイルの一部としてロードされる共有ライブラリーからインターフェイスをインポートすることができます。
この要件は、MeeGo* 準拠アプリケーションは MeeGo* Core の共有ライブラリーとのみリンクしなければならないことを再度示しています。これは、これらのライブラリーが MeeGo* 準拠デバイスにすでにインストールされているためです。
実行ファイルは ELF 形式でなければならないことは、アプリケーション・バイナリーファイルにのみ適用されます。Python*、Perl*、Ruby* などのスクリプト言語を利用することは別途認められています。
Verticals と呼ばれる MeeGo* プロファイルは、MeeGo* Core インストール・パッケージと特定のプロファイルのインストール・パッケージを組み合わせたものです。現在、MeeGo* ネットブック、MeeGo* タブレット、MeeGo* IVI (車載インフォテインメント) および MeeGo* ハンドセットのプロファイルがあります。例えば、アプリケーションで MeeGo* タブレット・プロファイルによって提供されている API を使用している場合、このアプリケーションはタブレットには準拠しますが、ほかのプロファイルには準拠しません。
この要件の最後の文では、アプリケーションでコンポーネントを使用している場合、それらのコンポーネントへのリンクは MeeGo* コンプライアンス・ガイドラインで許可されていることを示しています。
コンプライアンス 3.2.2 - 実装依存命令セットの使用
アプリケーション・バイナリーや共有ライブラリーでは、バイナリーをビルドする際に、CPU アーキテクチャーの拡張機能や実装固有の機能を使うことができます。これによりアプリケーションの移植性が制限される場合は、制限内容を明確に認識する必要があります。つまり、アプリケーションのリポジトリー/ストアは、対象外のデバイスを除外できなければなりません。このためのメカニズムは指定されていません。CPU 固有の命令セットを使用する場合は、アプリケーションの制限を明示する必要があります。
まとめ
ここでは、アプリケーションの MeeGo* コンプライアンス・ガイドラインについて分かりやすく説明しました。コンプライアンス・ガイドラインに関する詳細は、次の資料を参照してください。
- MeeGo* Wiki の Quality/Compliance ページ (英語)
- 2010 年 MeeGo* コンプライアンスについてのセミナーセッション (英語)
- MeeGo* フォーラム (英語)