Before I begin, some basics:
There are a lot of arguments – pro and con – regarding Microsoft products and the Microsoft environment.
There are a lot of arguments – pro and con – regarding Linux and the Linux environment.
Yet many people seem to see a lot of these arguments as Apples vs. Apples, when it isn’t. (And let’s not even go into the whole Apple COMPUTER company debates).
- Microsoft makes both operating systems (OS) and applications (Word, Excel, IIS).
- Linux is an operating system – more properly, the kernel (foundation) of an operating system.
- Linux doesn’t make applications. Many apps are built in the same way and with the same spirit as the Linux kernel, but Linux != apps.
So saying “Linux is better than MS” (or vice versa) is really a misnomer, but – in a broad sense – makes sense.
I’ll be using the broad sense for this entry.
Basically, Linux is missing the boat with one of the largest groups that it should be wooing: The just-below Uber-geek type.
Such as me. Sure, I rebuild Linux boxes; I do most things from the command line and so on.
But it still seems like you need to know the secret handshake to do certain things on Linux – things that will foster wide acceptance – that are trivial on Windows, for example.
I was looking into upgrading the PHP (essentially, an app that sits on top of the OS) on one of my boxes to a more current version. Since I’m past the dot release stage (4.1.x to 4.3.x), there is no simple patch.
How to upgrade?
Damn good question.
Essentially, it appears – and I’m still not certain – that I have to back out all my PHP stuff (PHP itself, PHP ODBC, PHP JDBC, PHP mySQL, PHP Postgres, PHP dev tools and so on) and do a new install.
But wait – there’s more!
The new PHP requires certain libraries and so on, other dependancies that are not necessarily a 1:1 update relationship with the old edition.
Will these new, non-PHP installs mess up something else? Will my system even see the new PHP?
And so on.
MS, with all the install wizards, makes it pretty easy to upgrade even from Win95 to Windows XP, for example. Here on Linux, I can’t easily figure out how to upgrade a point release product.
That’s not good.
It’s getting better. Debian’s aptget and RedHat’s RPM are good starts, but there is still that wide middle ground – between really savvy users and really newbies – that is stymied by stuff like this.
Trash MS all you want, but its install wizards and so on make installing/deinstalling stuff pretty much a no-brainer. Yes, you can rag all you want about how the wizards are necessary because of the seven circles of hell known as the registry and so on (and that’s valid!), but at least MS has it.
I – a pretty geeky dude – want to be able to easily upgrade stuff. It can be command line (I use CPAN, for example, all the time for Perl modules – not intuitive but it works), but I need the following:
- Full package of all items that might be necessary for the upgrade. For example, the newer PHP requires some non-PHP library. Include it
- A way to view what you will be installing ahead of time: This can be a list of files, but it should also say what it satisfies – so I can install this ODBC driver and see that it satisfies the mySQL driver need or whatever.
- A way to narrow the install: Database drivers for DB A, B and C are part of package. I don’t use database B – a way to say don’t install this one
- A way to test to see if the install – as selected – will go in cleanly: RPM has this already; echos unsatisfied dependancies, and so on.
- Detect old versions of package contents and react: I’m installing PHP 4.1.2; I already have PHP 4.1.0 – echo a Yes/No question: Version 4.1.0 has been detected; upgrade(Y/N)?
Basically, the Windoze-like install features, though it does not have to have all the bells and whistles today (later, they will be expected by Linux GUI users).
Let me add or update something simply.
Because – right now – that is not an option.
And that’s a shame.
Again – I AM geeky, but should everyone who want to run a Linux/Unix system have to learn the complete get/make/install routine, figure out how/what libraries are/are needed and so on? It’d be like MS users having to care about DLLs.