= Ruby 関連パッケージポリシー = Ruby 関連(ライブラリ)のパッケージングポリシーを定めます。 == 本体のパッケージング == Ruby 本体は、原則としてその時点で選択した Matz CRuby の安定版を1種類のみ rpm パッケージで用意する ものとします。(2012/10/26現在のVineSeedでは1.9.3.286) それ以外のバージョンや別実装などはパッケージでは用意しません。必要に応じて、rbenvやrvm などで個別に導入管理してもらうものとします。(rbenv,ruby-build,rbenv-gemsetはパッケージ で用意しています) == ライブラリのパッケージング == gem から生成するライブラリ以外は vendorlib/vendorarch にいれ、ruby-* や *-ruby といった パッケージ名となります。べつのツールやライブラリ等の言語バインディング系も同様です。 gem から生成するパッケージは rubygem-* というパッケージ名とします。これは後述の gem_dir に入れることになります。ただし、何らかの重要な ruby ベースのソフトウエアをパッケージング する際に必要である という場合を除いて、rubygem-*.rpm パッケージは作らず、ユーザが gemや bundler等で管理するほうが望ましいと考えます。(rubygemsをrpmで網羅し管理することは現実的 ではないため) == 各種マクロ (Vine7/ruby-1.9.3) == 原則としてRPMパッケージでいれる標準以外のrubyライブラリ(rubygems系以外)は、 マクロ定義されている %ruby_vendorlibdir または %ruby_vendorarchdir に配置するものとします。 (ruby_libdir/ruby_archdirは標準ライブラリ用) /usr/local/lib/site_ruby はパッケージ外で(gem以外で)インストールされるライブラリのための場所 となります。RPMでは管理しません。 * /etc/rpm/macros.ruby に ruby package に関するマクロ * /etc/rpm/macros.rubygems に rubygem package に関するマクロ === Ruby 標準ライブラリ=== * {{{%ruby_libdir %{_datadir}/ruby/1.9.1}}} * {{{%ruby_libarchdir %{_libdir}/ruby/1.9.1}}} === Ruby ベンダ提供ライブラリ(rpm管理パッケージ) === * {{{%ruby_vendordir vendor_ruby}}} * {{{%ruby_vendorlibdir %{_datadir}/ruby/%{ruby_vendordir}/1.9.1}}} * {{{%ruby_vendorarchdir %{_libdir}/ruby/%{ruby_vendordir}/1.9.1}}} === Ruby サイトローカルライブラリ(rpm管理外) === * {{{%ruby_sitedir site_ruby}}} * {{{%ruby_sitelibdir %{_prefix}/local/share/ruby/%{ruby_sitedir}/1.9.1}}} * {{{%ruby_sitearchdir %{_prefix}/local/%{_lib}/ruby/%{ruby_sitedir}/1.9.1}}} === Rubygems パッケージ用マクロ=== * {{{%gem_dir /usr/share/gems/1.9.1}}} * {{{%gem_instdir %{gem_dir}/gems/%{gem_name}-%{version}}}} * {{{%gem_extdir %{_libdir}/gems/1.9.1/exts/%{gem_name}-%{version}}}} * {{{%gem_libdir %{gem_instdir}/lib}}} * {{{%gem_cache %{gem_dir}/cache/%{gem_name}-%{version}.gem}}} * {{{%gem_spec %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec}}} * {{{%gem_docdir %{gem_dir}/doc/%{gem_name}-%{version}}}} ~~~~ == 各種マクロ (Vine6/ruby-1.8.7) == 以下は、Vine 6 以前のポリシーです。 原則としてRPMパッケージでいれるrubyライブラリは、マクロ定義されている %rlibdir または %rarchdir に配置するものとします。 /usr/local/lib/site_ruby はパッケージ外で(gem以外で)インストールされるライブラリのための場所となります。 === /usr/lib/rpm/macrosで定義 === * {{{%ruby /usr/bin/ruby}}} * {{{%__ruby /usr/bin/ruby}}} * {{{%rbindir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["bindir"]')}}} * /usr/bin * {{{%rlibdir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["rubylibdir"]')}}} * /usr/lib/ruby/1.8 * {{{%rarchdir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["archdir"]')}}} * /usr/lib/ruby/1.8/i686-linux * /usr/lib64/ruby/1.8/x86_64-linux * /usr/lib/ruby/1.8/powerpc-linux * {{{%rslibdir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["sitelibdir"]')}}} * /usr/local/lib/site_ruby/1.8 * {{{%rsarchdir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["sitearchdir"]')}}} * /usr/local/lib/site_ruby/1.8/i686-linux * /usr/local/lib64/site_ruby/1.8/x86_64-linux * /usr/local/lib/site_ruby/1.8/powerpc-linux === rubygems === gem でいれたものは上記とはべつに /var/lib/gem で管理される。