Flatpak: Difference between revisions

From Alpine Linux
(→‎Troubleshooting: add documentation for sandbox override)
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributions, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap],  
 
Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributons, it is similar to [https://en.wikipedia.org/wiki/Snap_(software) Snap],  




Line 9: Line 7:


* {{Pkg|dbus}}
* {{Pkg|dbus}}
* {{Pkg|polkit}}
* {{Pkg|xdg-desktop-portal}}
* {{Pkg|xdg-desktop-portal}}
* an implementation of <code>xdg-desktop-portal</code>, e.g. {{Pkg|xdg-desktop-portal-gtk}}
* an implementation of <code>xdg-desktop-portal</code>, e.g. {{Pkg|xdg-desktop-portal-gtk}}
Line 30: Line 29:
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}
{{cmd|$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo}}


Now reboot to complete setup
Flatpak is now ready to use immediately, however flatpak desktop entries will not appear until you restart your desktop session (i.e. by logging out and then logging back in)
 
{{Note|graphical installation of Flatpak apps may not be possible with Alpine.}}


== Usage ==
== Usage ==
Line 41: Line 38:
=== Search ===
=== Search ===


To search for applications run '''flatpak search <appplicationname>'''
To search for applications run '''flatpak --user search <appplicationname>'''


Example:
Example:


<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak search chromium
<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak --user search chromium


Name                  Description                                                        Application ID                        Version      Branch  Remotes
Name                  Description                                                        Application ID                        Version      Branch  Remotes
Line 57: Line 54:
=== Install ===
=== Install ===


To install a package run '''flatpak install <applicationname>'''
To install a package run '''flatpak --user install <applicationname>'''


<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak install com.github.Eloston.UngoogledChromium
<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak --user install com.github.Eloston.UngoogledChromium


Looking for matches…
Looking for matches…
Line 81: Line 78:
</p>
</p>


or if you dont know or dont want to type the exact package name:
or if you don't know or don't want to type the exact package name:


<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak install chromium
<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak --user install chromium


Looking for matches…
Looking for matches…
Line 100: Line 97:
=== Remove ===
=== Remove ===


To remove a package run: '''flatpak remove <applicationname>'''
To remove a package run: '''flatpak --user remove <applicationname>'''


<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak remove com.github.Eloston.UngoogledChromium
<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak --user remove com.github.Eloston.UngoogledChromium


         ID                                                    Branch          Op
         ID                                                    Branch          Op
Line 113: Line 110:




or if you dont know or dont want to type the exact package name:
or if you don't know or don't want to type the exact package name:


<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak remove chromium
<p style="background-color:#f9f9f9; border:1px dashed #2f6fab; line-height:1.1em; padding:1em; font-family:monospace; font-size:10pt; white-space:pre; overflow:auto;"><span style="color:green;">~</span>'''$''' flatpak --user remove chromium


Similar installed refs found for ‘chromium’:
Similar installed refs found for ‘chromium’:
Line 125: Line 122:
Which do you want to use (0 to abort)? [0-3]:
Which do you want to use (0 to abort)? [0-3]:
</p>
</p>


== Developers ==
== Developers ==
Line 135: Line 131:


== Troubleshooting ==
== Troubleshooting ==
{{Draft|More documentation and testing is needed, but everything currently here should be safe to follow.}}


=== Permission errors ===
=== Permission errors ===
Line 142: Line 139:
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}
{{Note|You need to log out and log back in or reboot for the group change(s) to take effect}}


=== Application launch errors ===
If the application is not starting try running it with {{Cmd|<nowiki>flatpak run the.application.name</nowiki>}} on a terminal. If this yields an a dbus error starting with ''Failed to connect to session bus'' then you might solve this by adding
{{Cmd|<nowiki>export $(dbus-launch)</nowiki>}}
in {{Path|/etc/profile}}.


=== Fixing audio issues ===
=== Fixing audio issues ===


If you have a minimal setup and don't have access to audio devices you will need to set the XDG_RUNTIME_DIR variable. Save the following script in {{Path|/etc/profile.d/xdg_runtime_dir.sh}} and re-login to have it set up properly.
Make sure that [[XDG_RUNTIME_DIR]] is properly configured and re-login if necessary.
 
if test -z "${XDG_RUNTIME_DIR}"; then
  export XDG_RUNTIME_DIR=/tmp/$(id -u)
fi


When you launch a Flatpak you will need to start pulseaudio as well:
When you launch a Flatpak you will need to start pulseaudio as well:


{{Cmd|$ pulseaudio --start && flatpak run com.example.Example}}
{{Cmd|$ pulseaudio --start && flatpak run com.example.Example}}


=== Unable to upload files ===
=== Unable to upload files ===


