mirror of
https://github.com/foo-dogsquared/wiki.git
synced 2025-01-31 04:58:21 +00:00
110ec318e0
- Some updates to pacman as I'm going to trying to use Open Build Service which apparently has support for publishing Arch Linux packages. Pretty nice! - Starting to take more notes for Git as I use it beyond the simple commit and push workflow. I mostly use it to create patches for packaging other applications. - Updates for Drawabox.
2.4 KiB
2.4 KiB
Flatpak packages
- a Flatpak package usually is an application that depends on runtimes which are collections of library
- while runtimes can be created, there are only a handful of them in the official Flathub remote
- some of the runtimes include Freedesktop, GNOME, and KDE
- you can run the runtimes to know the installed packages (e.g.,
flatpak run org.freedesktop.Sdk//19.08
) - Flatpak can get packages from a repository referred to as remotes similar to Arch packages or FreeBSD ports
- the package definition are referred to as a manifest similar to Nix packages
- Flatpak can create bundles from a manifest, enabling easier distribution without a Flatpak remote
- similar to Nix packages and Guix package manager, sandboxing is an important part of the build process; thus, there are limitations such as no network availability, filesystem access, and socket access; by default, applications only have access to their runtime folders
- Flathub, the main repository, is concerned with Reproducible builds
-
examples:
- Minecraft is fairly simple by fetching the compiled binary and its dependencies with minimal compilation needed
- RawTherapee is slightly complex with various dependencies defined mostly in one file
- Gnucash has a complex manifest that is composed of multiple dependencies packages as its own module file
- RetroArch is similarly complex to Gnucash with its vendored dependencies packaged as its own module
- Flathub has a curated set of scripts to automate building manifests for several projects such as Python, Rust, and Node similar to roam:nixpkgs
- Flathub also has a collection of modules intended to be shared among the repo serving as an additional base for the most common dependencies that cannot be found in runtimes