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/ruby
Copy 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-devel
Copy 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 --help
Copy 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>.spec
Copy 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 --templates
Copy 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.template
Copy 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.spec
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
これで、RPM のビルド の説明に従って、編集したテンプレートを使用して RPM パッケージをビルドできるようになりました。