dll-hell versus dependancy-hell


Page 1 of 2 12 LastLast
Results 1 to 15 of 16

Thread: dll-hell versus dependancy-hell

  1. #1
    Join Date
    Jan 2004
    Location
    boston, mass USA
    Posts
    1,878

    dll-hell versus dependancy-hell

    so im not sure where to start with this thread.

    I thought about bashing linux, but that never gets a positive responce.

    I also thought about a poll, but didn't want to spend the time.

    I also thought about praising Windows, but that just sent chills down my spine.

    so i ended up here:

    Why, OH why, can't the developer of an open source project simply include the dependancies with the source of his/her product?

    Lets say I want to install xyz from company abc. Their product requires lib.123. Why can the abc company simply package up lib.123 in with their rpm, or tgz?

    Now I know linux is about choice and that I can install lib.123 from where ever, but, who would? Most people, I would assume, go to google, find the lib.123 project and install it from there.

    Then, heaven forbid THAT lib.123 require yet another dependancy!

    And if linux is about choice, why can't abc say, "we have kindly included lib.123 for you, and you can choice to install our version or not, but you will need some form of it before xyz will work".

    I know apt, and slapt, and yum and all those happy installers work, but I can't install apt without 10 other dependancies! So to install the nice installer one still has to fight with dependancies.

    Now, this thread is labeled dll-hell versus dependancy-hell....so which is worse?

    MS programs install nicely and include all the pieces of other apps that the core app needs, but they all fight over dll versions.

    Isn't this similar to the dependancy-hell linux struggles with?

    There must be a reason for this since I cannot possibly be the first person to think of this.

    So in the end, why cant developers include ALL the dependancies with their source code or rpm?

  2. #2
    Join Date
    Aug 2001
    Location
    Somewhere, Texas
    Posts
    9,627
    The difference is, most of the time in Linux your get the source code and need to compile it for your system. There are so many diffences between ALL the versions of Linux you can not safely make assumptions of who has what or even where it is!

    And being source code, you need to rcompile and to compile you need specific libraries that were used in the creation of the application.

    In Windows, the programs are distributed in binary format (pre-compiled) so there is no need for various libraries and applications. The DLL problem does get simular when the maker of the software uses a different version of libraries then what is distributed with Windows. If you were to compile any source code on Windows you will have the same problems you have with Linux where you need the proper libraries and tools installed to compile.

    Big problem with DLLs in Windows is that some software makers assume everyone is running the same OS and has the same file structure...and if there is a public DLL that the software needs a more current version (which is backwards compatable, assume) they sometimes overwrite the system DLL with theirs (hello, virus/malware alert!)

    'Smart' Windows programmers learn to keep their own DLLs in the programs directory and don't touch ANY system libraries, but they are few and far between.

    If you were to get Linux apps in binary format with pre-linked libraries you would not have much of a dependancy problem as they have been taken care of internally. Typicaly in Linux it's better to use the libraries on the system then a foreign one for performance and stability due to the differences between almost every system.

  3. #3
    Join Date
    Aug 2002
    Location
    Essex, UK
    Posts
    937
    Not to mention the fact that if every program included the dependencies it required, downloads would be gargantuan, and duplication over your system would be needlessly common. Taking a look at something like GTK+2, that library alone would add at least 10Mb to each package that required it. It's much simpler and easier to use a package manager; it seems you already tried to install apt and slapt on your system (suggesting that you're running Slackware). Slackware's package management system - currently swaret as far as I'm aware - deals with dependencies, but not as well as other distributions such as Debian and Gentoo. If you're annoyed at the constant dependencies of applications that you can't seem to resolve, I would suggest a distribution where the package manager is more central to the distribution itself - Debian being a prime example, where every file is in a package and removable.
    Registered Linux User #325947

    Check out Feather Linux, my distro.
    (Yes, it's shameless self promotion, deal with it )

  4. #4
    Join Date
    Jan 2004
    Location
    boston, mass USA
    Posts
    1,878
    thanks for the reply, but

    if app xyz will absolutely not run without lib.123, why could you not include lib.123? Is lib.123 on one distrobution different than lib.123 on another? My understanding is that it is not. It may come as a package or rpm for Redhat, but as a tgz for slackware, but is it not the same lib.123? If they included the source for lib.123, could it not be compiled right before I compiled the xyz program?

    Also, if I go to download xyz and I pick the Redhat RPM for install, couldn't they package the Redhat version of lib.123 with the Redhat version of xyz? Sure that is more trouble on the developers part, but if they want me to use and run their program, making the install as easy for me is in their best interest.

    I was quite frustrated when I started this thread, but am honestly looking for a technical explination, not just to rant.

    I have been trying to install HP Support tools on an HP server running RHES 64bit. It requires libxxx and suggested installing openssl. But i couldn't install openssl without this and that. I also couldn't install apt with 7 different other things. It was quite annoying and still isn't fixed.

    thanks for your feedback.

  5. #5
    Join Date
    Aug 2002
    Location
    Essex, UK
    Posts
    937
    Well, a library can be a multitude of very different beasts when compiled in certain ways. As you seem to have encountered yourself with a 64-bit machine, one library compiled on an architecture won't run on others, but your point still remains that they could simply provide it with, say, a 64-bit version instead. Besides that, there are compile-time options which enable different things - for instance, some distributions patch libraries and so on (Fedora's kernel being a prime example), and some distributions such as Debian enable every option available, whereas others opt for a mix of usability and speed.
    I guess there's no real reason why packages couldn't provide their own libraries (if you don't have them already installed yourself) other than that downloads would be very large, and the developers simply don't want to put the effort in. From their perspective, they've done their development on the program they conceived, and they don't want to spend time having to add libraries to their package, and answer questions and fix problems relating to them as well - all when they can just use a package manager.
    Have you tried using sites like rpmfind.net to find the packages you need? In my opinion, RPM is pretty ghastly, and frontends like apt-rpm are simply workarounds for a package manager which is already lacking. To me, Debian's approach seems far better (although it's not really an option for your 64-bit HP machine): a mirrored system of packages, easily downloadable and updatable, constantly tested, and generally stable. Gentoo also has these merits.
    Registered Linux User #325947

    Check out Feather Linux, my distro.
    (Yes, it's shameless self promotion, deal with it )

  6. #6
    Join Date
    Apr 2001
    Location
    SF Bay Area, CA
    Posts
    14,936
    You've never used the Loki installer, have you.



    Search around for "ut2k3 speed libSDL" (I think) to find one MAJOR problem (as far as games go) with including all the dependencies with the installer. With UT2k3, they installed libSDL in the UT directory -- basically to make sure everybody was using a compatible version. But the version that they distributed was horribly slow, because it was compiled with g++ 2, and everybody's system uses g++ 3 now (at least I think that's the reason). Replacing the UT-installed libSDL with your system one (or removing it and using your system one) gained something like 20% performance on some systems.

    You can't include everything in your package, because if you do, it will completely break (or at best, not run quite right) for people who have systems different than yours.

  7. #7
    Join Date
    Aug 2001
    Location
    Somewhere, Texas
    Posts
    9,627
    thanks bwkaz, I had to go find the UT2004 mailing list email that Ryan Gordon talked about this

    > Wow, it wasn't on gcc3 already? You shoulder consider skipping to 3.4,
    > many people are using it with success, especially for targetting x86_64.

    Linux/amd64 and MacOS X used gcc3 already, but there were actually
    different codegen bugs with gcc3 that were easier to workaround in this
    context.

    The extra support libraries kept us off gcc3 for a long time, but now
    it's pretty fair to say that darn near everyone will have them installed
    now.

    As for gcc 3.4: Maybe in a few years. Let's see how this gcc does
    first.

    --ryan.

  8. #8
    Join Date
    Jan 2004
    Location
    boston, mass USA
    Posts
    1,878
    I'll admit i am still way new to linux, and I apreciate everyone's input, but it is still what bothers me most about linux.

    For instance, on the apt website, I don't see anything about needing any dependant lib's to use it or run it, but when i install it tells me i'm missing at least 7 things....which the website doesn't mention. So then I have to write down whats missing, find them stand alone or as part of a different package that was nice enough to include them (i installed openssl to add 3 libs for HP software to install), then install those libs, hoping there are no dependancies for....blah blah blah.

    This reminds me of another thread i started about "which distro" and most people picked their distro based on the package management, not stability or performance or quality. the number one answer was "I like distrox because of apt, or slapt or swaret".

    From what I have seen, this is the number one reason why linux is not more previlant....a user cannot simply find a software package they like, insert a cd and install. This is not another rant about why linux isn't everywhere yet, just a revolation I am having as I type.

    Any more input would be great, but thanks for all you've suplied so far.

  9. #9
    Join Date
    Jul 2002
    Location
    @ ~
    Posts
    188
    I'm going to take a completely different stand and suggest that its up to developers to provide links to the libraries they need. Too many configure scripts have failed with me resorting to google, because it didn't have a link inside. I agree with you in part, and say that almost every package's website should say 'By the way, program "foo" uses libraries "bar" and "oni" which you can find at bar.org and oni.org respectively.' or something like that.

    And I'm going to end this post with the typical "get gentoo" speech: Get Gentoo!

  10. #10
    Join Date
    Aug 2002
    Location
    Essex, UK
    Posts
    937
    Surely that should be:
    get gentoo && emerge world_domination
    Registered Linux User #325947

    Check out Feather Linux, my distro.
    (Yes, it's shameless self promotion, deal with it )

  11. #11
    Join Date
    Nov 2003
    Posts
    81
    Ummmm yeh....Gentoo, and stop whining.
    <><

  12. #12
    Join Date
    Aug 2002
    Posts
    65
    happybunny,

    I think your questions have already been answered in this thread by you and others. But I will relist some and expand on one or two.

    If developers included the libs used and required by their applications to run in their distribution files (be it RPM or whatever) downloads would be huge. This wouldn't be a problem for someone who doesn't already have those libs/shared object files or whatever as they will need to download them anyway. But, what about people who already have them installed on their system? Do you really want to redownload QT or GTK+ with every program that uses those libs?

    To further on that - At which point do the developers stop including required libs. Lets say program A requires lib/so B which requires lib/so C which requiers lib/so's D, E, and F which have dependancies of their own. In other words what good does it do for the developer to include lib/so B with their program A if you don't have C D E or F on your computer. So they would have to include those as well. Your download for a 1 meg binary file could have just turned into a much much much larger one.

    Then ofcoarse different distros put various items in different locations from the others. Thus doing this would add a huge headache to the people creating the various packages to include all of the required libs and then have the package install those libs where each various distro wants it.

    The last thing I will mention, if the install files did include the various required libs/so files (which would require most of them to be sold in a store on CD like windows programs as downloads would be to big) your dependency hell would turn back into the DLL (dynamic linked library) hell that you mentioned.

    I will agree that various programs should put what dependencies they have on their various websites instead of making you try to install it first just to find out that you will need to download something else. However, on that note I will do as others in this thread have done. Go install Gentoo and you will never have to worry about this again.

    -Michael

  13. #13
    Join Date
    May 2003
    Posts
    1,241
    Originally posted by happybunny
    i installed openssl to add 3 libs for HP software to install
    Well, I just have to ask the question. Why the heck didn't you have openssl installed already?

    Unless you're running an uber-minimalist distro, you should already have it.

    From your sig it looks like you're running slack. If so, go grab your CDs, and install _every_ package. It will really help, I promise.


    Personally, I almost never run into dependency issues. I'm on dialup, so swaret really isn't of much use except for the security updates (which, I should add, it manages excellently). I download and compile the software I want. Most of the time I already have everything I need. The only program I have had much trouble with lately was dvd::rip, and that really was a battle...

    And if a developer was to pop on even a few dependencies, the package would certainly rise in size significantly. With my slow connection, I can tell you that a discovery that I had downloaded 20MB that I did not even need would put me in a very bad mood indeed.


    I can also tell you that dll hell is _much_ worse. I heard a sorrowful tale once of a printer driver that overwrote one of microsoft office's dlls. It wasn't pretty. Office just crashed without an error. Fun stuff.

    ~psi42
    Last edited by psi42; 08-20-2004 at 04:32 PM.

  14. #14
    Join Date
    Apr 2001
    Location
    SF Bay Area, CA
    Posts
    14,936
    Originally posted by happybunny
    For instance, on the apt website, I don't see anything about needing any dependant lib's to use it or run it, but when i install it tells me i'm missing at least 7 things...
    Well, I think the majority of people that use apt use it because it's their distro's package manager to begin with.

    I don't believe a lot of people try to install it on a basically RPM distro like Fedora, though I could be wrong. Debian, for instance, uses apt "by default" -- all of apt's dependencies are installed by Debian when you first run the Debian installer.

    For other distros, there is likely already something available for an apt-get workalike. Gentoo has emerge (and yeah, I know, it builds stuff, not just installs it, but whatever), Mandrake has urpmi, and other RPM distros likely have other RPM auto-install-dependencies tools.

  15. #15
    Join Date
    Aug 2001
    Location
    Somewhere, Texas
    Posts
    9,627
    Originally posted by bwkaz
    and other RPM distros likely have other RPM auto-install-dependencies tools.
    YUM YUM!

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •