I've read recently some criticism (see 1, 2, 3) about the packaging distribution system of two popular programming languages: Ruby gems and Python eggs. The most important argument stated against them is that they replace the system package manager (in case there is one, as in every Linux distribution), which makes eggs and gems difficult to track, code difficult to patch, and so on.

Are actually eggs and gems right? In case not, are there any alternatives to distributing Python or Ruby modules? Should developers focus on taking advantage of package manager (apt-get, pacman, ...) capabilities?

  • 1
    Well, if they're going to build their own package managers, they should do it properly. I'm yet to see a Python package manager that allows removing the installed eggs at all :(
    – user7043
    Feb 8, 2011 at 15:09
  • @delnan wasn't pip supposed to allow that? edit: oops, didn't notice the date. Jan 3, 2014 at 17:05
  • @Simon I'm pretty certain pip allowed it since before 2011. The only thing the date explains is that I was a noob who didn't know pip back then, I guess? Surprises me too.
    – user7043
    Jan 3, 2014 at 17:11
  • 1
    What's the point of putting this question on hold three years after the last answer? Jan 9, 2014 at 10:22

3 Answers 3


There are numerous python modules available via the Ubuntu package manager, for example. Just like any other software out there, it's the distributor's job to put it into their own package format, and it's the user's job to notice and use the native OS packages when they are available. I don't think it's the job of the developer to account for all possible package formats out there.

Eggs and gems are a great distribution method for modules yet to get a system package, and for those operating systems which are inexplicably popular despite the lack of anything resembling a package manager.

  • +1 For the last sentence :) Now seriously, you're right they are a good method it that case. Feb 8, 2011 at 16:00

I use Ruby. Often I use it on Windows. It's rather hard to use apt-get or rpm or similar on Windows. But gems has consistently worked in the way I needed it to without causing any problems at all.

I guess the question is: Do you want developers who aren't running a certain subset of Linux operating systems to be able to use your language?

If you do, then maybe you want a built-in package system like rubygems to allow everyone to take advantage of the tools that you make available.


Make the languages install their packages into a different directory than the ones managed by the OS package manager. This is what /usr/local was invented for.

  • 1
    But again, you are overriding (replacing, ignoring) the system's package manager. As @delnan pointed above, if only eggs could be deinstalled! Feb 8, 2011 at 15:29
  • Overriding. I use Perl myself, I do not experience any actual problems with this in practice, and I don't see why this would be different with Ruby or Python. Feb 8, 2011 at 16:19

Not the answer you're looking for? Browse other questions tagged or ask your own question.