Jason Creighton wrote:

> To which I say "thank goodness!". CPAN is, IMO, a bad model: It's *only* for 
> perl stuff. We don't need to reinvent CPAN for Ruby: What we *really* need 
> is a package manager flexible enough so that we can just do a:
> 
> ~$ ultimate_package_manager --add-source http://www.ruby-lang.org/raa
> ~$ ultimate_package_manager --install raa/testunit
> 
> .....or whatever. We need more flexible package managers in general, not
> just a language specific package manager every time we feel like we need
>  to reinvent the wheel.
> 

Jason, I couldn't agree more.  The one thing that has made perl
horrendously hard to maintain on most systems is that it ignores the
system package manager, whatever that is, be it ports, portage, rpm,
dpkg, or whatever else.

What Ruby needs is good tools for package maintainers to use to make
their packages extremely easy to distribute in a system distribution,
/and/ makes it easy for someone to download and install a package from
the web.

If there were a standard set of commands as widely understood as
"./configure" "make" "make install", then there would be no need for a
CPAN-alike repository and build and test system -- wget and a shell
would be all that is needed, and a very simplistic tool to search the
RAA, download the package and execute the standard commands would be
very easy to create.

If one could coerce developers to "just toss in a copy of install-foo.rb
and edit installer-conf" to create an easily installable package, one
could benefit from easy integration with existing package managers, have
easy manual package building, and have a "one-command-does-it-all" tool
ala cpan's shell.

Some hypothetical examples:

# ruby-package-get syck
RPM detected -- building packages.
Downloading package list from RAA..... done.
Finding syck.... done, 2 prerequisites.
Downloading syck.... done
making spec files.... done
+ rpmbuild -ba prereq1.spec
.....
+ rpmbuild -ba prereq2.spec
.....
+ rpmbuild -ba syck.spec
RPMS are in ~/rpm/RPMS. Installing....
+ rpm -i ~/rpm/RPMS/{prereq1-0.0.0,prereq2-0.0.0,syck-1.0}.noarch.rpm
Done!

That's all doable: the PLD team has done similar hacks (mostly ripping
most of the features out of) to CPAN -- they have scripts to build RPMs
out of CPAN entries.  If it were a native function of CPAN, it'd be much
easier.  Similar can be done for other package managers.

Ari