USB Drives
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 isorg.gnome.gedit
. Useflatpak info -o org.gnome.gedit
to determine the origin remote. For example that may beflathub
.Ensure the origin remote has a collection ID set by using
flatpak remotes -d
and 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
df
command to identify the mount point for the USB drive. It may be something like/media/user/FLATPAKS
.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,
using 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
The flatpak update
command also accepts a --sideload-repo
option.
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 --sideload-repo
option. See the flatpak man page.