- Apr 15, 2020
- Reaction score
What format do you like doing when install programs onto your computer and why ?
Not really!While I was typing this answer, I became curious to know if compiling or building programs from source could make downloads standardized and make app images, snaps, and flatpaks obsolete. Is that possible?
There are so many different build systems.
Not all software projects use gnu auto tools (configure, make, make install) to build and install software from source.
Some use cmake. QT based applications use qmake, there are other build systems like Apache ant, boost::jam, ninja etc.
And that’s just C/C++ based programs!
Languages like Go, Ruby, Python etc have their own build systems too.
Some software projects support building using multiple build systems, sometimes using different systems for building on different platforms, sometimes even including projects for various IDE’s.
Others only use one build system for everything.
So there are a number of different ways of building software. It can vary depending on the programming language and the platform it’s being built for. And the preferred tool-chain of the developers.
So it would be pretty difficult to create a standard, ‘one size fits all’ solution to building and installing software from source using any programming language.
Personally, when it comes to installing software, I stick to my distro’s repos as far as possible. If I need something newer, I’ll usually build from source from the projects official GitHub/Gitlab (or other source control). That way the build will be configured and optimised to run on my machine. Being a programmer myself, I don’t mind installing whatever I need to build other programs. I can usually fix things if a build fails, or if there are dependency problems that need to be resolved.
Also, once I’ve successfully built and installed the program once - updating just requires me to pull the latest source, build and re-install, so that’s not a bother.
Appimages are also quite convenient, they’re just a single package containing everything you need to run the program. You download it, make it executable and run it. But they are quite large files. I only use them on rare occasions - e.g. if there is an annoying bug in a program that hasn’t been fixed in the Debian repos, but a newer version is available as an appimage. or if I want to make use of new functionality that isn’t in the version in the repos. And I only use them temporarily.
For permanent installs, I will install from source
But I’m not a fan of snapcraft/snaps or flatpak. They seem like overly complex systemd-like solutions to the problem of packaging for all systems.
By systemd-like - I mean that snapcraft and flatpak are huge, sprawling, complex solutions which affect the wider system.
Systemd is the new init-system for Linux based OSes. Rather than being a small, discrete module, it’s a huge, sprawling mess that affects a lot of other parts of the system.
Out of snapcraft and flatpak- snapcraft is the worst IMO. I was an early adopter of snapcraft. Whilst it’s great that applications are sandboxed and isolated for security reasons - snapd adds extra time to your boot times. On my laptop, running Debian - snapd added well over a minute to my boot times. Which is completely unacceptable!
So in the end, I removed it completely from my machine and am not willing to try it again!
I haven’t tried flatpak yet, but I imagine it will also negatively affect the performance of my system.
So for me, the most optimal solutions are installing from the repos, or installing from source.
At least now I have an answer.
It just goes to show how complex the nature of Linux has gotten, and after reading that, I'm starting to think that any attempt to standardize it is a pipe dream at this point.
If by "standardization", you instead mean homogenizing Linux and creating "one Linux distribution to rule them all" - that’s never going to happen. So many different users of Linux have different needs. There are people pulling Linux in so many different directions to fit their particular needs - as is their right.
app-outlet/app-outlet: A Universal linux app storeApp Outlet is a Universal application store. It easily allows you to search and download applications that runs on most Linux distributions. It currently supports AppImages, Flatpaks and Snaps packages
I came across a third-party AppImage manager, thought someone here may find it useful.
GitHub - srevinsaju/zap: Delightful AppImage package manager:zap: Delightful AppImage package manager. Contribute to srevinsaju/zap development by creating an account on GitHub.github.com
Here's another one:
app-outlet/app-outlet: A Universal linux app store
In this order:What format do you like doing when install programs onto your computer and why ?
/opt(e.g.: Java SDK which I use a lot)
~/.local-- by compiling to my local user directory, I can ensure that I won´t break any dependent official package and I remove the need to use
sudoto install. This is done by using
make && make install
No I haven't tried it since I don't use AppImages, I came across it and I thought I would post it here because thought someone else would find it useful and try itHave you tried this? It updates AppImages as well.
AppImages, have you seen the size of these? Yeah I know they include all the dependencies,
The good news, they pretty much run on any distro.
The bad news, in order to accomplish this, every file has all the dependencies, so if you have 4 or 5 appImages
you likely have the same dependency libraries 4 or 5 times.