Your only option is universal formats like Flatpak and AppImage. I would recommend against random deb packages or compiling from source unless it's some very tiny obscure utility that will not need any updates in the foreseeable future (so something like j4-dmenu-desktop or a fetch script).
Flatpak is good for user things that need to be bleeding edge. If I need to work with a server that's bleeding edge, containers are the way to go.
Yeah if they want to update system packages it's where things end up in dependency hell. You want newer X, it needs newer Y, it needs newer Z and it's a a library half the packages of the system depends on and the rest of the system goes boom.
It's actually why I went to Arch, I need to hold back packages way more rarely than I want newer everything else.
Flatpaks the best way.
In my roughly recommended order:
- Flatpaks (great stuff)
- Crates/Cargo (if it's a rust program)
- deb-get (assuming the .deb it fetches is from an official source (I think they are all official?))
- Homebrew
- Nix Package Manager
- bin
- Docker (occasionally useful even for desktop programs, e.g. CLI programs)
- Compile and install it yourself (test the compilation in a VM first to make sure your compilation steps work if you're not sure about dependencies)
You are missing PPAs from the list even though it needs some attention on which PPA is being used. I used to use the when I was on Mint.
I forgot about PPAs - I don't normally use Ubuntu-derivatives. PPAs are a little more dangerous if I recall correctly right? Firstly it should be an official PPA from the software developer, and secondly because it's a repo you have to make sure that it isn't going to eventually pull in packages that replace/break your system.
Safety for the ones I've listed:
- Flatpaks - Containerized, separate from system packages
- Cargo - Manual compilation,
/home installation
- deb-get - One-off .deb from official source and doesn't try to pull any other dependencies in - worst case you fail the dependency check I think?
- Homebrew - Pre-compiled binaries or manual compilation if you choose,
/home installation
with local dependency network - Nix Package Manager - Roughly the same as Homebrew,
/home installation
- bin - Probably a single statically-linked executable,
/home installation
- Docker - Containerized, separate from system
- Compile and install it yourself - Highest potential for things to go wrong as you're messing with system packages and probably working off of some developer's questionable compilation instructions (or even lack thereof).
Worst thing about PPAs is their maintainers don’t keep up with the base Ubuntu version and then you have to disable the PPA on the next version upgrade, or you end up seeing someone with repositories for Ubuntu 16.04 on 22.04 and wondering why apt is returning errors. Containers are a much better modern solution.
If it's cli, use toolbox or distrobox. You can pull in an arch image and get the stuff from AUR.
Distrobox also works with GUI applications. Toolbox, probably too
That's awesome then. I had some trouble with an electron app so i thought it's complicated.
Linux
From Wikipedia, the free encyclopedia
Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).
Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.
Rules
- Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
- No misinformation
- No NSFW content
- No hate speech, bigotry, etc
Related Communities
Community icon by Alpár-Etele Méder, licensed under CC BY 3.0