Files
flatpak/doc/flatpak-update.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

310 lines
12 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-update">
<refentryinfo>
<title>flatpak update</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 update</refentrytitle>
<manvolnum>1</manvolnum>
</refmeta>
<refnamediv>
<refname>flatpak-update</refname>
<refpurpose>Update an application or runtime</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>flatpak update</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="opt" rep="repeat">REF</arg>
</cmdsynopsis>
<cmdsynopsis>
<command>flatpak update</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="plain">--appstream</arg>
<arg choice="opt">REMOTE</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
Updates applications and runtimes. <arg choice="plain">REF</arg> is a reference to the
application or runtime to update. If no <arg choice="plain">REF</arg> is given, everything
is updated, as well as appstream info for all remotes.
</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 installed, and if there are multiple matches an error message
will list the alternatives.
</para>
<para>
By default this looks for both apps and runtimes with the given <arg choice="plain">REF</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>
Normally, this command updates the application to the tip
of its branch. But it is possible to check out another commit,
with the <option>--commit</option> option.
</para>
<para>
If the configured remote for a ref being updated 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>
Note that updating a runtime is different from installing
a different branch, and runtime updates are expected to keep
strict compatibility. If an application update does cause
a problem, it is possible to go back to the previous
version, with the <option>--commit</option> option.
</para>
<para>
In addition to updates, this command will offer to uninstall any unused end-of-life
runtimes. Runtimes that were explicitly installed (not as a dependency) or explicitly
pinned (see <citerefentry><refentrytitle>flatpak-pin</refentrytitle><manvolnum>1</manvolnum></citerefentry>)
are left installed even if unused and end-of-life.
</para>
<para>
Unless overridden with the <option>--user</option>, <option>--system</option> or <option>--installation</option> option, this command updates
any matching refs in the standard system-wide installation and the per-user one.
</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>-u</option></term>
<term><option>--user</option></term>
<listitem><para>
Update a per-user installation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--system</option></term>
<listitem><para>
Update the default system-wide installation.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--installation=NAME</option></term>
<listitem><para>
Updates 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 architecture to update for. 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 the ref. This is mainly used to install a subset of locales.
This can be added multiple times to install multiple subpaths.
If this is not specified the subpaths specified at install time are reused.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--commit=COMMIT</option></term>
<listitem><para>
Update to this commit, instead of the tip of the branch. You can find commits
using <command>flatpak remote-info --log REMOTE REF</command>.
</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 update or install runtime dependencies when installing.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--app</option></term>
<listitem><para>
Only look for an app with the given name.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--appstream</option></term>
<listitem><para>
Update appstream for <arg choice="plain">REMOTE</arg>, or all remotes if no remote is specified.
</para></listitem>
</varlistentry>
<varlistentry>
<term><option>--runtime</option></term>
<listitem><para>
Only look for a runtime with the given name.
</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>-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>--force-remove</option></term>
<listitem><para>
Remove old files even if they're in use by a running application.
</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 --user update org.gnome.gedit</command>
</para>
</refsect1>
<refsect1>
<title>See also</title>
<para>
<citerefentry><refentrytitle>flatpak</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-install</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>flatpak-list</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
<citerefentry><refentrytitle>ostree-find-remotes</refentrytitle><manvolnum>1</manvolnum></citerefentry>
</para>
</refsect1>
</refentry>