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"]')
- %rlibdir %(%{ruby} -r rbconfig -e 'print Config::CONFIG["rubylibdir"]')
- %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 で管理される。