If you are unable to upload files from the host, this maybe due to [https://docs.flatpak.org/en/latest/sandbox-permissions.html Flatpak sanbox] and you may have to manually add the authorization.
If you are unable to upload files from the host, this maybe due to [https://docs.flatpak.org/en/latest/sandbox-permissions.html Flatpak sandbox] and you may have to manually add the authorization.


This can be done with the following commands:
This can be done with the following commands:
Line 171: Line 170:


{{Cmd|<nowiki>$ flatpak override org.signal.Signal --filesystem=/home/user/Downloads</nowiki>}}
{{Cmd|<nowiki>$ flatpak override org.signal.Signal --filesystem=/home/user/Downloads</nowiki>}}
=== Error while opening repository ===
There is a current issue where sometimes flatpak will try to read the system-wide repository even if your install is with --user. This will result in failure to launch a flatpak application with the terminal reading ""error: While opening repository /var/lib/flatpak/repo: opening repo: opendir(/var/lib/flatpak/repo): No such file or directory". An alpine user has posted more information, as well as a workaround, at https://github.com/flatpak/flatpak/issues/5488


== Links ==
== Links ==

Latest revision as of 19:09, 18 May 2024

Flatpak is a technology for building and distributing applications with the goal of having a universal package format for all Linux distributions, it is similar to Snap,


Setup / Installation

Runtime dependencies

Note: If you are running a window manager from .xinitrc, make sure you are running a dbus session explicitly, i.e.:

# exec dbus-launch --exit-with-session your_favourite_wm

Installing Flatpak Itself

From: https://flatpak.org/setup/Alpine/

Note: To install Flatpak you will need to enable the Community repository, See: Repositories - Managing repositories

To install Flatpak run:

# apk add flatpak

Next you need to add a repository, for this guide we will use the recommended repository, Flathub.

$ flatpak remote-add --user --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

Flatpak is now ready to use immediately, however flatpak desktop entries will not appear until you restart your desktop session (i.e. by logging out and then logging back in)

Usage

To get all of the available options to use with the flatpak command run: flatpak --help or flatpak -h,


Search

To search for applications run flatpak --user search <appplicationname>

Example:

~$ flatpak --user search chromium Name Description Application ID Version Branch Remotes Chromium Web Browser The web browser from Chromium project org.chromium.Chromium 96.0.4664.93 stable flathub Chromium B.S.U. Fast paced, arcade-style, top-scrolling space shooter net.sourceforge.chromium-bsu 0.9.16.1 stable flathub ungoogled-chromium A lightweight approach to removing Google web service dependency com.github.Eloston.UngoogledChromium 96.0.4664.45 stable flathub


Install

To install a package run flatpak --user install <applicationname>

~$ flatpak --user install com.github.Eloston.UngoogledChromium Looking for matches… com.github.Eloston.UngoogledChromium permissions: ipc network cups pulseaudio wayland x11 devices file access [1] dbus access [2] bus ownership [3] system dbus access [4] [1] /run/.heim_org.h5l.kcm-socket, home, xdg-run/pipewire-0 [2] org.freedesktop.FileManager1, org.freedesktop.Notifications, org.freedesktop.secrets, org.gnome.SessionManager [3] org.mpris.MediaPlayer2.chromium.* [4] org.freedesktop.Avahi, org.freedesktop.UPower ID Branch Op Remote Download 1. com.github.Eloston.UngoogledChromium.Codecs stable i flathub < 1.1 MB 2. com.github.Eloston.UngoogledChromium.Locale stable i flathub < 112.8 kB 3. com.github.Eloston.UngoogledChromium stable i flathub < 119.0 MB Proceed with these changes to the system installation? [Y/n]:

or if you don't know or don't want to type the exact package name:

~$ flatpak --user install chromium Looking for matches… Similar refs found for ‘chromium’ in remote ‘flathub’ (system): 1) app/net.sourceforge.chromium-bsu/x86_64/stable 2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable 3) runtime/org.chromium.Chromium.Codecs/x86_64/stable 4) app/org.chromium.Chromium/x86_64/stable 5) app/com.github.Eloston.UngoogledChromium/x86_64/stable Which do you want to use (0 to abort)? [0-5]:


Remove

To remove a package run: flatpak --user remove <applicationname>

~$ flatpak --user remove com.github.Eloston.UngoogledChromium ID Branch Op 1. com.github.Eloston.UngoogledChromium stable r 2. com.github.Eloston.UngoogledChromium.Codecs stable r 3. com.github.Eloston.UngoogledChromium.Locale stable r Proceed with these changes to the system installation? [Y/n]:


or if you don't know or don't want to type the exact package name:

~$ flatpak --user remove chromium Similar installed refs found for ‘chromium’: 1) app/com.github.Eloston.UngoogledChromium/x86_64/stable (system) 2) runtime/com.github.Eloston.UngoogledChromium.Codecs/x86_64/stable (system) 3) All of the above Which do you want to use (0 to abort)? [0-3]:

Developers

These are all hosted on Flathub.org.


Troubleshooting

This material is work-in-progress ...

More documentation and testing is needed, but everything currently here should be safe to follow.
(Last edited by WhyNotHugo on 18 May 2024.)

Permission errors

If you receive errors about permissions then you may need to add your user to the flatpak group.

Note: You need to log out and log back in or reboot for the group change(s) to take effect

Application launch errors

If the application is not starting try running it with

flatpak run the.application.name

on a terminal. If this yields an a dbus error starting with Failed to connect to session bus then you might solve this by adding

export $(dbus-launch)

in /etc/profile.

Fixing audio issues

Make sure that XDG_RUNTIME_DIR is properly configured and re-login if necessary.

When you launch a Flatpak you will need to start pulseaudio as well:

$ pulseaudio --start && flatpak run com.example.Example

Unable to upload files

If you are unable to upload files from the host, this maybe due to Flatpak sandbox and you may have to manually add the authorization.

This can be done with the following commands:

$ flatpak override ApplicationID --filesystem=/home/user/Downloads

Where ApplicationID is given by:

$ flatpak list

For example:

$ flatpak override org.signal.Signal --filesystem=/home/user/Downloads

Error while opening repository

There is a current issue where sometimes flatpak will try to read the system-wide repository even if your install is with --user. This will result in failure to launch a flatpak application with the terminal reading ""error: While opening repository /var/lib/flatpak/repo: opening repo: opendir(/var/lib/flatpak/repo): No such file or directory". An alpine user has posted more information, as well as a workaround, at https://github.com/flatpak/flatpak/issues/5488

Links