Here's an idea - how about everyone stop using package systems like RPM, apt-get, pkg_add, yum, and friends. How about we just make text mode interface installation programs and ship them with our download. And for GUI programs, ship a GUI installation program with our download.
You want to uninstall version 3.4.2 of programXYZ? Open up the frigging uninstall program that says uninstall-programXYZ-3.4.2 which was shipped with the program in a gzip or zip file on the internet.
You want to install version 3.5.7 of programXYZ? Open up the frigging install program called install-programXYZ-3.5.7 that was included with your download from the author's website.
Have you found a nice program you want to install on your server, which has no GUI available? Take the URL, copy it, and paste it into your server SSH/Telnet window. And download it. Is it that freaking hard? Or must we be so lazy and rely on lazy tools like:
Is it a command line or server related library you are installing? No problem, the installation program was a text mode installation tool - so you don't have to open up your GUI.
Was it a GUI tool you were installing? No problem, the installation program was a GUI installation tool.
If there isn't a framework for building nice text mode user interface installations, then someone should build one. Same goes for GUI installations.
All server type programs (such as command line tools) should be installed using text mode user interface so that we don't have to fire open an x-window manager just to install the package on some remote server 5000 miles away. Desktop GUI programs should be installed with a GUI installation program. Make sense?
Oh, and guess what - each installation tool also includes an uninstallation tool too. Is it that hard?
Centralized packaging systems are full of outdated buggy crap because the centralized package teams don't have time to check millions of software releases.
If I do a debian APT-GET stable or a freebsd PKG_ADD of program XYZ, I have an old program from 1994 that gets installed. For Christmas sake! I wanted the 2006 version, not the 1232 Before Christ version.
There is no way a centralized team of apt-get folks or RPM folks or pkg_add folks can possibly determine which programs are "stable" or "testing" or "unstable". This is like trying to survey the entire world by phoning each person in the world and conducting a survey! Impossible! Mathematically impossible.
There are millions of programs and releases happening each day. A centralized team cannot possibly determine what is stable and what isn't. This is a waste of resources.
If I was working on the apt-get team maintaining all this package nonsense, I'd demand $80/hour for doing such shit shovelling. Do those guys actually maintain apt-get for free, btw? What a waste of resources and time.
The internet is meant to be managed by a bunch of people. An apt-get or pkg_add or rpm team destroys the rules of the internet. It's a centralized website with a bunch of outdated stuff. Websites are not central! The web, and software is throughout. It is out there.
An installation CD or a network install should include a bunch of useful programs that I can install.
But constantly maintaining a package system that anyone can have access to by simple typing in
is a waste of time! Because it is mathematically impossible to maintain such a centralized beast.
Unix variants such as debian, redhat, suse, mandrake, gentoo, freebsd, netbsd, openbsd, and others are all fighting with each other. Each has a different incompatible package system. How is unix supposed to be a PORTABLE POSIX STANDARD operating system when their frigging package systems aren't even portable?
Here's an idea so that all the unix variants can get along and succeed:
- stop using bloody package systems
- start using text mode and gui installation programs
- ship an install and uninstall program with the download
And no, the uninstall and install programs don't have to be cute GUI programs. They can be text mode installations too. For example for server tools, one shouldn't have to install the program using a GUI. Fine. So ship a text mode installation with your download.
And for crying out loud, stop shipping SOURCE that one has to compile.
98.9 percent of people don't have to or want to compile your stupid program. If 1 person on earth really needs to compile your program, then offer it as a separate download.
How to manage which DLL/DSO's get installed?
Make a list of all the DLL/DSO's that your program relies on, and during the installation check the user's system for these files. If they don't exist, automatically download them from the net or include them in your download that was shipped to the user.
Only the software developer who wrote the program knows the intricate details of what the software relies on. Giving the program to some centralized apt-get or rpm team is just going to slow the entire process down by duplicating or even tripling work that only needed to be done once by the software developer originally. Some lunatic on the rpm or apt-get team needs to verify what the software relies on and figure out everything that the software developer has already figured out. And rpm, yum, pkg_add, apt-get folks need to repeat the process over and over again. It's a waste of resources. Package systems that do the same thing as an installation program. Why not just ship an installation program once, instead of shipping 10 different packages for different unix variants?
Text mode installations should run on any unix system - and almost all desktop users have some common GUI installed - so ship a text mode installation with your download for server related non-gui stuff, and ship a gui mode installation with gui-related stuff. It's as simple as that.
As an example, I always use the freepascal text mode Tarball/Gzip installer program instead of doing this nonsense:
apt-get install fp-compiler
The apt-get package for freepascal is out of date. It was 1.9.6 when I needed 2.0.X and it was in some unstable section. Why? Because a centralized team cannot possibly keep up with all the latest releases. The only problem with freepascal's lovely text mode tar/gz installer is that I don't have any way to uninstall fpc in one shot. I have to go around deleting things manually. There should be an uninstall program with all text mode installers in my opinion.
I Admit To Liking Package Systems But...
Yes, I personally like being able to type 'apt-get' on my keyboard since it is so easy to do. But, the reality is it is a PIPE DREAM and not possible in the real world to have centralized packaging systems. Apt-get and the other package systems are a pipe dream. Don't fall for it. I did, and I regret it. And I feel sorry for the people that have to maintain these centralized package systems without getting paid to do it - because that is a lot of wasted volunteer time.
The problem is you have several different packages systems - and they are all reinventing the wheel. Better off just shipping a universal installer program in a tar gzip or similar. Then, instead of the developer wasting his time submitting his package to 50 different package systems.. he only needs to ship one installer for all linux distros, and one installer for BSD, and one installer for Windows. For example freepascal installer executables should run on any distro of linux.
Common Unix/Windows Package Management
What's an idea to solve my package problem?
Have a directory of programs. People can submit their programs to a directory (kind of like a repository). This repository is one single repository for all unix systems. None of these separate RPM/APT/YUM/PKG split up websites. Just one single directory (and mirrors) for all unix systems and even Windows maybe.
At this repository, one can download any program he wishes.. and when he downloads the program he gets a text mode installer for his operating system. He gets a text mode installer when he types in:
repo-get fp-compiler BSD
repo-get fp-compiler LINUX
repo-get fp-compiler WINDOWS
If worst case, he gets a GUI installer and first has to install KDE/Gnome or whatever. But preferably a text mode installer was available so that it would run on any unix system. If the operating system of his choice doesn't yet have an installer available, he can request it or even make one himself.