One can distribute flatpaks along with their dependencies on USB drives (or network shares, etc.) which is especially helpful in situations where Internet access is limited or non-existent.
For offline distribution to work there are a few prerequisites:
- the remote repositories providing the app or any of its dependencies must utilize GPG signatures
- the remote repos must all have a collection ID set on the server side
- the locally configured remotes must have a collection ID set (on the client side)
- the relevant remotes must be configured on the receiving computer (the one installing from the drive)
Apps can then be copied to USB drives using the flatpak create-usb command. You can refer to this blog post for an introduction.
For example, if you want to put Gedit on a USB drive:
First identify the Application ID using
flatpak list --app. In the case of Gedit it is
flatpak info -o org.gnome.geditto determine the origin remote. For example that may be
Ensure the origin remote has a collection ID set by using
flatpak remotes -dand checking the “Collection ID” column. If not, configure one with e.g.
flatpak remote-modify --collection-id=org.flathub.Stable flathub. If any dependencies come from other remotes, those will also need a collection ID configured.
Next, use the
dfcommand to identify the mount point for the USB drive. It may be something like
Now copy the flatpak and its dependencies to the drive:
$ flatpak create-usb /media/user/FLATPAKS org.gnome.gedit
Wait for the copying process to complete, at which point you should get a command prompt (
$). This process can take tens of minutes especially if the USB drive and USB port aren’t USB 3.0+. Then unmount the drive before removing it:
$ umount /media/user/FLATPAKS
The process for installing from such a USB drive (for example on an offline
machine) differs between Flatpak versions before 1.8.0 and those after. With
earlier versions you can simply use the
flatpak install command as you
normally would online:
$ flatpak install flathub org.gnome.gedit
For versions after 1.8.0, if your linux
distribution has packaged the relevant systemd units,
flatpak install with no extra arguments still works. Otherwise, you
can use the
--sideload-repo option in your command invocation:
$ flatpak install --sideload-repo=/media/user/FLATPAKS/.ostree/repo flathub org.gnome.gedit
flatpak update command also accepts a
Alternatively, it’s possible to specify sideload sources using symbolic links
placed in system-wide or user-specific directories and such sources will then
be used for all Flatpak operations without the need for a
option. See the flatpak man page.