Skip to main content

Linux Application Distribution

Tauri applications for Linux are distributed either with a Debian package (a file with the .deb extension) or as an AppImage when building using the Tauri CLI.

Limitations

Core libraries such as glibc frequently break compatibility with older systems. For this reason, you must build your Tauri application using the oldest base system you intend to support. A relatively old system such as Ubuntu 18.04 is more suited than Ubuntu 21.04, as the binary compiled on Ubuntu 21.04 will have a higher requirement of the glibc version, so when running on an older system, you will face a runtime error like /usr/lib/libc.so.6: version 'GLIBC_2.33' not found. We recommend using a Docker container or GitHub Actions to build your Tauri application for Linux.

See the issues rust-lang/rust#1355 and rust-lang/rust#57497, in addition to the AppImage guide for more information.

Debian

The stock Debian package generated by the Tauri bundler has everything you need to ship your application to Debian-based Linux distributions, defining your application's icons, generating a Desktop file, and specifying the dependencies libwebkit2gtk-4.0-37 and libgtk-3-0, along with libappindicator3-1 if your app uses the system tray.

If you need extended control over the Debian package, you can provide a list of folders or files to move to the package. The configuration object maps the path in the Debian package to the path to the file on your filesystem, relative to the core binary crate folder (./src-tauri by default). Here's an example configuration:

{
"tauri": {
"bundle": {
"deb": {
"files": {
"usr/share/my-app": "../assets/", // copy the entire assets directory to /usr/share/my-app
"/usr/share/doc/my-app/README.md": "../README.md" // copy a single file
}
}
}
}
}

AppImage

AppImage is a distribution format that does not rely on the system installed packages and instead bundles all dependencies and files needed by the application. For this reason, the output file is larger but easier to distribute since it is supported on many Linux distributions and can be executed without installation, just making the file executable (chmod a+x MyProject.AppImage) and running it (./MyProject.AppImage).

AppImages are convenient, simplifying the distribution process if you cannot make a package targeting the distribution's package manager. Still, you should carefully use it as the file size grows from the 2-6MBs range to 70+MBs.