Disclaimer
Flatpak uses OSTree, like Fedora Atomic Desktops (Silverblue, Kinoite etc) and similar to BTRFS snapshots.
So many files are deduplicated and linked, not actually there
https://gitlab.com/TheEvilSkeleton/flatpak-dedup-checker
50GB without
31GB with deduplication
21,4GB with BTRFS compression
I think at one point I had like 2.5 tb of stuff stored on my 2 tb drive in my laptop, deduplication and btrfs compression is fun
A lot of that data doesn’t actually exist, ostree hardlinks data blobs internally, so the actual size on disk is much smaller than most disk usage tools will show.
What does “ostree hardlinks data blobs internally” mean?
Flatpak uses OSTree - a git-like system for storing and transferring binary data (commonly referred to as ‘blobs’), and that system works by addressing such blobs by hashes of their content, using Linux hardlinks (multiple inodes all referring to the same disk blocks) to refer to the same data everywhere it’s used.
So basically, whenever Flatpak tells OSTree to download something, it will only ever store only copy of that same object (.so-file, binary, font, etc), regardless of how many times it’s used by applications across the install.
Note that this only happens internally in the OSTree repo - i.e./var/lib/flatpak
or~/.local/share/flatpak
, so if you have multiple separate Flatpak installations on your system then they can’t automagically de-duplicate data between each other.Thank you for the explanation.
Thanks! The same goes for ostree system versions and BTRFS snapshots probably.
I have a similar problem with virt-manager and I think that doesnt create dynamically allocated qcow2 containers?
https://gitlab.com/TheEvilSkeleton/flatpak-dedup-checker
here a script to compare the size without or with deduplication
Thanks!
50GB without 31GB with deduplication 21,4GB with BTRFS compression
And I have to say I have many apps. Not as many anymore, and no EOL runtimes apart Onionshare anymore.
Removing /repo is not considered safe, but I just removed its contents anyways and then just ran a repair.
That actually resulted in more available disk space than after running the garbage collection.
And my flatpak apps still work 🤷♀️
I can’t tell if this is the new “Delete System32” or not.
no, that’d be deleting /boot, /usr or /var
Why not /? 😁
because then it also deletes your personal files which is not equivalent to deleting System32
Weird?
That’s why I think AppImage is the best. Despite needing to pack everything it needs it’s always far more lightweight than flatpak. I’d rather download a 50mb appimage than several gigabytes of an entire OS libraries and then the updates requiring roughly the same size. That and I have a shitty internet
TBH I dislike Appimage purely because I can’t be bothered to go and check them all individually for new versions all the time, it feels like being on Windows again. I don’t mind a little bloat for the sake of convenience. But that’s just personal preference of course.
There was an app that dealt with this but it’s since been abandoned.
I dont think that is true at all. Appimages are slowest and have many disadvantages like
- no repo (= virus danger)
- no app desktop entry
- no updates
- no deduplication of libraries
I always use the app image if they are available. As for being slow I never noticed.
No app desktop entry is one on the reasons I like them. If its one I use a lot I make a hotkey to open it. But there are ways to add them. There is even a tool that makes its easy to do.
No updates. I’m not sure how exactly, but everyone I use auto updates when I open them. I originally had a issue of it breaking my hotkey cause the file name would change because of the version number going up. Which I fixed by using a *.
no app desktop entry
they can be added manually but yeah i get how that’s inconvenient.
just run
./appimage.appimage --appimage-extract
and you have the .desktop file there, then just edit the path to the executableYes but that is unimportant. This is not user friendly at all. I do that all the time for random stuff, but especially on GNOME the system hides stuff like that away from users and thats okay.
In my experience updates aren’t that big. The flatpak cli ux is just confusing to read how much data actually has to be downloaded because of deduplication.
I have like 4 gigs of flatpak updates I keep unchecking because at my horrible internet speed it would take the entire day if not more to download. Honestly, if you’re right then this is a horrendous design flaw.
Flatlack is weird. Sometimes it’s really good, but then other times depending on what you install it really bloons up.
Those are unmaintained apps and you probably shouldnt use them. Poorly this is not as obvious and cant be enforced.
Immutability and sandboxing are, and always have been, a meme.
Security is a meme XD just remove your password, what do you got to hide? Lets all be a communist botnet!
Why are you replying to me?
Why use flatpak?
Because its a modern package system that is free, focused on making every app run, has isolation, sandboxing and a permission system
And brings the most recent version of something to any system. I’m astounded sometimes by how much a native package can lag behind
Because has many advantages
Convenient libraries/frameworks are fat. Because they are fat, they need frequent updates/security fixes, breaking codebase more often. With flatpack, developers can freeze lib versions at a convenient point, without caring for system dependencies.