8
exerceo
2y

Dependency hell is the largest problem in Linux.

On Windows, I just download an executeable (.exe) file, and it just works like a charm! But Linux sometimes needs me to install dependencies.

At one point, I nearly broke my operating system while trying to solve dependencies. I noticed that some existing applications refused to start due to some GLIBC error gore. I thought to myself "that thing ain't gonna boot the next time", so I had to restore the /usr/lib/x86_64-linux-gnu/ folder from a backup.

And then there is a new level of lunacy called "conflicting dependencies". I never had such an error on Windows. But when I wanted to try out both vsftpd and proFTPd on Linux, I get this error, whereas on Windows, I simply download an .exe file and it WORKS! Even on Android OS, I simply install an APK file of Amaze File Manager or Primitive FTPd or both and it WORKS! Both in under a minute. But on Linux, I get this crap. Sure, Linux has many benefits, but if one can't simply install a program without encountering cryptic errors that take half a day to troubleshoot and could cause new whack-a-mole-style errors, Linux's poor market share is no surprise.

Someone asked "Why not create portable applications" on Unix/Linux StackExchange. Portable applications can not just be copied on flash drives and to other computers, but allow easily installing multiple versions on a system. A web developer might do so to test compatibility with older browsers. Here is an answer to that question:

> The major argument [for shared libraries] is security, that if there is a vulnerability in a commonly-used library, then only that library has to be updated […] you don't have to have 4 different versions of a library installed

I just want my software to work! Period. I don't mind having multiple versions of libraries, I simply want it to WORK! To hell with "good reasons" for why it doesn't, and then being surprised why Linux has a poor market share. Want to boost Linux market share? SOLVE THIS DAMN ISSUE!.

Understand that the average computer user wants stuff to work out of the box, like it does in Windows.

