I know there are ways to install software outside of aptitude on debian/ubuntu, (add repo, or build, or download binary, or possibly flatpak/snap/etc).
But being able to download *.deb files was one of the nicest aspect of using a debian based distros and now I’m seeing more and more projects include all distros except deb files.
Someone correct me but I vaguely recall that distributing debs is no longer recommended by debian itself?
- Am I wrong, and have I only co-incidentally stumbled on projects that don’t distribute debs?
- I am right and this seems like a mis-step, removing one of the most beginner friendly features that helped propagate debian based distros?
Flamesuit on.
I believe that deb packages should be first-class citizens in every project that distributes binaries since Debian and its derivatives have the largest user base in the Linux ecosystem.
I have mixed feelings for containerized applications since everything depends on your actual use case.
-
Containers were first used by sysadmins to improve a system’s security through isolation of apps and services. This is of little concern to most end users.
-
Then came the developers who started using containers to streamline the deployment of apps and their respective dependencies. Again, this is hardly an end user scenario.
-
Finally, the light bulb moment: Containers can also be distributed to end users in the form of Flatpaks, Snaps, Appimages, etc.
They can be run like regular apps, with the inherited benefits I’ve described above (isolation + inclusion of dependencies). So, what could go wrong?
These benefits come at a cost:
-
Isolation: clunky system integration (wrong themes, missing icons, inaccesible files). These can be fixed, of course, but not everyone wants to be bothered with additional tinkering.
-
Dependencies: Having redundant libraries and/or additional runtimes in your hd may be a deal breaker for some, but I suspect less technically inclined users won’t mind the overhead.
I still love the idea of a distro-agnostic package format, but in the end, the issues I’ve previously described, add unnecessary complexity to the user experience. This is why I don’t think native packages are going away anytime soon.
-
From an app developer and a distro maintainer point of view snaps/flatpacks are just better in almost every regard. It seems insane that each distro spends time building and maintaining packages that should just be in a container and ready to go.
There are some disadvantages but would you rather the developers spent time fixing bugs and adding cool features or would you rather they spend their time packaging stuff up to support half a dozen different distro packaging formats. These are the choices devs are having to make but there’s no need- put it in a container, have a stable environment that runs everywhere, done.
Why should they even package it at all? Just distribute the source code and let the distributors handle it themselves.
Man, this became so bad in the last five years or so.
Just bought a digital drawing tablet from a manufacturer who claim their products have Linux support. Plugged it in and went to their download lage. Of course, there would not be a link to their GitHub project and instead I got a .deb and a .rpm, which is totally useless to me because my system is neither Debian/Ubuntu nor even glibc.
rpm2targz should solve the first half of that problem (debs can be unpacked without their package manager too, but I forget the method). As for the glibc part, crossing your fingers and hoping it will work with musl or whatever anyway seems like the most useful course of action, alas.
They’re (usually) packaged with the slightly unusual
ar
format -ar x yourpackage.deb
should give you the underlyingtar
files that would be installed, and thentar xf yourpackage.tar
. Most archive managers will let you open them up like any other archive though - Gnome’s certainly does - if that’s easier for you.
That. Historically, upsteam provided sources, and downstream distros packaged it however they want to. If anything, the developer would package it for their own use on the distro(s) they use.
Is it weird for the users? Kind of. But it still makes the most sense: you can’t expect the developers to know how to properly integrate a package in every distro. And what usually happens is that we end up with packages that ships static binaries and puts the app in
/opt
and call it a day.I’m an inactive maintainer for [The Lounge](https://thelounge chat), and the result of us trying to package for multiple distros is that we store chat logs in
/etc/thelounge
because the project is designed mostly for the Docker version, which uses just one “data” folder. The project prefers consistency for the users, so the deb and Arch packages are both fairly questionable. I get reports for this from time to time in the AUR comments, and I’d have to step over the other project maintainers to split it into/etc/thelounge
and/var/lib/thelounge
as it should. If packaging remained independent, I could adapt the package better for Arch’s FSH.The universal platform for developers that want to offer end users a prepackaged way that works on every distro is Flatpak. Personally I prefer to install natively where possible, but I think it’s a good middleground between users having to figure it out, without developers stepping over the distro’s package structure. Users that want a native package can get good quality ones or build it themselves, while less experienced users can just use the developer-supported installation method.
deb was always the most distribudet packaging method due to ubuntu and debian based distro popularity but ubuntu decided to get away from it in favor of snaps, removing a lot of incentive for devs to distribute it, probably coupled with the events of arch becoming a meme big enough that it’s non-business popularity exploded, what used to be a natural act for app devs became a question.
And debs weren’t recommended since long ago but nobody cared about that
I see a lot of people doing flatpacks now, fwiw.
Only thing I install via deb these days is, like, Discord I think.
That’s funny, given that Discord is proprietary, and confining it in sandbox would give most benefits.
Honestly wish we could just not use flatpak/snap/appImage/whatever due to the wasted space. I’d really rather use a binary and reuse my shared libraries 90% of the time. The only exception was docker/snap were handy for things like a quick test for nextcould or home assistant. Then again I run mostly FreeBSD nowadays so I’m probably an old man telling kids to get off my lawn at this point.
Haven’t ever needed them on Arch. Probably never will.
I was scratching my head trying to figure out how I hadn’t run into this problem before but this answers it. Which is to say, I’m green enough to not have realized that just being handed the source code and letting make out of the cage wasn’t the implicit default.
Having built rpms, Deb and pkgbuild; pkgbuild is so much easier
@socphoenix Until you need two versions of Python because… reasons. When building software it also becomes a hassle: You must have the specific dynamically linked environment or your binary is useless. Solutions are either statically linked builds or containers, flatpaks, etc… Containers can cache dependencies as layers to preserve space however. Besides, space is cheap. Sorry for watering your lawn, but it was kind of dry.
In this case, you should have you dev environment setup in a container (or VM) with the correct dependencies
Something that I have ran into is the mono runtime for gaming, it has many complicated dependinces which can easily conflict with the main system. I just ended up making full containers for older mono versions to get old games to work anyways.
Flatpak do share libraries, thats what gtk and kde platform flatpaks are. Flatpaks are designed around average GUI bound users. So concerns of using a few dozen megs of libraries for their multi-gig electron apps aren’t really relavent.
Flatpak has really brought to light the question of whether its a distro’s, or a developer’s responsibility to create packages. I personally believe it should be the distro. Devs should be making good software, and if they want to provide a package, then great, but I never have an expectation from any dev of more than source + build instructions. Even a precompiled binary is not an expectation, because then you have glibc vs musl vs windows vs *bsd, and debian stable uses an older version thats maybe not compatable, or maybe arch is too new and doesn’t work yet, and it just goes back to the packaging expectation. So packages of any kind directly from a developer is a courtesy. If you want more packages in a distros repo, that they are building and maintaining, then they should be the ones you levy your complaints.
I see flatpacks kinda bad. Try to switch browsers and import data from browser running a flatpack :) #Impossible
Not actually impossible, just requires you know what you are doing. Its a fixable, usability problem for average users.
So how?
I’ve only personally done it from Firefox based ones, but you can just copy the profile directory from one flatpak app into another, then checking permissions depending on if you’ve installed the flatpak as a user or system. Chrome based ones probably have a similar profile/config directory, but I’ve not used one in a while.
FYI - although not official, Discord can be installed as a Flatpak [0], albeit with some features missing [1].
Also, I’ve found Webcord [2] a good alternative for my limited use-case. You may want to try it and see if it works for you. Lastly! I see there’s now a GTK4/Go Discord client available [3], I’ll have to give this a try and see how well it works at the moment.
[0] https://flathub.org/apps/com.discordapp.Discord
[1] https://github.com/flathub/com.discordapp.Discord#differences-in-flatpak-version
I have 4 .deb packages that I have downloaded from github. Other than those I try to use apt first if there isn’t a package I search for a flatpak. The only reason I have snap installed is to play with Firefox Beta. Packages: 2839 (dpkg), 45 (flatpak), 7 (snap)
Id say tonnes of projects now just sort of work best via docker, so rather than mess around with installation instructions for multiple distros and etc, a single docker image is just way easier to maintain documentation on
Ubuntu debs often didn’t work on Debian anyway.
I’d rather not install third-party debs.