Re: gem2deb: installing packages with the same layout as Rubygems
On വെള്ളി 13 നവംബര് 2015 10:10 വൈകു, Antonio Terceiro wrote:
> Hello everyone,
>
> TL;DR: with gem2deb 0.23 in experimental you can tell dh_ruby to install
> using the same layout as Rubygems by adding `export DH_RUBY =
> --gem-install` to your debian/rules.
>
> I have just uploaded to experimental gem2deb version 0.23, which
> includes a --gem-install option to dh_ruby that will install
> packages using the same layout as Rubygems, instead of the layout we
> have been using in Debian since before Rubygems came into existance.
>
> I would like your feedback.
>
> Installation layout differences
> -----------------------------------------------------------------------
>
> The traditional gem2deb installed will install to the following paths:
>
> /usr/lib/ruby/vendor_ruby
>
> pure Ruby code
>
> /usr/lib/<triplet>/ruby/vendor_ruby
>
> native extensions
>
> /usr/share/rubygems-integration/all/specifications
>
> gemspec files for architecture independent packages
>
> /usr/share/rubygems-integration/$RUBY_VERSION/specifications
>
> gemspec files for architecture dependent packages, for each supported
> $RUBY_VERSION
>
> The new gem installer will install *everything that is listed in
> .gemspec* to the following locations:
>
> /usr/share/rubygems-integration/all/
>
> for architecture independent packages
>
> /usr/lib/<triplet>/rubygems-integration/$RUBY_VERSION/
>
> for architecture dependent packages, for each $RUBY_VERSION
>
> Problems being solved
> -----------------------------------------------------------------------
>
> Since packages installed with the new gem installed will look exactly
> like their upstream counterparts look like when installed via Rubygems,
> we would not need to handle the following issues anymore:
>
> - Content outside lib/
>
> We have been patching every package in which the code depends on stuff
> outside of lib/, such as templates, configuration, etc etc. In these
> cases, we needed to ship those in /usr/share/$package, and patch the
> code that uses such content to look it up in /usr/share/$package
> instead of somewhere relative to lib/
>
> - Namespace issues in /usr/lib/ruby/vendor_ruby
>
> Since /usr/lib/ruby/vendor_ruby is shared by all packages, we usually
> have namespace issues there, specially for Rails-related packages
> where Rails assumes that each installed package has its own isolated
> lib/ directory, so it encourages library authors to override Rails
> files such as generators (i.e. code that generated files in Rails apps
> based on templates, such as library-specific configuration files, etc).
>
> See #770251 for an example
> https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=770251
>
> Can anybody think of other things we usually need to patch because
> upstream assumes the Rubygems installation layout?
>
> How to use
> -----------------------------------------------------------------------
>
> - Install gem2deb 0.23 from experimental
>
> - Add the following to debian/rules
>
> export DH_RUBY = --gem-install
>
> (in this version dh_ruby will use $DH_RUBY as an extra source of
> command line arguments)
>
> Pending issues
> -----------------------------------------------------------------------
>
> - currently READMEs, changelogs and license files are being duplicated
> in the Rubygems directory, while on Debian they should be in
> /usr/share/doc/$packages
>
> - C source for native extensions is also being installed, and we
> probably don't need that.
>
> - <insert yours here after you give it a try>
>
> The future
> -----------------------------------------------------------------------
>
> In principle, packages using this new installer will work just fine
> together with our "traditional" packages.
>
> I believe that this will immensely reduce the mismatch between Debian
> packages and upstream, making it a lot easier for us, and make
> everything work better together. I think that at some point this should
> become the default, if not for all, at least for new packages.
>
> I am looking forward to read your ideas about it.
>
I see gem2deb being pushed to unstable. So, is using the same layout as
Rubygems ok? Or, is it not yet official?
--
Regards
Balasankar C
http://balasankarc.in
Reply to: