rpa-base 0.2.2 is now available at http://rpa-base.rubyforge.org . Many
of the most popular libraries/applications as per Rubyforge statistics
(rake, redcloth, activerecord, sqlite, log4r, ruvi, and some 120 more
libs/apps) have been packaged for use with rpa-base 0.2.2.

One of the major additions in 0.2.2 is the ability to upgrade itself
automatically and report information on updated/added packages/ports.
That functionality had been available as an update (0.2.1-9) but was
still formally unreleased. Scroll down to see an example of the
self-update in action.

Foreword
--------

The Ruby Production Archive (RPA) will provide packages of Ruby
libraries and programs in a form that allows production use, engineered
through a stringent process resembling FreeBSD's or Debian's. 

rpa-base is a port/package manager designed to support RPA. Its scope and
purposes are different to those of other systems like RubyGems.

Status
------

Please keep in mind that RPA is at an embryonic stage; this means that
it is impossible to commit to all the long term goals stated in the
manifesto (http://rpa-base.rubyforge.org/wiki/wiki.cgi?RpaManifesto) at
the moment. This doesn't make rpa-base any less usable however.

rpa-base requires Ruby 1.8.[12] (certainly 1.8 at least, it might work
on 1.8.0); it has been tested on several Linux distributions (Debian,
Fedora, older RH, Gentoo, etc), FreeBSD, DragonFly BSD, Mac OSX, win32
(cygwin, 'pragmatic installer', WinXP and 2K). 

rpa-base is fairly stable at this stage; it has been tested on several
platforms during the last 4 months. Since rpa-base can self-update,
eventual bugs discovered through the intensive testing associated with
a public release could be solved easily by upgrading rpa-base using
rpa-base itself.

We would appreciate any feedback on rpa-base.
A mailing list has been set up for that purpose:
  http://rubyforge.org/mailman/listinfo/rpa-base-testers


Features
========

rpa-base is a port/package manager designed to support RPA's client-side
package management. You can think of it as RPA's apt-get + dpkg. It
features the following as of 0.2.2:

 * strong dependency management: rpa-base installs dependencies as needed,
   keeps track of reverse dependencies on uninstall, and will remove no
   longer needed dependencies
 * atomic (de)installs: operations on the local RPA installation are atomic
   transactions; the system has been designed to survive ruby crashes (OS
   crashes too on POSIX systems)
 * parallel installs: you can install several ports in parallel; building 
   will be parallelized and the final phase will be serialized properly 
 * self-hosting: rpa-base installs and updates itself 
 * modular, extensible design: the 2-phase install is similar to FreeBSD and
   Debian's package creation; rpa-base packages need not be restricted
   to installing everything under a single directory ("1 package, 1 dir"
   paradigm)
 * rdoc integration: RDoc documentation for libraries is generated at install
   time (currently disabled on win32)
 * ri integration: ri data files are generated for all the libraries managed
   by RPA; you can access this information with ri-rpa  
 * handling C extensions: if you have the required C toolchain, rpa-base can
   compile extensions as needed
 * unit testing: when a library is installed, its unit tests are run; the
   installation is canceled if they don't pass



Several of the above features are illustrated in the screenshots and
animations available at 
 http://rpa-base.rubyforge.org/wiki/wiki.cgi?Rpa_Base_In_Action

Limitations:
============
A number of features have been pushed forward to 0.3.0:
 * full support for binary platform-specific packages 
 * signed packages/ports
 * system-wide configuration system
 * better UI

In practice, the first one is the most limiting at the moment since it means
that win32 users in particular need a working C toolchain to install
extensions. This will soon be addressed.


RPA needs your help
===================
RPA is an ambitious project in need for developers. These are some of the
areas that need to be worked on:
* packaging (new software and package maintenance) 
* setting up a permanent repository infrastructure
* cross-compilation and build automation
* website development (should provide package indexes, QA section,
  bugtracking, etc)

Please contact me at <batsman.geo / yahoo.com> (adding RPA to the subject
will help get it past the spam filtering ;) or via IRC, batsman @
#ruby-lang on freenode.net if you have any interest or for any additional
information on RPA/rpa-base and their goals.

APPENDIX: self-update
=====================

bash-2.05b$ su
Password:
bash-2.05b# rpa update
Getting port info from http://rpa-base.rubyforge.org/ports/ports                              .info.
100% [========================================] 81482 bytes
 
Ports added since the last update (in the last 14 days):
  ansicolor  0.0.3-2   Library to color strings using ANSI escape sequences.
 rubilicius  0.1.0-1   Delicious (http://del.icio.us/) bindings in pure Ruby.
 
Ports updated since the last update (in the last 14 days):
 archive-tar-minitar  0.5.0-1 -> 0.5.1-1
           bluecloth  0.0.3b-1 -> 1.0.0-1
          cstemplate  0.5.1-1 -> 0.5.1-2
            diff-lcs  1.1.0-1 -> 1.1.2-2
          extensions  0.3.0-1 -> 0.4.0-1
              raggle  0.3.1-1 -> 0.3.1-2
            rpa-base  0.2.1-9 -> 0.2.2-1
 
 
 ** New version of rpa-base available, will install it. **
 
Installing ports
Getting port rpa-base from http://rpa-base.rubyforge.org/ports/rpa-base_0.2.2-1.rps.
100% [========================================] 59392 bytes
Defaults loaded...
Recovering defaults...
Building rpa-base (0.2.2-1).
Fixed shebang in rpa/tmp/bin/rpa.
Fixed shebang in rpa/tmp/bin/rpa-buildport.
Fixed shebang in rpa/tmp/bin/rpaadmin.
Fixed shebang in rpa/tmp/bin/rpa-buildrepos.rb.
Calculating MD5 digests.
Building package in rpa-base_0.2.2-1_i386-pc-linux-gnu.rpa.
  Installing rpa-base
Reusing cached package /usr/lib/ruby/rpa0.0/packages/rpa-base_0.2.2-1_i386-pc-linux-gnu.rpa.
Starting lightweight (metadata only) transaction for rpa-base
Checking for file conflicts in rpa-base.
Starting transaction for rpa-base
Preparing to replace rpa-base 0.2.1-9 with /usr/lib/ruby/rpa0.0/packages/rpa-base_0.2.2-1_i386-pc-linux-gnu.rpa
Package /usr/lib/ruby/rpa0.0/packages/rpa-base_0.2.2-1_i386-pc-linux-gnu.rpa unpacked.
Finished transaction for rpa-base
Starting lightweight (metadata only) transaction for rpa-base
Finished lightweight (metadata only) transaction for rpa-base
Finished lightweight (metadata only) transaction for rpa-base
Committed changes


-- 
Running Debian GNU/Linux Sid (unstable)
batsman dot geo at yahoo dot com