5.7. RubyGems パッケージ
このセクションでは、RubyGems パッケージの概要と、RPM への再パッケージ化方法を説明します。
5.7.1. RubyGems の概要 リンクのコピーリンクがクリップボードにコピーされました!
Ruby は、ダイナミックなインタープリター言語で、反映的なオブジェクト指向の汎用プログラミング言語です。
Ruby で書かれたプログラムは、特定の Ruby パッケージ形式を提供する RubyGems プロジェクトを使用してパッケージ化されます。
RubyGems で作成したパッケージは gems と呼ばれ、RPM に再パッケージ化することもできます。
このドキュメントは、gem 接頭辞とともに RubyGems の概念に関する用語を参照します。たとえば、.gemspec は gem specification に使用され、RPM に関連する用語は非修飾になります。
5.7.2. RubyGems が RPM に関連している仕組み リンクのコピーリンクがクリップボードにコピーされました!
RubyGems は、Ruby 独自のパッケージ形式を表します。ただし、RubyGems には RPM が必要とするメタデータと同様のものが含まれ、RubyGems から RPM への変換が可能になります。
Ruby Packaging Guidelines では、以下の方法で RubyGems パッケージを RPM に再パッケージ化できます。
- このような RPM は、残りすべてのディストリビューションに適合します。
- RPM パッケージ化された正しい gem をインストールすると、エンドユーザーで gem の依存関係を満たすことができます。
RubyGems では、spec ファイル、パッケージ名、依存関係、その他の項目など、RPM と同様の用語を使用します。
残りの RHEL RPM ディストリビューションに合わせるには、RubyGems で作成したパッケージが以下の規則に従う必要があります。
gems の名前は以下のパターンに従います。
rubygem-%{gem_name}rubygem-%{gem_name}Copy to Clipboard Copied! Toggle word wrap Toggle overflow シバンの行を実装するには、以下の文字列を使用する必要があります。
#!/usr/bin/ruby
#!/usr/bin/rubyCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.3. RubyGems パッケージからの RPM パッケージの作成 リンクのコピーリンクがクリップボードにコピーされました!
RubyGems パッケージのソース RPM を作成するには、以下のファイルが必要です。
- gem ファイル
-
RPM
specファイル
次のセクションでは、RubyGems が作成したパッケージから RPM パッケージを作成する方法を説明します。
5.7.3.1. RubyGems spec ファイルの規則 リンクのコピーリンクがクリップボードにコピーされました!
RubyGems spec ファイルは、次の規則を満たしている必要があります。
-
gem の仕様の名前である
%{gem_name}の定義が含まれる。 - パッケージのソースは、リリースされた gem アーカイブの完全な URL であること。パッケージのバージョンは、gem のバージョンであること。
ビルドに必要なマクロをプルできるように、以下のように定義された
BuildRequires:ディレクティブが含まれる。BuildRequires:rubygems-devel
BuildRequires:rubygems-develCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
RubyGems
RequiresまたはProvidesは自動生成されるため、含まれません。 Ruby バージョンの互換性を明示的に指定しない限り、以下のように定義された
BuildRequires:ディレクティブは含まれません。Requires: ruby(release)
Requires: ruby(release)Copy to Clipboard Copied! Toggle word wrap Toggle overflow RubyGems で自動生成された依存関係 (
Requires:ruby (rubygems)) で十分です。
5.7.3.2. RubyGems マクロ リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、RubyGems で作成したパッケージで役に立つマクロをリスト表示します。これらのマクロは、rubygems-devel パッケージで提供されています。
| マクロ名 | 拡張パス | 用途 |
|---|---|---|
| %{gem_dir} | /usr/share/gems | gem 構造のトップディレクトリー。 |
| %{gem_instdir} | %{gem_dir}/gems/%{gem_name}-%{version} | gem の実際のコンテンツが含まれるディレクトリー。 |
| %{gem_libdir} | %{gem_instdir}/lib | gem のライブラリーディレクトリー。 |
| %{gem_cache} | %{gem_dir}/cache/%{gem_name}-%{version}.gem | キャッシュした gem。 |
| %{gem_spec} | %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec | gem 仕様ファイル。 |
| %{gem_docdir} | %{gem_dir}/doc/%{gem_name}-%{version} | gem の RDoc ドキュメンテーション。 |
| %{gem_extdir_mri} | %{_libdir}/gems/ruby/%{gem_name}-%{version} | gem 拡張のディレクトリー。 |
5.7.3.3. RubyGems spec ファイルの例 リンクのコピーリンクがクリップボードにコピーされました!
以下に、gem をビルドするための spec ファイルの例と、その特定のセクションの説明を示します。
RubyGems spec ファイルの例
次の表は、RubyGems spec ファイルに含まれる特定の項目の詳細を説明しています。
| ディレクティブ | RubyGems の詳細 |
|---|---|
| %prep |
RPM は gem アーカイブを直接デプロイメントできるため、 |
| %build |
このディレクティブには、ソフトウェアをマシンコードに構築するためのコマンドまたは一連のコマンドが含まれます。
|
| %install |
インストールは、 |
5.7.3.4. gem2rpm を使用して RubyGems パッケージを RPM spec ファイルに変換する リンクのコピーリンクがクリップボードにコピーされました!
gem2rpm ユーティリティーは、RubyGems パッケージを RPM spec ファイルに変換します。
以下のセクションでは、次の方法を説明します。
-
gem2rpmユーティリティーのインストール -
すべての
gem2rpmオプションの表示 -
gem2rpmを使用して RubyGems パッケージを RPMspecファイルに変換する -
gem2rpmテンプレートの変更
5.7.3.4.1. GFS2 のインストール リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、gem2rpm ユーティリティーのインストール方法を説明します。
手順
-
RubyGems.org から
gem2rpmにインストールするには、以下のコマンドを実行します。
gem install gem2rpm
$ gem install gem2rpm
5.7.3.4.2. gem2rpm のすべてのオプションの表示 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、gem2rpm ユーティリティーのすべてのオプションを表示する方法を説明します。
手順
gem2rpmのすべてのオプションを表示するには、以下を実行してください。gem2rpm --help
$ gem2rpm --helpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.3.4.3. gem2rpm を使用して RubyGems パッケージを RPM spec ファイルに変換する リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、gem2rpm ユーティリティーを使用して RubyGems パッケージを RPM spec ファイルに変換する方法を説明します。
手順
最新バージョンの gem をダウンロードし、この gem の RPM
specファイルを生成します。gem2rpm --fetch <gem_name> > <gem_name>.spec
$ gem2rpm --fetch <gem_name> > <gem_name>.specCopy to Clipboard Copied! Toggle word wrap Toggle overflow
上記の手順では、gem のメタデータで提供される情報に基づいて RPM spec ファイルを作成します。ただし、gem は、通常 RPM (ライセンスや変更ログなど) で提供される重要な情報に欠けています。したがって、生成された spec ファイルを編集する必要があります。
5.7.3.4.4. gem2rpm テンプレート リンクのコピーリンクがクリップボードにコピーされました!
gem2rpm テンプレートとは、次の表に示す変数を含む標準の埋め込み Ruby (ERB) ファイルです。
| 変数 | 説明 |
|---|---|
| package |
gem の |
| spec |
gem の |
| config |
仕様のテンプレートヘルパーで使用されるデフォルトのマクロまたはルールを再定義できる |
| runtime_dependencies |
パッケージランタイム依存関係のリストを示す |
| development_dependencies |
パッケージ開発依存関係のリストを示す |
| tests |
実行を許可するテストフレームワークのリストを示す |
| files |
パッケージ内のファイルにフィルターが適用されていないリストを示す |
| main_files |
メインパッケージに適したファイルのリストを提供する |
| doc_files |
|
| format |
gem の |
5.7.3.4.5. 利用可能な gem2rpm テンプレートのリスト表示 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、利用可能な gem2rpm テンプレートのリストを表示する方法を説明します。
手順
利用可能なテンプレートをすべて表示するには、以下を実行します。
gem2rpm --templates
$ gem2rpm --templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.7.3.4.6. gem2rpm テンプレートの編集 リンクのコピーリンクがクリップボードにコピーされました!
生成された spec ファイルを編集する代わりに、RPM spec ファイルの生成元のテンプレートを編集できます。
gem2rpm のテンプレートを変更する場合は、以下の手順を行います。
手順
デフォルトのテンプレートを保存します。
gem2rpm -T > rubygem-<gem_name>.spec.template
$ gem2rpm -T > rubygem-<gem_name>.spec.templateCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要に応じてテンプレートを編集します。
編集したテンプレートを使用して
specファイルを生成します。gem2rpm -t rubygem-<gem_name>.spec.template <gem_name>-<latest_version.gem > <gem_name>-GEM.spec
$ gem2rpm -t rubygem-<gem_name>.spec.template <gem_name>-<latest_version.gem > <gem_name>-GEM.specCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、RPM のビルド の説明に従って、編集したテンプレートを使用して RPM パッケージをビルドできるようになりました。