7.2. RubyGems spec ファイルの規則


RubyGems spec ファイルは、次の規則を満たしている必要があります。

  • ファイルには、gem の仕様からの名前である %{gem_name} の定義が含まれています。
  • パッケージのソースは、リリースされた gem アーカイブへの完全な URL である必要があります。
  • パッケージのバージョンは gem のバージョンと同じである必要があります。
  • ファイルには次の BuildRequires: ディレクティブが含まれています。

    BuildRequires: rubygems-devel
    Copy to Clipboard Toggle word wrap

    rubygems-devel パッケージにはビルドに必要なマクロが含まれています。

  • このファイルには、追加の rubygem(foo) Requires または Provides ディレクティブは含まれていません。これらのディレクティブは gem のメタデータから自動生成されるためです。

7.2.1. RubyGems spec ファイルの例

以下は、gem をビルドするためのサンプル spec ファイルの RubyGems 固有の部分です。spec ファイルの残りの部分は、一般的なガイドラインに従います。

サンプル spec ファイルの RubyGems 固有の部分

%prep
%setup -q -n  %{gem_name}-%{version}

# Modify the gemspec if necessary
# Also apply patches to code if necessary
%patch 0 -p1

%build
# Create the gem as gem install only works on a gem file
gem build ../%{gem_name}-%{version}.gemspec

# %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir
# by default, so that we can move it into the buildroot in %%install
%gem_install

%install
mkdir -p %{buildroot}%{gem_dir}
cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/

# If there were programs installed:
mkdir -p %{buildroot}%{_bindir}
cp -a ./%{_bindir}/* %{buildroot}%{_bindir}

# If there are C extensions, copy them to the extdir.
mkdir -p %{buildroot}%{gem_extdir_mri}
cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/
Copy to Clipboard Toggle word wrap

7.2.2. RubyGems spec ファイルのディレクティブ

以下は、spec ファイルの RubyGems 固有の部分にある特定の項目の詳細です。

Expand
表7.1 RubyGems の spec のディレクティブ詳細
ディレクティブRubyGems の詳細

%prep

RPM は gem アーカイブを直接展開できます。%setup -n %{gem_name}-%{version} マクロは、gem が展開されたディレクトリーを提供します。同じディレクトリーレベルで、%{gem_name}-%{version}.gemspec ファイルが自動的に作成されます。このファイルを使用して、次のアクションを実行できます。

  • .gemspec ファイルを変更する。
  • コードにパッチを適用する。

%build

このセクションには、ソフトウェアをマシンコードにビルドするためのコマンドが含まれています。%gem_install マクロは gem アーカイブでのみ動作します。したがって、まず gem build ../%{gem_name}-%{version}.gemspec コマンドを使用してアーカイブを再作成する必要があります。再作成された gem ファイルは %gem_install によって使用され、gem コードをビルドしてデフォルトの ./%{gem_dir} 一時ディレクトリーにインストールします。ビルドしたソースはインストール前に、自動的に作成される一時ディレクトリーに配置されます。

%install

インストールは、%{buildroot} 階層で実行されます。必要なディレクトリーを作成し、インストールされたコードを一時ディレクトリーから %{buildroot} 階層にコピーできます。この gem が共有オブジェクトを作成すると、これらはアーキテクチャー固有の %{gem_extdir_mri} パスに移動されます。

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat