It wasn't me. You can't prove anything.


2007-02-08

How to install software
It never fails to amaze me how may ways there are to install software. Even one one OS there are so many solutions. They all have their problems and most of them are simply lacking.
There are two concepts regarding installing software. There is the package manager. If you are on windows you just said "a what?" because Windows doesn't do well with package managers. At my old company, they wrote their own package management system  They called the software shelf. It was a web page that linked to all the installs. It aloud you to install sanctioned software packages and upgrade as you went.
Well, most other operating systems have these package managers built in, or available. They use repositories that hold the individual packages as needed.
The other concept is the one most folks are familiar with. It is the single package install. This is where you put a CD in the drive and it comes up asking you a bunch of questions and installs some software. Or, you download a package from the net and install it on your system. This is very hard to maintain. Things get broken when packages conflict. Things get broken when one package removes a shared file. Things get broken when different versions of things conflict.
If you bought a computer and stuck it in the closet and ever turned it on. It would run just as well in five years as it did that first day. When is the last time you had a computer go five years without having a melt down somewhere along the way? The above problems along with a few others are the reason computers get slow and start breaking as they are used.
If you never install or remove any software, the computer will run better for longer. If you lock the users out of the engine compartment, the can't destroy things as easily. But people need to upgrade and keep up to date virus detection, spam detection, firewall, ad removal and other kinds of software on a daily basis. These are layers upon layers of things that can go wrong.
In Linux, there must be ten different ways to bundle up software for distribution. I use YUM/RPM. I also use apt-get/DEB to a lesser degree. There is the one in Linspire. I'm not familiar with it. SUN has their own on Solaris. I hear it is lacking. YUM is the package manager and RPM is the method of installing the individual packages. Apt-get is the package manager and DEB is the method for each package. None of these are compatible with each other. They claim to jump the gap, but there are always troubles in my experience.
Why doesn't Windows have a package manager? Well, they do, kind of. Windows has an installer with no repository support  tha I'm aware of. It is the Windows Installer. However, when you base your existence on commercial proprietary software, no one is going to agree to put their install in a repository with every one elses stuff. There could be a repository for open source software for Windows. That will not happen because Microsoft would have to support it in some way. If MS decided not to (which they have because their investors won't allow it) it will not happen. I bet you could get YUM and RPM to work on Windows with some work. You could make repositories that are for win32 and win64. It sounds easy enough to me. Well, easy to some one who knows it well enough.
When I want to update mys system at home to the latest software versions of just about everything, I type in the following command.
sudo yum -y update
or
sudo apt-get update
Those commands will update the minor version of most software packages. If I want to cut a bit deeper, I use the word "upgrade" in stead of "update" and a further leap of version numbers will be taken.
When I want to uninstall a package the command is something like the following.
sudo yum remove <package>
That's it. The package manager worries about all the required packages and libraries. Sometimes there is a dependency that needs to be resolved. That is a pain. Nothing like it was before YUM or apt-get.
That is it. All the software on my box that I installed using YUM gets updated in the background while I get on with my day. Somethings things go hey-wire, but any time you make changes stuff freaks. I have to say, it is much better than keeping everything up to date by hand.
So, who keeps the repositories up to date? Right now it is the community of Linux users who sign up and give a few hours a week to the cause on their own time. I believe Linspire has paid people doing it. Red Hat may have people on staff who help out. I bet most of the companies involved in enterprise systems contribute in one way or another. It is the high end users out there who do the trudge work though.
To install a piece of software you first must decide if there are any prerequisites required. These are called dependencies.  On Windows and other non repository systems this is pretty much a manual step. you don't know until you try to install or, for the love of God, read the instructions. If you are on a repository system (YUM or apt-get for example) the package management software tries really hard to install all the dependencies and their dependencies and their dependencies before installing the package in question.
In Windows (and other closed source projects) most programs include the dependencies in the install package. This can cause conflict. It is referred to as DLL hell. In open source OS projects most of the dependencies are not included because of licensing. Open source says you can freely distribute a package unless you make it part of another package that you sell. Thus, most. open source projects have a long list of all too separate dependencies. Without a package management system you are in trouble.
A good example is a sound editing program that I installed on Windows many years ago. it could not support MP3 directly because of lichening. MP3 is a proprietary format and you must pay to use it in your program. When you clicked on "save as mp3" a dialog box popped up telling you to got to www.whatever.com and download a specific DLL file and put it in a specific spot. They could not put it there for you because that would be redistribution. You had to go get it yourself.
I'm sure any one who has made it to this point is a confirmed geek. Let me guess, Nat, my parents, and most random people have dropped off before this point. Maybe Adam and Ken (Viper) made it this far. None of my other geeky friends read my blog. Let me know in the comments.
Back to the subject. . . There is no silver bullet. Every single method of install and removal has problems. They mostly have the same problems. Don't put on enough, take off too much, or break something that was working. There is a movement in the world to have a one folder install called zero install. All dependencies would be linked from withing the folder and to run the program you would just double click the folder. When time comes to remove the program, you delete the folder.  it is very easy to find the dependencies that have no folders pointing to them. You could choose to remove them or leave them there. This is a Utopian idea that might actually work. it would eliminate DLL hell and would make the  Windows Registry redundant. It would make the dependency torture easier. If you need five different versions of a library on your system, just rename their folders and point your link point to that one copy. Hard drives are cheap.

No comments: