Installing Everywhere? 62
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?
self-extraction (Score:3, Informative)
Or you can do it all in Java, and it doesn't matter what your platform is. Webstart rocks these days.
Re:self-extraction (Score:3, Interesting)
Please no self extractors. Especially in Linux. In my experience, 90% of the Linux ones never work. I especially love the ones who say "can't install -- need at least version 2.2.x of GNU libc" when I have 2.3.x (which is backwards compatible). Luckily they're usually bash scripts in front of a tarball, so I can just find the start of the archive and untar it. Even though I can do it, it sucks bigtime.
I also like to know what the package is going to do and what files it will create before it installs. You
Re:self-extraction (Score:2)
It recently took ~45 minutes to fire up (via Webstart) a Java application that decided it needed the latest version. According to a co-worker who uses that application, "the developers are constantly tweaking that app".
Pardon my Naievity... (Score:2, Insightful)
As I mentioned in the subject, I'm a little naieve here. The concept of 'installing' software has always baffled me. I think I'm just missing an important bit of info here.
Re:Pardon my Naievity... (Score:2)
Right, when you are installing a complex server side piece of software, using an installer is a no brainer. But for simple apps, installers (on Windows at least) let users ignore where it gets installed to, and create shortcuts for launching it from the Start menu/Desktop/Quicklaunch bar. Next --> Next --> Next --> Finish. Simple. If you weren't using an installer, the process would be extract app to some directory, go to directory, and create sh
Re:Pardon my Naievity... (Score:3, Informative)
Is that pretty much the reason? So it provides an uninstall path too?
I can see that. Little surprised I got modded as overrated, though. Then again, I come from the Windows world. Installing apps = bigger registry. Bigger registry = slower Windows. Slower Windows = reinstall once a year. Those of us that'd like to put that reinstall off like apps that don't touch the registry, even to inst
Re:Pardon my Naievity... (Score:2)
Why not have the program offer to do this when it is first run? The user downloads an executable and it appears on their desktop. They then double-click it and it runs. It examines the start menu and if no link is there it pops up a question asking if you wan to install it. The user can say yes/no/later. If they say yes it adds the startup item.
Re:Pardon my Naievity... (Score:2)
Re:Pardon my Naievity... (Score:1)
And that's not because I like being a grenouille, because frankly, I don't like the grenouilles.
-uso.
Don't Install! (Score:2, Interesting)
Applications that need to print ar a pain, amung other problems, but if you can get away with it then this works well.
Re:Don't Install! (Score:1)
Re:Don't Install! (Score:2)
-uso.
Re:Speaking of Packaging. (Score:3, Interesting)
You could use update software. PowerUpdate [zerog.com], Update Server [installshield.com], RTPatch [pocketsoft.com], and vBuild [installshield.com] are a few commercial offerings.
Re:Speaking of Packaging. (Score:2)
Are you a programmer? Simple HTTP [w3.org] isn't that hard. Anyway, just about every language has some sort of HTTP library. I believe both Python and Perl's standard distribution comes with one. There is one for C at w3.org. I serously doubt even Microsoft wouldn't include some sort of library to facilitate downloading with HTTP--they merged an entire web browser into their operating system after all.
JAR (Score:2, Interesting)
Re:JAR (Score:2, Informative)
static binary (Score:1)
just make a big binary file that on executes checks its enviroment;
what is my $PATH?, where is my ld.so configured?, am i root?, etc
then just extract your parts in the correct directories
if the software is good enough normally the community itself will mail you with packaging offers for various platforms
Try Ant (Score:5, 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,
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
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
Only 2 options. (Score:3, Insightful)
Why do developers force the users to put applications when they don't know the system. How many windows apps install in C: with your program files is on D: or another partition. Stop forcing the users, and make your programs run out of its own directory.
Just look at how many people only download mozilla in the
And to top it off, no installer means no extra work get the program out the door. And makes a certain level of support, if they cant unzip the file, they need to pay for your premium support package.
Final thought, no install script means registry or other files I have to backup on a reinstall. Just give me a directory with
Re:Only 2 options. (Score:3, Insightful)
When you're releasing to the general public, you have to make it easy as sin to install. Though all of us here can think unziping a zip/gz file and placing its contents to its home is easy, this goes way beyond 'normal' users. Installers are needed for the general public.
This is a proplem with the OSS community; in order to be sucessful and adopted, the general public needs to be able to use the
Re:Only 2 options. (Score:1)
InfoZip (and their WiZ project), PKWARE, Nico Mak (WinZip) all make them, and there are self-extractors for all the various Unices as well. Plus graphical ZIP extractors aren't hard to find either.
-uso.
Re:Only 2 options. (Score:2, Insightful)
I used to think this was stupid, too; like SCO's hellish directory structure. It's invaluable, though, if you find you need to configure a package on a read-only filesystem, like Knoppix, for instance.
Re:Only 2 options. (Score:3, Informative)
That's an easy one. A lot of users aren't even aware of their Program Files directory. Poorly designed installers will default to "c:\program files", but I believe there's a registry key that says where your program files is (after all, the name varies a
Re:Only 2 options. (Score:3, Informative)
Re:Only 2 options. (Score:2)
What about the people who download it in .exe format, so they don't need to mess with extracting it and setting up shortcuts in the Start menu? (Or because they don't know how to?) I'm sure there are lots of them too.
Re:Only 2 options. (Score:2, Interesting)
If there isn't a deb available, and I get the tarball and do the "./configure && make install" thingy, the files end up everywhere in
I agree with you that if the packaging isn't done 100% correctly (as often happens with Windows apps), you indeed might get bald because of pulling out your own hair. Fortunately, the obvious
Re:Only 2 options. (Score:2)
It is also handy for keeping old versions around in case you need to roll back upgrades.
It's kind of hard to describe, the link abov
Easy Package Manager (Score:5, Informative)
InnoSetup [jrsoftware.org] on Windows is really good, although some people also swear by NSIS (NullSoft Installer [nullsoft.com] (brought to you by the same people who did winamp.
Re:Easy Package Manager (Score:1)
Re:Easy, plus A-A-P complete solution, overviews (Score:2, Insightful)
But I found a nice list of existing packaging tools [a-a-p.org] at the A-A-P [a-a-p.org] which "makes it easy to locate, download, build and install software. It also supports browsing source code, developing
Installing Everywhere? (Score:2)
Re:Installing Everywhere? (Score:1)
The other thing is Linux users like to just untar their stuff and run it. Installers can be a waste of time. The thing is, it is better to waste the time of a few savy people than to make it d
Not open source but... (Score:2)
To install or not to install (Score:3, Informative)
But in general (if you are not running under an interpreter or emulation layer) all applications should install in a compatible way on any system, even when that is quite different from a system to another. So on Unix install in a reloctable directory tree with
The usual way to do that is to prepare make targets (such as "make debian" and "make redhat" and use the defualt packaging system everywhere. Not that I would know how to do that on Windows...
You will have to distribute sources or build it yourself on each platform, and that represents the real problem. Getting the make targets right is the easy part - many free software applications contain that, and all distributions come with nice examples.
(Besides, Debian's Package Builder [debian.org] makes for an excellent multiarchitecture (11!) compilation cluster and should be a good reason to provide and mantain debian packages.)
Re:To install or not to install (Score:2)
home growns system (Score:2)
If you support several platforms then you have to package differently for each and maintain for each. If you have a home grown system like us we have one system that works on all the platforms we support and it is easier to deal with. Basically it is a set of bourne shell scripts to untar our stuff from cd to disk and setup a few things on the system like in teh /etc dir.
portability before packaging (Score:5, Insightful)
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
* 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
* 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
Re:portability before packaging (Score:1, Interesting)
This permits you to test software on linux, *bsd, Tru64, HP-UX, and OpenVms systems.
Harware available is pa-risc64, alpha, ia32 and ia64.
I also found a new project that could be interesting to replace autoconf
http://sf.net/projects/premk
Hope this stuff will help
distro's job (Score:3, Insightful)
You should focus on the source code, and work with red hat, debian, gentoo, *bsd, etc to make sure your code is easy enough to compile and for them to package.
Some advice for Unix systems (Score:4, Insightful)
If you decide to do it anyway, one tool that can help you is checkinstall [asic-linux.com.mx]. It monitors the standard make install process and can create several kinds of packages. I doubt the quality of the generated packages is very good though, and you still have to take in account that different distributions have different policies.
Also, make sure you don't waste effort creating packages for distributions that already include your program. You mention DEBs, but whatever your program is, I'm pretty sure Debian already includes it :)
Makeself is nice for Unix. (Score:3, Informative)
Never used it for windows.
Re:Makeself is nice for Unix. (Score:1)
hmmmm.... (Score:2)
Include a script / batch file / EXE / binary / whatever along with a compressed archive inside the main archive:
ie:
CoolSoftware-1.0.zip
contains:
package.tar.bz2
setup.exe (windows)
setup.sh (unix)
INSTALL.EXE (vms)
then your install program figures out what the heck to do with
Other than source, release Slackware packages. (Score:2, Informative)
Hmm (Score:1)
Why "install" at all. (Score:2, Interesting)
Re:Why "install" at all. (Score:1)
tarballs (Score:2)
There's a feature of GNU autotools that lets you make dist to roll a tarball of your package. Very easy, very neat and you don't have to worry about installers when you send source code.
A-A-P (Score:2)
Vim's author, Bram Moolenaar, is working on a multi-platform software installer/maintainer called AAP [a-a-p.org]. It's still young, but might be what the OP is looking for.