Why does new software force me to upgrade my version of Linux to get new libs?
I'd like comments about an overall problem I find with Linux software that I hope you can help me with. The problem is this:
When I install a Linux distribution (in my case, Mandrake 10.0 Official), I want it to be stable and to use it for a long time without needing to upgrade. I get to know it well, and I'm willing to give up features that don't appear until later versions. By this I mean basic features like using KDE 3.2 instead of the leading edge KDE 3.4, or not using the latest kernel.
However, I want to be able to upgrade individual programs. When some new Tetris game comes along, I'd like to be able to run it.
However, when I install this new game (or whatever program), it wants to rely on newer libraries than I have. For example, in Mandrake I use "urpmi" (I think it's "apt-get" in Debian, "yum" in Fedora, "yast" in SuSE, "emerge" in Gentoo, etc.) to grab (say) Tetris-v2, and suddenly it says, "To use Tetris-v2, you also need to install Graphics-Library-v3.001, but you only have Graphics-Library-v3.0!" Well, I'm sure that the game itself doesn't actually *need* Graphics-Library-v3.001, just that whoever compiled the RPM package happened to use v3.001, and so now I, too, need v3.001. So now, I have to upgrade to Mandrake 10.1 just so I can install Tetris-v2! And this upgrade cycle will never end: when Tetris-v2.1 comes out, all of a sudden I have to go to Mandrake 10.2 (or Mandriva LE 2005 or whatever they want to call it).
But I don't want to install Graphics-Library-v3.001, because all my other programs use the older v3.0 just fine, and I'm not going to break everything just by overwriting the library with a new version.
One possibility is that I compile my own version. I get the source code for Tetris-v2 and do the "configure; make; make install" thing. I've never really done this before, and it sounds rather scary, but I'm getting close to the point where I'm forced to do this. Some questions: Does this work? Usually? What happens if something goes wrong --will I be able to tell how to fix it? Is it easy?
But what I can't understand is: why can't there be multiple versions of libraries? Why can't I have Graphics-Library-v3.001 *and* v3.0 at the same time? Apparently the answer is that the library files have the same name (e.g. a file in both of the Graphics-Library versions might both be called '/lib/graphics_library.so.3' so they can't both exist at the same time), but why??? Also: when you run that Tetris-v2 game, there had better be a file named '/lib/graphics_library.so.3' on the computer; if you rename it to something slightly different, like '/lib/graphics_library.so.3_modifiedversion', all hell breaks loose! Why??? Why can't software look for a file named, say, './Tetris_graphics_library', which would be a symbolic link to wherever the real library is located? Why am I locked into using a specific library with a specific filename?
I'm rambling a bit, but I'm sort of thinking out loud. I want to break out of this upgrade cycle. Your comments are welcomed.
|