Files
flatpak/doc/flatpak-install.xml
Sebastian Wick 3e9e68cc5d Support sideload repositories for OCI remotes
For OCI remotes, the existing sideload repository system doesn't
work: identity for OCI remotes is done by manifest digest (disguised
as a fake commit ID internally), instead of by ostree commit, so
we have no way of knowing whether a sideloaded image matches the
summary.

Allow specifying a new form of sideload repository with:

  --sideload-repo=oci:<path>

The desired use case for this is preinstalling Flatpaks during OS
install, and for this, binding the entire repository to a single
collection ID is both inconvenient and not useful, so OCI sideload
repostories don't have a defined collection ID - they just apply to
all OCI remotes. (And, because of this, they are restricted to
the command line.)
2025-10-24 16:27:33 +00:00

389 lines
16 KiB
XML

<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
<refentry id="flatpak-install">
<refentryinfo>
<title>flatpak install</title>
<productname>flatpak</productname>
<authorgroup>
<author>
<contrib>Developer</contrib>
<firstname>Alexander</firstname>
<surname>Larsson</surname>
<email>alexl@redhat.com</email>
</author>
</authorgroup>
</refentryinfo>
<refmeta>
<refentrytitle>flatpak install</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>flatpak-install</refname>
<refpurpose>Install an application or runtime</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>flatpak install</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="opt">REMOTE</arg>
<arg choice="plain" rep="repeat">REF</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>flatpak install</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="opt">--from|--bundle|--image</arg>
<arg choice="plain">LOCATION</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
Installs an application or runtime. The primary way to
install is to specify a <arg choice="plain">REMOTE</arg>
name as the source and one ore more <arg choice="plain">REF</arg>s to specify the
application or runtime to install. If <arg choice="plain">REMOTE</arg> is omitted,
the configured remotes are searched for the first <arg choice="plain">REF</arg>
and the user is asked to confirm the resulting choice.
</para>
<para>
Each <arg choice="plain">REF</arg> argument is a full or partial identifier in the
flatpak ref format, which looks like "(app|runtime)/ID/ARCH/BRANCH".
All elements except ID are optional and can be left out, including the slashes,
so most of the time you need only specify ID. Any part left out will be matched
against what is in the remote, and if there are multiple matches you will be
prompted to choose one of them. You will also be prompted with choices if
<arg choice="plain">REF</arg> doesn't match anything in the remote exactly but is
similar to one or more refs in the remote (e.g. "devhelp" is similar to
"org.gnome.Devhelp"), but this fuzzy matching behavior is disabled if
<arg choice="plain">REF</arg> contains any slashes or periods.
</para>
<para>
By default this looks for both apps and runtimes with the given
<arg choice="plain">REF</arg> in the specified <arg choice="plain">REMOTE</arg>,
but you can limit this by using the <option>--app</option> or <option>--runtime</option>
option, or by supplying the initial element in the <arg choice="plain">REF</arg>.
</para>
<para>
If <arg choice="plain">REMOTE</arg> is a uri or a path (absolute or relative starting
with ./) to a local repository, then that repository will be used as the source, and
a temporary remote will be created for the lifetime of the <arg choice="plain">REF</arg>.
</para>
<para>
If the specified <arg choice="plain">REMOTE</arg> has a collection ID configured on it,
Flatpak will search the <filename>sideload-repos</filename> directories configured
either with the <option>--sideload-repo</option> option, or on a per-installation or
system-wide basis (see
<citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>).
</para>
<para>
For OCI remotes, sideload repositories can also be specified as
<option>--sideload-repo=oci:PATH</option> or <option>--sideload-repo=oci-archive:PATH</option>,
where path points to an OCI image layout or archive of an OCI image layout.
(See <citerefentry><refentrytitle>containers-transports</refentrytitle><manvolnum>5</manvolnum></citerefentry>.)
When specified in this fashion, the images found in the image layout are available for all OCI remotes,
without regard to collection ID. For this reason, there is no directory equivalent -
it can only be specified on the command line.
</para>
<para>
The alternative form of the command (with <option>--from</option>, <option>--bundle</option>,
or <option>--image</option>) allows to install directly from a source. The source can be a
<filename>.flatpak</filename> single-file bundle, <filename>.flatpakref</filename>
application description, or a reference to an OCI image. The options are optional if the
first argument has the expected filename extension or prefix.
</para>
<para>
Note that flatpak allows to have multiple branches of an application and runtimes
installed and used at the same time. However, only one version of an application
can be current, meaning its exported files (for instance desktop files and icons)
are visible to the host. The last installed version is made current by default, but
this can manually changed with flatpak make-current.
</para>
<para>
Unless overridden with the <option>--user</option> or the <option>--installation</option>
option, this command installs the application or runtime in the default system-wide
installation.
</para>
</refsect1>
<refsect1>
<title>Options</title>
<para>The following options are understood:</para>
<variablelist>
<varlistentry>
<term><option>-h</option></term>
<term><option>--help</option></term>
<listitem><para>
Show help options and exit.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--bundle</option></term>
<listitem><para>
Treat <arg choice="plain">LOCATION</arg> as a single-bundle file.
This is assumed if the argument ends with <filename>.flatpak</filename>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--from</option></term>
<listitem><para>
Treat <arg choice="plain">LOCATION</arg> as an application description file.
This is assumed if the argument ends with <filename>.flatpakref</filename>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--image</option></term>
<listitem><para>
Treat <arg choice="plain">LOCATION</arg> as the location of a Flatpak in
OCI image format. <arg choice="plan>">LOCATION</arg> is in the format of
<citerefentry><refentrytitle>containers-transports</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
Supported schemes are <literal>docker://</literal>, <literal>oci:</literal>,
and <literal>oci-archive:</literal>. This is assumed if the argument starts
with one of these schemes.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--reinstall</option></term>
<listitem><para>
Uninstall first if already installed.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-u</option></term>
<term><option>--user</option></term>
<listitem><para>
Install the application or runtime in a per-user installation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--system</option></term>
<listitem><para>
Install the application or runtime in the default system-wide installation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--installation=NAME</option></term>
<listitem><para>
Install the application or runtime in a system-wide installation
specified by <arg choice="plain">NAME</arg> among those defined in
<filename>/etc/flatpak/installations.d/</filename>. Using
<option>--installation=default</option> is equivalent to using
<option>--system</option>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--arch=ARCH</option></term>
<listitem><para>
The default architecture to install for, if not given explicitly in
the <arg choice="plain">REF</arg>. See <command>flatpak --supported-arches</command>
for architectures supported by the host.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--subpath=PATH</option></term>
<listitem><para>
Install only a subpath of <arg choice="plain">REF</arg>. This is mainly used to
install a subset of locales. This can be added multiple times to install multiple
subpaths.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--gpg-file=FILE</option></term>
<listitem><para>
Check bundle signatures with GPG key from <arg choice="plain">FILE</arg> (- for stdin).
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-deploy</option></term>
<listitem><para>
Download the latest version, but don't deploy it.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-pull</option></term>
<listitem><para>
Don't download the latest version, deploy whatever is locally available.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-related</option></term>
<listitem><para>
Don't download related extensions, such as the locale data.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--no-deps</option></term>
<listitem><para>
Don't verify runtime dependencies when installing.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--or-update</option></term>
<listitem><para>
Normally install just ignores things that are already installed (printing a warning), but if
--or-update is specified it silently turns it into an update operation instead.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--app</option></term>
<listitem><para>
Assume that all <arg choice="plain">REF</arg>s are apps if not explicitly specified.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--runtime</option></term>
<listitem><para>
Assume that all <arg choice="plain">REF</arg>s are runtimes if not explicitly specified.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--sideload-repo=PATH</option></term>
<listitem><para>
Adds an extra local ostree repo as a source for installation. This is equivalent
to using the <filename>sideload-repos</filename> directories (see
<citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>),
but can be done on a per-command basis. Any path added here is used in addition
to ones in those directories.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--include-sdk</option></term>
<listitem><para>
For each app being installed, also installs the SDK that was used to build it.
Implies <option>--or-update</option>; incompatible with <option>--no-deps</option>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--include-debug</option></term>
<listitem><para>
For each ref being installed, as well as all dependencies, also installs its
debug info. Implies <option>--or-update</option>; incompatible with
<option>--no-deps</option>.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-y</option></term>
<term><option>--assumeyes</option></term>
<listitem><para>
Automatically answer yes to all questions (or pick the most prioritized answer). This is useful for automation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--noninteractive</option></term>
<listitem><para>
Produce minimal output and avoid most questions. This is suitable for use in
non-interactive situations, e.g. in a build script.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>-v</option></term>
<term><option>--verbose</option></term>
<listitem><para>
Print debug information during command processing.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--ostree-verbose</option></term>
<listitem><para>
Print OSTree debug information during command processing.
</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>Examples</title>
<para>
<command>$ flatpak install gedit</command>
</para>
<para>
<command>$ flatpak install flathub org.gnome.gedit</command>
</para>
<para>
<command>$ flatpak --installation=default install flathub org.gnome.gedit</command>
</para>
<para>
<command>$ flatpak --user install flathub org.gnome.gedit//3.30</command>
</para>
<para>
<command>$ flatpak --user install https://flathub.org/repo/appstream/org.gnome.gedit.flatpakref</command>
</para>
<para>
<command>$ flatpak --system install org.gnome.gedit.flatpakref</command>
</para>
</refsect1>
<refsect1>
<title>See also</title>
<para>
<citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-update</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-list</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-build-bundle</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpakref</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-make-current</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>ostree-find-remotes</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>