Comments
  • 3
  • 5
    @jonas-w that's unfair. These problems are actually very sore spots in the Linux world. They have been for a looong time. Things are improving, yes, but the dependency mismatch still manages to bite me every now and then.

    That's why we have docker and snap - they solve this problem quite well.
  • 10
    In Linux, you usually work via your distro's package manager. You don't normally download shit from the internet, that's a Windows habit. Linux is not meant to be a Windows clone.
  • 2
    @netikras i'm using linux as my daily driver since over a year and never had a library/dependency problem.
    Because i only use the package manager and like @Fast-Nop said never like "windows download stuff on the internet" things.

    There may be some exceptions but it isn't something you encounter well once in a year.
  • 2
    @Fast-Nop that doesn't change a bit that the AVERAGE user has an aweful experience with package managers. People just wanna download binaries and run them.
  • 9
    @EdoPhoenix Nonsense, people don't want to search the web, hope that their hit isn't a fraudulent trojan infected fake site, download binaries and run them. That's a Windows workflow.

    In Linux Mint, you have the Software Manager with view on applications, not individual packages. In fact, when I explained that to end users, they replied "oh, it's an app store just like on my smartphone". Bamm, immediately familiar.

    Sure, you can also use Synaptic as GUI manager for individual packages, or even apt from the command line - depending on what you want.
  • 5
    As a an advanced, more tech savvy user, you are more likely to get into situations like this than an average user. For those users there's snap and the AppImage format (when available)

    But I completely understand what you mean and this has been a pain for quite some time. If you're willing to dive into something more advanced in exchange for keeping your system clean-er you can look at LXC. It's a local, bare metal virtual container. What I do is I made a development container that has the minimal common libraries installed and then I just clone the container if I want to try running some wacky application on it, or something from github, but I don't want all of it's dependencies sitting in my main system.

    It's not a perfect solution, far from it, but it can be used kinda like virtual environments in python at least. everything stays in there so even if you fuck up your system remains lightweight
  • 1
    Flatpak, Snap and AppImage are solutions to this, those have their own downsides though.
  • 3
    @jonas-w Been using Linux as my daily driver since 2008 and I've had a number of such incidents. Enough to know whether should I avoid installing a package just by looking at its name and version.

    ~30% of such incidents occurred when installing using a package manager. The rest - while installing packages manually, because either I needed a very niche software for 1 day, or someone on GH Issues said "use the latest version from the main/master branch, because the one you're using from your repo is outdated and we haven't backported our fixes that far", which effectively means either of

    - reinstall your distro to newest and hope that package repositories include version of your needed soft with the fix you need

    - try and compile the soft from source (master/main branch)

    - live without that soft

    - install windows and use a windows alternative

    All of which suck equally hard.

    @Fast-Nop FYI^^
  • 3
    @Fast-Nop yeah ok let me compare these 2 processes:
    Windows:
    1st I google for App
    2nd I find page that looks not fake
    3rd I download the App
    4th I run the App
    Linux:
    1st google the App
    2nd find page that doesnt look funky
    3rd ok its an App lemme check my distros app store
    *not there*
    4th Ok let me check package manager
    *not there*
    5th Ok let me add some remote realm then update my system update all dependencies and then download the App.
    6th realise it's not compatible or breaks with your distro or theme.
    7th realise that you never reach step 4 to 7 because almost everybody drops out after the 3rd step.

    Yeah it's totally better in a world of package managers and app stores for average people. Totally. And that ignores the whole quagmire that ensues when you have a single store/app front. Just look at google play store and the app store.
  • 2
    @netikras what distros have you used?
    If i remember correctly on debian and it's derivatives, i had some problems with outdated packages. Butt that was a few years ago. And since using arch for like a year, i never had problems.
  • 5
    @EdoPhoenix You're already wrong on step 1 for Linux. You don't google for the app on the internet in the first place. That's a Windows workflow.

    You know, if you want a system that totally works like Windows, then Windows will fulfil that requirement best.

    Also, have fun with the fake sites and with the system bloat induced by each app installing its stuff in parallel, and also updating it app by app - if the apps update their co-installed dependencies at all in case of security issues.
  • 0
    @jonas-w ubuntu and LinuxMint.

    have used RHEL professionally, but its repos didn't have such mishaps. Or perhaps I was just lucky, because.. you know.. it's RHEL. It's not meant to have lots of customer-grade packages available :)
  • 1
    @novasurp AppImages also sometimes complain about missing dependencies.
  • 2
    @EdoPhoenix Not only that, but package managers sometimes get outdated versions, such as a 2015 (!) version of the Kdenlive video editor that crashes seconds after it starts.

    Thankfully, Kdenlive's up-to-date App Image just runs without whining about missing dependencies. Can't say the same about Audacity.

    "GLIBC_2.27 not found". Answer at https://stackoverflow.com/questions... : "If you make any mistake in the process, you will render the system un-bootable.".

    What a joke.
  • 1
    @Fast-Nop Package managers sometimes get highly outdated versions, such as a 2015 (!) version of the Kdenlive video editor that crashes seconds after it starts.
  • 1
    @Fast-Nop exactly thats the point of lts and non-rolling distros.
  • 1
    *sigh* use the _right_ tool for the job
  • 0
    @Fast-Nop yeah mate that's the workflow 99.9% of the world uses and some snuffed up linux elitist will not change that. Ever.
  • 2
    @EdoPhoenix Nope. 99% of the world are perfectly familiar with the Linux workflow from their smartphones. Maybe you overread the feedback that I got from my end users on that one.

    If you're so hot on a shitty system, just keep using Windows. It has that crap, and a lot more.
  • 1
    And in general, the one group that has the most issues with Linux is neither end users nor pros, but the ones in between.

    Those who mistakenly think they know computers while they actually just know Windows specifics and try to apply them elsewhere. These folks know just enough to bork their system.

    As exemplified in the comments of this rant.
  • 0
    @ostream what you call mess is what I call freedom and useability. I fear a world were every program has to approved by some comitee at some company, like android and iOS today.
    I cannot fathom why you would advocate for a centralized software registry while you can first hand witness what happens if any company has control about what software can do and how can be used.
    You get google and apple employees dictating how things should be done. First coding techniques, then business practices, then politics.
    And no don't tell me this won't happen with your favorite app store if it gets popular, absolute power corrupts absolutly, you need no kings and queens for that.
  • 0
    @EdoPhoenix Not only that there are different distros with totally different repos - on e.g. Ubuntu (and Ubuntu based distros), you also have the PPAs, or AUR on Arch (and Arch based distros). You simply have no idea what you're talking about.
  • 0
    This looks like a package manager problem to me. In Gentoo, you can have multiple different versions of the notorious libs installed and other packages just use the latest version, they like.
  • 2
    @Oktokolo It's rather a problem of not understanding the whole idea of a package manager, bypassing it, then borking the system. PEBKAC.
  • 1
    While most distros does a great job managing deps through pkg mgrs, shit can happen.

    Generally you should look for packages provided by distributions or known good providers..
    on FreeBSD ports is usually reliable.

    I think Downloading like an installer should be last resort, maybe after compiling and sandboxing in jails,containers, snaps, flatpaks or appImages because libs required or provided may screw things over..

    With BTRFS and smth like timeshift or like pop os recovery you should be able to rollback.

    On OpenSuSE and Fedora it also creates an automatic snapshot for rollbacks just in case.

    FreeBSD has boot environments for recovery.
  • 1
    @lotd Timeshift also works with Ext4 (rsync), no BTRFS required.
  • 1
    @Fast-Nop true, might also be a better solution if backi up to a NAS.
    Wonder if BTRFS has smth like ZFS send / receive
  • 1
    @ostream yeah but if linux is ever gonna be highly popular with average people, one distro is gonna be having a lionshare, and that would be something like ubuntu. Which has the snap store so many people here are advocating for. And that one IS controlled by canonical.
    And as we can see live in action with android, 99% of people won't install another app store on their system other than the one shipped with it, which would in this example concentrate a lot of power in canonicals hands.
  • 1
    reminds me my first linux experience. friend of my installed Arch (because fuck beginners, right?) and i ended up with dependency hell within 24 hours
  • 3
    My two cents, I have used linux for 5 years now, few years professionally and last year was forced to use mac. I am pretty random about the software I use, and I only had problems with gentoo (which is normal :P).

    When I need software most of the time i first guess the name and try to install it by the main package manager, if that doesn't work I'll google for a official repository and install it that way, and if thaaaat doesn't work ill build it from source or use flatpak or something else. The first two cover like 99% of the packages I install.
  • 2
    @qwwerty im still running my first ever linux.
    Originally was Ubuntu MATE 18.04
    Nowadays is Ubuntu with Budgie 22.04
    Transformed over Time.
    Never had problems, as long as i didn't try to mess with system libraries or shot like that. I remember the one time i did that, and it obliterated my whole desktop environment and threw me into emergency tty.

    The windows workflow is shit, and im glad i ditched that.I usually look in apt for the software in question, then look for the manufacturers website, copy a bunch of apt commands and have my software running in no time. Or i use snap, or flatpak. If the software is not available on linux, i dont bother finding some obscure way to build it, and just run it via wine. That's it.
  • 1
  • 1
    @Jifuna which problems have you had with Gentoo ? What profile did you eSelect ? :)
    Did you overlay some ebuilds? Those can be quite flaky, especially from random git repos 😅
  • 1
    @lotd Oh, you don't want to know haha. Because I use my os for gaming, studywork, work, editing, audio/music, coding and other random stuff i have like a qauzillion use flags and I use multiple overlays for software which isn't in the main repo. I believe I use the standard profile for desktop.

    I guess the best way would be building my own e builds but yeah I'm lazy. The only problems I had with dependencies when I tried to install big programs like proton (/wine). So it's still running fine, might switch back go arch next time for comfort.
  • 2
    I just joined the thread but oh my fucking god.

    1) Search your package manager first!

    2) It's a kde package. Please search your package manager first.

    3) Is it not there/too old? Install it as flatpak or appimage, if you can. While snap is OK, using flatpak will be better on the long run.

    4) bro you are using 2016 LTS, which RAN out of support... update your system with distro upgrader.

    5) the only major issue i had with linux is python version upgrade. Seriously, how hard is it to migrate to update-alternatives method?

    the only major PACKAGE manager issue i had was supertuxkart was being seriously out of date, which was easily fixed thanks to flatpak.

    Seriously. Try flatpak. Not on that 2016 distro though, update to at least 20.04.
    It won't ask more resources like going from Win 7 to Win 10, it's more like a Win 10 "Feature Update", alas more stable.
  • 1
    @Jifuna Wine should work fine in most cases, may need to enable multilib.

    Getting proton to work might be easier through Steam :)

    Vulkan 3D (VK3D) for DX11/12 compat is really all I find useful for other games like Overwatch.

    Might go with Lutris to not have to fiddle too much around tho
  • 0
    @lotd Thanks, yeah I tried gaming on linux but my favorite game runs badly so I have dualboot now.
  • 1
    @Jifuna mind if I ask what is the game?
  • 1
    @melezorus34 ofcourse, Rocket League. It runs fine, but the difference is really noticable if I switch back go windows.
  • 1
    @Jifuna I see, I hope it's not as noticable as osu!lazer
  • 0
    @melezorus34 haha, wouldn't be the game I would have expected to run badly
  • 1
    @Jifuna that's kinda funny, because i didnt find any difference, when i played it beween both systems 😅
  • 1
    @thebiochemic haha maybe it's hardware depended or because I have almost 2k hours and its more noticable haha idk
  • 1
    @Jifuna that might actually be yeah ^^
  • 0
    @Fast-Nop I prefer LTS because updates frequently break stuff.
  • 0
    @ostream "Inefficient" but it works. "Inefficient" is better than risking to break the operating system each time it whines about dependencies.
  • 1
    @exerceo sure but please upgrade your distro version. It will fix 69% of your problems here.
  • 0
    @melezorus34 Yeah, perhaps I should. After all, it's free. Just takes some time. But freedom from "genuine copies", "licensing", and other Microsoft headache.
  • 0
    @ostream I guess you're right here. Shared libraries indeed improve efficiency, but requires software developers to co-operate.
  • 0
    @exerceo usually there is no need to co-operate since you ask the user to install a library, most of the time only major version number matters, so it will just Work™
Add Comment