If all applications came in their separate self-contained packages
GeneralThis forum is for non-technical general discussion which can include both Linux and non-Linux topics. Have fun!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
If all applications came in their separate self-contained packages
I am really not sure how to ask this question...I hope someone understands me !
As we all know in linux applications are all interdependent on each other , libraries are shared , etc.
My question is , what if all linux apps came with their own libraries, and installed them in their own separate folders (windows style) . How fat would the system get? What about performance?
I believe pcbsd already has such an implementation, but am sure . Is there any linux distro which has done something similar?
Windows uses shared libraries. It uses them extensively. All modern operating systems do - and that is how you want it. Without shared libraries, upgrades would become almost impossible.
An upgrade to the kernel causes many of your self-contained apps to break, so you have to upgrade all of them rather than upgrading the one shared library that they all should have been using.
Shared libraries are the way to go - and there are good reasons why.
And, as far as that goes, Linux apps are far more encapsulated and independent than Windows apps are. "Windows style" means totally confused, mixed up, stirred together in a big pot, and inseparable.
There's a standard system-engineering reponse to this kind of question: "What problem are you trying to solve?"
Yes, you could duplicate the required library functions in separate folders for every app. But you could also write the apps so they have everything built in--no dependencies required.
Downside: Use up more space on your system and make life more difficult for developers.
Benefit: ?????
Windows uses shared libraries. It uses them extensively
I know.
Please note that I am talking about applications running on the platform and not about the platform itself. A application on a windows installer contains all necessary libraries and dependencies in the installer(most of the time)
Currently , installing and running applications on my distro released in 2008 (pclinuxos) is impossible without a dist-upgrade. while I can virtually install and use any modern application on a windows OS released in 2001. I don't need to update windows, I can just download the independent *.exe file and just install without having to update my OS
not having to dist-upgrade every year. One could simply load a 5 year distro and just grab the static packages. I am pretty sure thats how pcbsd rolls.
IMHO it would be great if there is a nice popular linux distro that follows suit
The concept you describe is called an 'application directory' or AppDir. ROX-filer makes good use of them.
You can build a pretty complete system using them, but usually libraries which are 'expected' to be on the system are installed normally. Only libraries which are likely to be needed only by the 'packaged' application should be kept inside the AppDir.
The idea of including every lib needed by the application in the AppDir would get you a *very* big system quickly!
You can get ROX-compatible AppDirs from the ROX-Filer site, but they all need python. You can also check out some of mine, which use bash instead of python. You can use AppDirs with nearly any window manager, but ROX makes them even more capable.
Anyway, you can find binary AppDirs (some are just wrappers to normally-installed programs) here: http://distro.ibiblio.org/pub/linux/...nload/AppDirs/
I've just looked and see that I don't have my source-based AppDirs uploaded, but I'll send you the sources to any of thos above which you want. AppDirs which contain their sources get compiled on your system the first time you run them.
I know.
... I don't need to update windows, I can just download the independent *.exe file and just install without having to update my OS
Excuse me? Have you attempted to use a .NET program yet? What do you think .NET is apart from a shared library? And it massive!
And how many windows apps have you installed that only come as an exe? Very few. Most carry DLL files etc, and upgrade existing system files without your permission, and without regard to compaitibilty with other apps that are already using them. The number of times that I've installed one windows app only to find that the new version of a dll has broken something else!
The only reason you thing that windows apps don't upgrade shared libraries etc is that it doesn't tell you about it.
Linux does self contain things. Any commercial software developer that wants to reach the broadest audience will self contain as much as they need to within reason. X libs, standard C libs, and open gl for example would not be self contained. In this respect linux already meets what you call 'windows style'. As for things like games... try installing Final Fantasy 7 on to your windows xp or above box. It's going to have a hard time running on anything other than windows 98 with old graphics drivers.
Linux does self contain things. Any commercial software developer that wants to reach the broadest audience will self contain as much as they need to within reason. X libs, standard C libs, and open gl for example would not be self contained. In this respect linux already meets what you call 'windows style'. As for things like games... try installing Final Fantasy 7 on to your windows xp or above box. It's going to have a hard time running on anything other than windows 98 with old graphics drivers.
I think I understand what he means, he is talking about DLL hell
having 50 version of the same lib on the same box, this can happen on Linux as well, but usually never does because of how the packager works and usually commercial apps are statically linked to prevent this. Yes Linux would get massive and very confused if you installed every version of glibc, every version of the kernel headers. this would also eat up space.
(Thats probably why Vista is 12~14gigs because they have a lot of apps that are all in ones) eg: svchost, explorer, run32dll.dll if you take anyone of these down the whole OS literally pukes up. Under Linux this can only happen if you kill init.
Off topic: Explorer actually has a recovery feature in Windows XP. When it pukes and crashes (I sometimes get this once a day) your start bar disappears and you can't launch any new applications until it recovers. Which surprisingly takes less than a minute even on old slow refurbished dell machines. Before windows it self would have to be rebooted. I've even killed the explorer process on Windows XP. Does the same thing as when it crashes.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.