[ code ]
Note: If you would like to take over as maintainer of one of these programs, plese let me know. I still try to find time to update these programs' web pages, apply patches etc, but lately I haven't been doing so well. I'm not using these programs myself, so maintaining them just isn't very high on my list of priorities. Please help.

setup.sh

introduction | download | status | instructions | license

Introduction

This program is useful for two things:
  • Making open source software you distribute easier to install.
  • Making open source software you download from the 'net cooperate with your system's package manager.
It is basically a large shell script, with built in logic to execute the "./configure; make; make install;" sequence and if successful install it with the local package management tools (e.g. rpm). It does this by tricking "make" into using it's own custom "install" program.

If you are a developer, then you can use this program along with Stéphane Peter's self-extracting archives to make downloading and installing your program merely a matter of point and click. A single self-extracting source archive would work for all the platforms you have ported your app to.

The need for binary packages might go away completely, if these tools improve enough...


Download


Status

The current version is 0.1.2.

I have tested the script on a few programs. Follow the link to see how I'm doing. If you have success/trouble using setup.sh to install a program, please let me know!

It is being developed on a RedHat Linux 6.0 system, so it may not work properly on other systems - but it is my goal to make it support as many different platforms as possible.

Please note that since I don't have access to a Stampede or Debian system, I won't be able to support those platforms without help. Please help!

This is an early release of the program - it is almost fully functional, but is missing the following important features:

  • Doesn't check for conflicts with existing files.
  • Can't create Debian packages.
  • Can't create Stampede packages.
Other limitations:
  • The GUI isn't really very impressive.
  • My shell scripting is probably not as portable as GNU's. But it could be, if I got help...
  • It isn't flexibile enough, it should at least allow the user to select what arguments to pass to configure and/or make.
  • It doesn't know about different platforms' file systems etc, that's currently up to the person who writes the Makefile.
  • Doesn't support complicated things like altering /etc/inetd.conf automagically - installing and removing files are it's current limit.
  • If it was network aware, then it could upgrade itself! ;-)
  • It hasn't been tested enough.


Instructions

Users

To use the script to attempt installation of a package you have downloaded from the 'net, type:
	setup.sh /path/to/source/directory/
If the application does not come with a valid .lsm file, you may need to supply other command-line arguments to get it to work. Use the "--help" argument for more information.

Obviously, the program will only work properly if the developer has done a good job porting the application to your platform, so the "configure" sequence or "make" will assume reasonable defaults for your system.

Developers

The script should work flawlessly with most stand-alone applications, assuming these rules are followed:
  1. The "./configure; make; make install" mantra (or just "make; make install") should suffice to install your program on as many platforms as possible.
  2. Your makefile must use the "install" program for all installations, or (even better) the "$(INSTALL)" macro.
  3. Be sure your makefile respects the --prefix= configure flag, if you are using autoconf.
  4. You should create a valid .lsm file for your application, and keep a copy of it in the same directory as setup.sh. It should contain at least the Title, Version, Description, Author and Copying-policy fields.
  5. The build sequence shouldn't automatically modify any files already on the system (e.g. /etc/inetd.conf). If it does, setup.sh won't notice the change and the generated package will be incomplete (uninstalling won't work).
If these rules are followed, then just typing ./setup.sh from your application's source tree should suffice.

In general, I don't think these requirements are too much to ask - most free software packages appear to follow these guidelines already, especially the ones using GNU autoconf. If they are a problem for you, check if the command line arguments can resolve the issue (type ./setup.sh -help), or just hack the source.


License

This program may be used according to the terms of the GNU General Public License, version 2 or above.

Please note that this doesn't mean you have to GPL programs that use this installer - they are just data from setup.sh's point of view. This does means that you may not change the license on the installer itself or works derived from it - it is free software, and will stay that way.