Slashdot Mirror


Installing Everywhere?

PlainBlack queries: "Our company has been developing an open source project for a couple years now that has gotten pretty popular. The one thing we haven't yet figured out how to do well is packaging. It seems like every operating system has it's own standards for packaging, and installers, and for each OS we support, we end up adding a lot of time to our packaging process. So my question is, what do all of you do to package your apps? Do you just release source tarballs? Do you manually package your RPMs, EXEs, DEBs, DMGs, BINs, PKGs, [and MSIs] by hand? Do you have an automated build process that creates all the packages? If so, how does it work? Is it available for other developers to use?" There are tons of installers listed on SourceForge, but which one allows the creation of OS packages without too much hassle? Duplicating work, especially software installation procedures, across all supported OSes, is time consuming. Is there an easier way?

3 of 62 comments (clear)

  1. Try Ant by adamy · · Score: 4, Informative


    Seems that there are two ways people go on this.

    1) Put everything into one huge directory. Create all the symlinks and path extensions etc.

    2) Out things in the 'correct' directories (/usr/bin for exectuables, /ur/lib for libraries etc).

    THe first ie easier to install and for the user to find and wipe out. The second is easier for users that have many apps on theri system (especially if config files for $app are in /etc/$app).

    On windows you don't really have that option, but you don't tend to run as many apps from the command line (which is the real reason there is a space in c:\Program Files\) And the tendancy is to put config stuff in the registry.

    Check out Ant. As part of a build process it knows about jars, rpms , cabs and zips. I'll bet there is a taks out there for creating .debs as well. I realize this is a "hand rolled solution" but it is probably the most extansible.

    --
    Open Source Identity Management: FreeIPA.org
  2. Easy Package Manager by grotgrot · · Score: 5, Informative
    Easy Package Manager (from the same people who brought you CUPS) solves all your UNIX needs. It can produce a package that is in the native format of each platform, in addition to having its own self extracting GUI installer.

    InnoSetup on Windows is really good, although some people also swear by NSIS (NullSoft Installer (brought to you by the same people who did winamp.

  3. portability before packaging by hubertf · · Score: 4, Insightful

    Speaking as someone who worked a lot on NetBSD's 3rd party software system, pkgsrc, which today has ~4.000 pkgs:

    It's less important for software to come "pre-packages" properly, but that both the code and the build infrastructure are written with portability in mind in the first stop.

    * Make sure your software compiles on non-i386 non-Linux (don't #include , don't assume /proc is the same on all Systems, don't use clone(2), etc).
    * Make sure it can be relocated (configure --prefix=/foo working properly if you have to use GNU autoconf).
    * Don't assume everyone uses GNU make
    * Don't assume /bin/sh == Bash
    * Don't depend on obscure non-easy to install software components (that again may not be present on non-i386 non-Linux - think Java!).

    If that is done, your software can be added to any 3rd party package systems easily.

    - Hubert