Every Rubyist is aware of Minero Aoki‘s ever useful setup.rb script. It‘s how most of us used to install our ruby programs before RubyGems came along.And it‘s still mighty useful in certain scenarios, not the least of which is the job of the distribution package managers. Setup converts setup.rb into a stand-alone application. No longer will you need distribute setup.rb with you Ruby packages. Just instruct your users to use Setup.


There a couple very important difference between the old 3.4.1 verison of the setup.rb script and version 4.0.0 of the independent application.

  • The directory convention ‘conf’ has been change to ‘etc’.
  • The Metacofig API is not currently supported.
  • Multi-package project layouts are no longer supported.


The easy way to install is via RubyGems.

  $ gem install setup

To install Setup manually you need to "boot-strap" it. This is done for you, by running the following:

  $ task/install


To use setup.rb, a project must conform to the setup.rb standard layout.

Please see the documentation in doc/book. Note that the documentation is slightly out of sync with the latest release.

Usage is as simple as:

  $ setup.rb config
  $ setup.rb setup
  $ setup.rb install


  $ setup.rb all

If you later decide you want to remove the program.

  $ setup.rb uninstall

Note that uninstall is made possible by the ‘installedfiles’ file that is generated by the install process. If that file is deleted than you will not be able to uninstall. (You can get around this be reinstalling first though).

You can clean up any setup products with:

  $ setup.rb clean

And restore the package to it‘s pristine state with:

  $ setup.rb distclean

Not that this last command will remove the .installedfiles file!

To Do

  • Maybe protect ‘installedfiles’ from removal, even on distclean.
  • Separate compiling code into separate class.


Copyright (c) 2002,2005 Minero Aoki Copyright (c) 2008 TigerOps & Thomas Sawyer

GNU LGPL, Lesser General Public License version 2.1. For details of LGPL, see the file "COPYING".


                                Minero Aoki