[DRE-maint] Bug#705167: Subject: compass-susy-plugin: Either broken or poor integration with Ruby gem system (resubmitted)

Josh Stern josh at phadd.net
Thu Apr 11 22:41:38 UTC 2013


Package maintainer Jonas Smedegaard requested that I file my comments on 
this bug/issue at this address.

Summary:   As I understand the situation, Debian distributions include 
Ruby as well as some well known and lesser known software libraries for 
Ruby, independently packaged as Debian packages.   Also, it is fairly 
common in Ruby practice and documentation for Ruby users and developers 
to install these same packages from remote repositories using the Ruby 
command called 'gem'.    What I understand from Jonas is that current 
(so far as I know undocumented) Debian policy in this area is that it is 
an unsupported and potentially disabling error for a Debian user to 
install a package through the "native" Ruby gem mechanism - i.e. to 
execute "sudo gem install <package name>" when that same (or different 
version of that) package has independently being installed as a Debian 
package.

I unwittingly experienced this issue when I installed the Debian package 
called compass-susy-plugin, and then, later, following some basic 
tutorials for the Susy library that were available on the web, executed 
"sudo gem install susy".   For me, the result was that the Ruby library 
compass (for which Susy is an add-on) became silently broken - when I 
attempted to run compass to work with Susy, it gave unhelpful error 
messages indicating bad syntax constructions in the materials it was 
parsing - the same materials that were introduced in the basic tutorials 
for Susy.   In fact, my problem was that there were software conflicts 
between the Debian packages versions of compass and Susy and the ones 
installed through Ruby gem - possibly different versions and definitely 
different locations (gem installed under /usr/local).   I fixed my 
problem by purging the Debian packages ruby-sass, ruby-compass, and 
compass-susy-plugin and installing the default versions through Ruby 
gem.   However, being a newbie to Ruby, compass, and advanced CSS3 
crafting (which is what Susy does), it took me several frustrating hours 
to realize that my problem was actually with a broken software 
installation and was not related to how I was modifying the example code 
in the tutorials or how I was using compass.

As far as my own work goes, it was a satisfactory solution for me to 
just not use the Debian versions of Ruby packages, but I am motivated to 
comment on this situation by a desire to help other users who might 
inadvertently experience parallel problems with Ruby packages and to 
help the Debian community improve its overall distribution.

As I see things, it is a very bad plan/design to have a system with the 
property that using Ruby in a regular way and/or following basic 
tutorials for Ruby library usage that are available on the web causes 
the relevant part of the Debian system to silently break - it my case, 
for instance, the only visible sign that there was something wrong was 
transmitted as error messages about bad syntax in user/library bits of 
code for the sass/compass CSS meta-programming language - messages which 
were wrong and had nothing to do with the actual problem.    As a newbie 
user of these libraries/packages, this was very frustrating, but it 
seems to me that even an expert user could easily run "sudo gem install 
<package>" for some package he didn't realize or forgot had already been 
installed through the Debian system - especially if he wanted a newer 
version of the package at some point well after his Debian system was 
first installed with some forgotten old version.   Moreover, since gem 
can silently install Ruby dependencies, it may be possible to install a 
Ruby package that conflicts with an installed Debian version even by 
installing some other package directly through gem and having an updated 
version of the conflicting package pulled in as Ruby dependency.

It may be that one motivation for Debian packaging of Ruby libraries is 
to insure better security of the packages.  In this case though, the 
same comments above about creating broken libraries also apply to the 
possibility of accidentally creating a less secure system.

The following possibilities seem better to me than the current Debian 
approach in this area:

Possibility 1) Don't create Debian packages for libraries available 
through gem.
Possibility 2) Patch Ruby  gem to warn about or disable installation of 
conflicting libraries (the user could be told how to purge the Debian 
versions in the warning message as one possible option).
Possibility 3) Debian could maintain it's own version of Ruby 
repositories and insure that high grade security options are in place by 
default for gem usage.

It might be interesting to think about some of these issues in the 
broader context of Debian approaches to other non-Ruby software systems 
that have there own package repository system - e.g. Java maven, 
Eclipse, Perl, etc.

Thank you for you attention.

-= Josh Stern


According to my experience, and the feedback I have rec

On 04/10/2013 05:03 PM, Josh Stern wrote:
> I don't think it is wrong not to "support" mixing, but I think it is 
> wrong to have a package where as soon as one tries to follow any of 
> the available elementary tutorials one ends up with a broken system.   
> For the newbie, there is no way to know that they are doing something 
> "unsupported".  They just get something which mysteriously fails to 
> work and gives unhelpful error messages.   It seems like in this case 
> the expert would not have much use for the package - they already use 
> gem for this - so I'm not sure who it is helping (and I see who it is 
> hurting) in this unsupported state.
>
>
>
>
> On 04/10/2013 04:41 PM, Jonas Smedegaard wrote:
>> Quoting Josh Stern (2013-04-10 21:20:56)
>>> Somewhere in the course of doing that, I executed the command:
>>>
>>> sudo gem install susy
>> I appreciate your interest in Compass and Susy, and in your reporting
>> bugs you experience with their packaging for Debian.
>>
>> However, mixing Debian with non-Debian packaging (which gem is) is not
>> supported, and I therefore close this as a non-bug.
>>
>> Sorry for the time you have wasted struggling with this :-(
>>
>>
>> This - based on http://compass-style.org/help/ - should work:
>>
>>    compass create my_project --using susy
>>
>>
>>
>> Regards,
>>
>>   - Jonas
>>
>




More information about the Pkg-ruby-extras-maintainers mailing list