Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question

closed as primarily opinion-based by MichaelT, gnat, Bart van Ingen Schenau, Simon, James McLeod Jan 4 '14 at 16:03

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

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 :( – delnan Feb 8 '11 at 15:09
@delnan wasn't pip supposed to allow that? edit: oops, didn't notice the date. – Simon Jan 3 '14 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. – delnan Jan 3 '14 at 17:11
What's the point of putting this question on hold three years after the last answer? – astrojuanlu Jan 9 '14 at 10:22
up vote 5 down vote accepted

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.

share|improve this answer
+1 For the last sentence :) Now seriously, you're right they are a good method it that case. – astrojuanlu Feb 8 '11 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.

share|improve this answer

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.

share|improve this answer
But again, you are overriding (replacing, ignoring) the system's package manager. As @delnan pointed above, if only eggs could be deinstalled! – astrojuanlu Feb 8 '11 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. – reinierpost Feb 8 '11 at 16:19

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