I had an extremely frustrating day yesterday. Literally the whole day was spent in doing something as trivial as installing PHP5 on our server machine. I use XAMPP on my Windows laptop for LAMP development and switching to PHP5 on it was a breeze. So I wasn't anticipating any problems on Linux as well. Boy, was I wrong! It turned out that PHP5 doesn't bundle with MySQL client libraries anymore. So MySQL support needs to be explicitly compiled in. Fine, lets compile PHP5. Of course that didn't help. Now Apache started crashing. And Pear DB.php package started crashing silently. Turns out Apache must be compiled with prefork MPM (whatever that means). Apache was pre-installed on my server as part of setup. I could only guess that it was compiled with wrong options. So then I ended up downloading the source code for Apache and compiling it with the right options. Did I tell you I had to clean install Fedora also on my server before I could install apache? After a full day or compiling and messing things up, my machine was practically unusable.
Sigh!!! Yesterday's experience made me wonder why is that there is no MSI style setup system for Linux. Even open source technologies like Apache and PHP install very smoothly on Windows. Of course, Windows has its own issues with dll-hell and apps breaking other apps (a lot of this will be fixed with .NET 2.0 and Longhorn). Being a closed system also helps I guess.
On the other hand, RPMs and DEB packages in Linux come closest to MSIs in Windows. My recent experiences have made me wary of using RPMs. I need more control on the compile options. Linux also suffers from the fact that there are numerous distros. Supporting each distro with a single setup program is virtually impossible. Even supporting two differet versions of Windows becomes a nightmare for Microsoft. Then, licensing issues crop up. For example, PHP5 doesn't ship with MySQL client libs because of some change in licensing policy. So if you want MySQL support, compiling from source seems to be the only option.
In my humble (and probably naieve) opinion, single click installs are a key to getting wider adoption of Linux. Even as a developer, I find having to compile source code unpleasant. For a home or office user, that is unthinkable. The Visual Studio setup wizard makes it extremely simple to create an elegant looking setup for your application. We need something like that for Linux. If compatibility with all the different distros is an issue, then maybe some sort of consensus and standardization is required. From the point of view of an ISV who developes software for Linux, providing support can become a nightmare if all the hundered different distros need to be supported.
I guess that is enough ranting for the day. I strongly believe in being technology agnostic. I develop on both Windows and Linux platforms. So even though I might be coming across as a Linux basher, I am just a frustrated software guy letting off some steam :)

