gitbutler icon indicating copy to clipboard operation
gitbutler copied to clipboard

Linux Distribution Compatibility

Open Byron opened this issue 7 months ago • 23 comments

Currently our distributables require Ubuntu 24 at the very least to have a chance to run, and by the look of https://github.com/tauri-apps/tauri/issues/9039 there are more caveats as to which distributable runs where.

The way to solve this puzzle may be a Matrix to keep track of what runs and what doesn't.

To not forget, here is a community guide for how to use GitButler on WSL, but maybe it can also be seen as guide to make the distribution actually work on Linux.

Current Status 🛠️

  • Our distribution doesn't seem to be working very well, nor is it working on very many Linux systems.
  • Solutions would be ideal from the Tauri side, as it benefits the entire downstream
    • It's possible to think of shipping the browser along with the Application as well, Tauri was experimenting with that, even if it's only used by the Linux platform.

Distributable Compatibility - Built on Ubuntu 22.04 / 24.04 (Intel)

  • Use our installables (as uploaded to the website)
Distribution Package Format Compatibility Status Notes (Specific Issues/Caveats)
Debian DEB-22
DEB-24
AppImage-22
AppImage-24
Ubuntu 22 DEB-22 Uses 1.1GB on disk, but might be ARM/Intel confusion, assertion error upon startup
DEB-24
AppImage-22
AppImage-24
Fedora RPM-22
RPM-24
AppImage-22
AppImage-24
openSUSE RPM-22
RPM-24
AppImage-22
AppImage-24
Mint DEB-22
DEB-24
AppImage-22
AppImage-24
Pop!_OS DEB-22
DEB-24
AppImage-22
AppImage-24
Arch Linux AppImage-22
AppImage-24
CentOS/RHEL RPM-22
RPM-24
AppImage-22
AppImage-24
AlmaLinux RPM-22
RPM-24
AppImage-22
AppImage-24

Key for "Compatibility Status" Column:

  • Yes: The package/distributable is known to work well when built specifically using the indicated Ubuntu version.
  • No: The package/distributable does not function correctly, or has significant issues, when built on that version of Ubuntu.
  • Limited: The package works with some limitations (e.g., requires specific dependencies to be installed manually, may have performance issues).
  • Unknown: Compatibility hasn't been tested yet.

Notes Column:

Use this column to provide details about:

  • Specific dependency requirements.
  • Known bugs or workarounds.
  • Performance differences between builds on different Ubuntu versions.
  • Any other relevant information that would help users understand compatibility.

Distribution Notes

  • Assertion error when running the Intel version on an ARM architecture Ubuntu with Rosetta, unclear if that's causing the assertion failure.

Possibly Relevant PRs

  • https://github.com/gitbutlerapp/gitbutler/pull/5955

Related Tauri Issues

  • https://github.com/tauri-apps/tauri/issues/10749
  • https://github.com/tauri-apps/tauri/issues/14208
  • https://github.com/tauri-apps/tauri/issues/13508

Related issues

Run this search.

This list was created from the search above.

  • [ ] https://github.com/gitbutlerapp/gitbutler/issues/6076#issuecomment-2880019848
  • [ ] #7683
  • [ ] #7682
  • [ ] #7671
  • [ ] #5907
  • [x] #5888
  • [ ] #5873
  • [ ] #5638
  • [ ] #4955
  • [ ] #4217
  • [x] #2691
  • [ ] #8484
  • [ ] #8582
  • [x] #5493
  • [ ] #9254
  • [ ] #9457
  • [x] #9507
  • [x] #9519
  • [ ] #9533
  • [ ] #9536
  • [ ] #9738
  • [ ] #9955
  • [ ] #10217
  • [ ] #11337

Keyring Usability

The keyring crate may not work the same on all distributions and/or installation methods, sometimes 'forgetting' what was stored so users have to re-enter everything after restarting the App.

Thus I believe this needs separate testing and possibly tuning, from what I remember there are cargo-features to try out.

From Discord

Original Message

Hello, im having 2 issues Updating (Workaround):, Currently every time gitbutler asks for an update it tries to install it in its tauri directory and without sudo Could be fixable by asking the user for sudo or simmilar Workaround: Press the link to https://app.gitbutler.com/downloads download rpm and dnf install (fedora) Freeze on any mildly significant workload, Vite (i think it may be tauri too) often Crashes after:

generating a message with more than 6 changed files, starting commit when many lines changed, commiting (sometimes), sometimes out of the blue, all only when i interact with the gui (e.g. not if im on another screen) Only somewhat reliable Workaround: close window, open new window

Another Quality of Life thing: In Linux (at least in fedora) gitbutler starts a gitbutler-tauri window. Would it be possible to make that window "connect" with gitbutler (idk how to explain this) so that in the dash tauri appears as a window of GitButler this would help prevent confusion when "opening" gitbutler with gitbutler-tauri (with no logo) open.

Thanks very mutch Personally the second Issue would be the most important one Even happens when deselecting 5 entries

Byron avatar May 06 '25 07:05 Byron

Some background info: Tauri 2 requires libqebkit2gtk-4.1.

This is only available by default in the Ubuntu 22+ repos, therefore Tauri v2 apps, like ours, will only work in that version and its derivatives (mint, popos, debian, etc). Fedora/CentOS/Rhel/AlamaLinux and their derivatives are a different story, and opensuse is another ecosystem again. Arch Linux is also another whole ecosystem.

I would recommend focusing on the debian/ubuntu ecosystem first. That scopes it down to a manageable level and those are the most common distro among our users iirc by a good margin

I remember the latest version of libwebkit2gtk-4.1 from both the Ubuntu 24 and ubuntu22 repos was broken as of a few months ago. The 2nd latest version in the Ubuntu 22 repos was like 3 years old and didn't support a bunch of css features that we used in the app. So long story short, our only option was to use the Ubuntu 24 libwebkit2gtk-4.1 2nd latest version (only like ~3 months old at the time), unfortunately as others have mentioned, that then necessitates a newer glibc version as well basically locking out users on Ubuntu 22 and its derivatives.

ndom91 avatar May 09 '25 19:05 ndom91

Thanks so much for chiming in, and for making clear why Ubuntu 24 is currently needed - it's all about the actual version of libwebkit2gtk-4.1, whose capabilities differ wildly despite seemingly similar version numbers.

I will also add the Linux family to the table above to make it more obvious which Linux distributions have a chance to work even if not every one is manually tested, the next time I get to work on this.

Generated Summary of Linux Families

Okay, here's a breakdown of Linux ecosystems (families of distributions), categorized by their primary base/upstream project and with examples. I'll try to be comprehensive, but the Linux world is very fragmented, so this isn't exhaustive. I'll also give a little indication of typical user focus where relevant.

Important Notes Before We Start:

  • "Base" vs. "Downstream": A base distribution (like Debian or Arch) provides the core infrastructure and package management. Distributions built from that base are called downstream distributions, derivatives, or remasters.
  • Overlap: Some distros borrow from multiple sources, making categorization tricky. I'll try to place them where their primary influence lies.
  • Active vs. Inactive: I'll note if a distro is generally considered actively maintained. Some older ones are still around but may not be ideal for new users.

1. Debian Ecosystem (Very Large & Influential)

Debian is known for its stability, strong community principles, and huge package repository. It's the foundation for many popular distros.

  • Ubuntu: (Most Popular) User-friendly, regular releases, large community, lots of support. Focus: Desktop, Server, Cloud, IoT
    • Linux Mint: (Very Popular) Based on Ubuntu LTS, Cinnamon/MATE/Xfce desktops, very user-friendly, often preferred by Windows converts. Focus: Desktop
    • Pop!_OS: (Growing in popularity) Based on Ubuntu, geared towards developers and gamers, excellent hardware support (especially NVIDIA). Focus: Developers, Gamers, Creators
    • Xubuntu: Lightweight desktop environment (Xfce), good for older hardware. Focus: Desktop, Resource-constrained systems
    • Kubuntu: KDE Plasma desktop environment. Focus: Desktop, Customization
    • Lubuntu: Extremely lightweight desktop environment (LXQt). Focus: Older Hardware, Low resource usage
    • Ubuntu MATE: Uses the MATE desktop environment. Focus: Traditional desktop experience
    • Debian Dog: Lightweight, based on Debian, often used for rescue disks and live systems. Focus: Live Systems, Rescue Disks
    • MX Linux: (Popular) Based on Debian Stable with antiX components, known for stability, good performance, and a user-friendly experience. Focus: Desktop, Stability, Performance
  • Raspberry Pi OS (formerly Raspbian): Optimized for Raspberry Pi hardware. Focus: Embedded Systems, IoT, Education
  • Deepin: (Popular in China) Beautiful desktop environment, based on Debian, focus on aesthetics and ease of use. Focus: Desktop

2. Red Hat Ecosystem (Enterprise Focused)

Red Hat Enterprise Linux (RHEL) is a commercial distribution known for its stability, security, and long-term support. CentOS historically was the community rebuild of RHEL, but that has changed significantly.

  • Rocky Linux: (Very Popular) Aims to be a true successor to CentOS, providing a stable, enterprise-grade OS compatible with RHEL. Focus: Servers, Enterprise
  • AlmaLinux: (Very Popular) Another RHEL rebuild aiming for binary compatibility and long-term stability. Focus: Servers, Enterprise
  • Fedora: (Popular) Red Hat's community distribution, cutting edge, used for testing new technologies before they go into RHEL. Focus: Developers, Early Adopters
    • CentOS Stream: A rolling release upstream of RHEL. It is not a direct rebuild of RHEL anymore; it feeds into RHEL development. Focus: Developers, Testing
  • Scientific Linux: (Inactive) Historically a scientific computing-focused RHEL rebuild. Development has largely ceased.

3. Arch Linux Ecosystem (Highly Customizable)

Arch Linux is known for its simplicity, rolling release model, and "do-it-yourself" philosophy. It requires more technical knowledge but offers great flexibility.

  • Manjaro: (Very Popular) User-friendly distribution based on Arch, provides a graphical installer and pre-configured desktop environments. Focus: Desktop, Intermediate Users
    • EndeavourOS: (Popular) A terminal-centric distro that aims to be closer to Arch than Manjaro, but still easier to install. Focus: Intermediate/Advanced users who want an Arch experience without the full manual installation.
  • Garuda Linux: (Growing in popularity) Based on Arch, focused on gaming and performance with a variety of desktop environments. Focus: Gamers, Power Users
  • Artix Linux: Uses different init systems (runit, OpenRC, s6) instead of systemd. Focus: Systemd alternatives, Advanced users

4. SUSE/openSUSE Ecosystem (German Engineering)

openSUSE is known for its YaST configuration tool and strong community support.

  • openSUSE Leap: A stable, enterprise-focused distribution. Focus: Servers, Desktop
  • openSUSE Tumbleweed: A rolling release distribution with the latest packages. Focus: Developers, Early Adopters
  • SUSE Linux Enterprise (SLE): Commercial version of openSUSE, focused on stability and support.

5. Gentoo Ecosystem (Source-Based)

Gentoo is a highly customizable distribution where you compile everything from source code. It's very powerful but requires significant time and effort.

  • Calculate Linux: Based on Gentoo, provides pre-configured templates for various desktop environments and server roles. Focus: Desktop, Servers
  • Sabayon Linux: Another Gentoo-based distribution with a focus on ease of use and multimedia support. Focus: Desktop, Multimedia

6. Slackware Ecosystem (Oldest Surviving)

Slackware is one of the oldest surviving Linux distributions, known for its simplicity and adherence to Unix principles.

  • Zenwalk: Based on Slackware, provides a user-friendly desktop environment and pre-configured applications. Focus: Desktop
  • Salix OS: Another Slackware-based distribution with a focus on lightweightness and usability. Focus: Desktop, Older Hardware

7. Independent/Unique Ecosystems (Not Directly Based on the Above)

These distributions have their own unique foundations or are significantly different from the mainstream ecosystems.

  • Void Linux: An independent distribution that uses runit as its init system and xbps package manager. Focus: Performance, Simplicity
  • NixOS: A declarative configuration management system and operating system. Focus: Reproducibility, Configuration Management
  • Alpine Linux: Extremely lightweight distribution based on musl libc and BusyBox. Often used in containers and embedded systems. Focus: Containers, Embedded Systems, Security
  • antiX: Lightweight Debian-based distro focused on older hardware. Uses sysvinit instead of systemd.

Resources for Further Exploration:

This should give you a good overview of the major Linux ecosystems and their derivatives. Remember that this is a dynamic landscape, so new distributions are always appearing, and existing ones evolve over time. Choosing the right distribution depends on your specific needs and technical expertise.

Byron avatar May 12 '25 07:05 Byron

Also this happens on Ubuntu 24.

Image

Originally on https://discord.com/channels/1060193121130000425/1206670506271707156/1397535081115025460 .

Resources

  • the updater plugin itself for installing a deb package.
  • the source of the error message: https://github.com/tauri-apps/plugins-workspace/blob/27ddcd0abe07860ad94092baefcbe771548289b6/plugins/updater/src/updater.rs#L971

Byron avatar Jul 23 '25 11:07 Byron

Some of us work in The Enterprise™️ and we have to use older OSes, so having GitButler only work on super recent Glibc versions is going to shut you off the enterprise market IMO.

For reference, we are currently on RHEL 8.10, with no intention to switch to even 9.x for another couple of years. The "remote SSH" solution mentioned in #2628 would be a solid workaround, since it looks like your recent Glibc/GTK requirements are coming from the GUI toolkit you use.

woopla avatar Jul 24 '25 18:07 woopla

You are absolutely right, it's a huge issue and there is no tauri-based solution in sight.

That's also why are looking to switch to Electron, which enables shipping a frontend (with similar issues, maybe), but also to run a backend and the frontend is exclusively in the system browser. This would definitely solve a big problem for us.

Byron avatar Jul 24 '25 19:07 Byron

Hello there, ive had issues the past few months with the keychain plugin logging me out on every system restart and the small thing of tauri spawning a "gitbutler-tauri" window seperate of the executable. i dont know anymore its almost 23:00 and i cant really remember signing in to gitbutler today. I think the "gitbutler-tauri" window problem has been fixed between 0.5.1417 and 0.5.1432 Image And i got a feeling the keychain problem has also been fixed between 0.5.1417 and 0.5.1432

I obviously didnt use the Update Now button for a long time (OP of the Discord Thread) so ill update you on that tomorrow.

Thanks for the Progress!

JackatDJL avatar Jul 24 '25 20:07 JackatDJL

Also just noticed: Id love to help with @Byron 's table in the OP. i use Fedora and always download Linux Intel (RPM) from app.gitbutler.com/downloads with that install the only issues that remain on my end are that the keychain may not be working (but i dont know about today anymore) and the auto update (witch i forgot to test)

Ill try the AppImage tomorrow allthough that link is only showing (nightly) on https://gitbutler.com/downloads and not app.gitbutler.com/downloads and i did not find the flatpack on booth

Edit: forgot 2 issues: i often tell the gemini cli (with but mcp) to read git diff HEAD, summarize it and run update_branches because your ai integration often misses the point of an update e.g. takes the first 3 files in the changed list and summarizes them. but some things arent working quite right: after the mcp call happenes the changed files (except always one file) disapear from unassigned but the new commit doesnt appear and the call doesnt appear in the Actions tab until i reload once STRG + R. And as mentioned previously one file always doesnt get picked (may be random but the last few times it were files that were renamed / moved)

JackatDJL avatar Jul 24 '25 21:07 JackatDJL

Thanks for sharing @JackatDJL, it's much appreciated!

I am glad to head the the keychain integration now works as well, there was a contributed fix for that. It turned out that the feature we chose was not persisting.

The auto-updater not working now has an issue as well in case you want to follow it: #9533.

And regarding but mcp, I think this could be its own issue as it should be unrelated to Linux - did you find one open already that matches what you are experiencing? If not, I think it's worth opening one particularly if you can create a screen recording of the issue to make it more graspable, easier to reproduce.

Also just noticed: Id love to help with @Byron 's table in the OP. i use Fedora and always download Linux Intel (RPM) from app.gitbutler.com/downloads with that install the only issues that remain on my end are that the keychain may not be working (but i dont know about today anymore) and the auto update (witch i forgot to test)

Please let me know how it goes.

Byron avatar Jul 25 '25 03:07 Byron

Hello Again, Ive confirmed the Keychain plugin works even after restart. The Download Update Feature downloads the update fine (like before) and fails at the actual install step with message: Permission denied (os error 13) at path "/usr/bin/tauri_current_appvGLaFo" i dont know if this is a gitbutler issue but the updater should ask for sudo then it should work fine

regarding mcp i didnt create a issue for that yet

JackatDJL avatar Jul 26 '25 22:07 JackatDJL

The Linux Appimage works on Fedora with issues specified above

note: https://app.gitbutler.com/downloads now has 4 macOs Intel links??

JackatDJL avatar Jul 26 '25 22:07 JackatDJL

Thanks for sharing.

Permission denied (os error 13) at path "/usr/bin/tauri_current_appvGLaFo"

This is new to me, and it seems like it isn't allowed to execute programs. If this is launched from a container format, it probably needs special permissions for that which might not be set.

note: https://app.gitbutler.com/downloads now has 4 macOs Intel links??

It looks like it. Is that surprising?

Byron avatar Jul 27 '25 05:07 Byron

Permission denied (os error 13) at path "/usr/bin/tauri_current_appvGLaFo"

This is new to me, and it seems like it isn't allowed to execute programs. If this is launched from a container format, it probably needs special permissions for that which might not be set.

i use gitbutler with the Linux Intel (RPM) download installed with dnf and dnf needs superuser permissions to install or update programs

note: https://app.gitbutler.com/downloads now has 4 macOs Intel links??

It looks like it. Is that surprising?

yes most nightly updates only have one macOs Intel download links/files

JackatDJL avatar Jul 27 '25 18:07 JackatDJL

i use gitbutler with the Linux Intel (RPM) download installed with dnf and dnf needs superuser permissions to install or update programs

I see. The it looks like the auto-updater shipping with Tauri has no chance of working there then.

yes most nightly updates only have one macOs Intel download links/files

I see my mistake now - I thought the surprise was about the Intel part, but it was about the number of Intel packages provided for Linux.

Image

Byron avatar Jul 28 '25 02:07 Byron

Image about the Flatpack downloads, where do i find them?

JackatDJL avatar Jul 29 '25 20:07 JackatDJL

My apologies, the table was AI generated and I didn't catch the problem: we don't provide Flatpaks, and the ones that seem to exist are community maintained. I do not know where one would obtain them and can't endorse using them either as nobody can know what's in it.

Byron avatar Jul 30 '25 03:07 Byron

Sorry, but do you have any public facing api to fetch the latest current version / nightly version? i see the downloads direct to a https://releases.gitbutler.com/releases/nightly/{version}/linux/x86_64/{actual filename that may differ (current nightly 0.5.1445 has a -1 appended at the linux rpm)

Would it be possible to expose an endpoint that rewrites the request to the latest file e.g. releases.gitbutler.com/download/nightly/latest/linux/rpm ? im trying to automate the update because im slowly fed up needing to update gitbutler almost daily (not the problem i love beta / nightly) by downloading through the site and then needing to install it.

Would it also be possible to expose just the latest version / nightly string? so that i can write a script that dnf if -q git-butler-nightly | grep Version | awk '{print $3}' and compares it with the response of the request to the endpoint and then curls the latest nightly file to a temp location installs it and deletes it

JackatDJL avatar Jul 31 '25 19:07 JackatDJL

Thanks for sharing! All that sounds like a very reasonable ask. Unfortunately I don't know much about thefse endpoints nor do I have access to them, but @krlvi can probably get the ball rolling in this area.

Byron avatar Aug 01 '25 03:08 Byron

...we don't provide Flatpaks, and the ones that seem to exist are community maintained. I do not know where one would obtain them and can't endorse using them either as nobody can know what's in it.

@Byron The Flatpak version that users get via Flathub comes from flathub/com.gitbutler.gitbutler. It was created by another Github user in Feb 2024, but automated updates to the Flatpak stopped at v0.13.8. The Flatpak submission process is explained here

b2m9 avatar Aug 06 '25 12:08 b2m9

Also this happens on Ubuntu 24.

Image Originally on https://discord.com/channels/1060193121130000425/1206670506271707156/1397535081115025460 .

Resources

  • the updater plugin itself for installing a deb package.
  • the source of the error message: https://github.com/tauri-apps/plugins-workspace/blob/27ddcd0abe07860ad94092baefcbe771548289b6/plugins/updater/src/updater.rs#L971

Regarding this issue, I have a feeling that we might be building v1 versions of the image, but try to install it with a more recent version of the updater, which probably fails.

From the publish logs.

[!WARNING] [tauri_bundler::bundle] Legacy v1 compatible updater is deprecated and will be removed in v3, change bundle > createUpdaterArtifacts to true when your users are updated to the version with v2 updater plugin

This seems to be the place to adjust it

https://github.com/gitbutlerapp/gitbutler/blob/5a06e4dde8bd11d3e92b70906fbe61adc0d292db/crates/gitbutler-tauri/tauri.conf.json#L14

@krlvi Do you think we should give changing this to true a try to maybe fix the linux auto-update issues?

Byron avatar Sep 02 '25 04:09 Byron

Just to keep track, here is a workaround for the GlibC compatibility issue, allowing to run GitButler on Ubuntu 22: https://github.com/gitbutlerapp/gitbutler/issues/7671#issuecomment-3287414403

Byron avatar Sep 13 '25 06:09 Byron

It works flawlessly now in Pop!_OS 24.04 beta release. https://system76.com/pop/pop-beta/

uratmangun avatar Sep 29 '25 01:09 uratmangun

Doesn't work on Manjaro with KDE Wayland. Flatpak and AUR package error out:

flatpak:

** (git-butler:2): WARNING **: 01:20:30.132: webkit_settings_set_enable_offline_web_application_cache is deprecated and does nothing.
2025-10-24T23:20:30.134476Z  INFO crates/gitbutler-tauri/src/main.rs:64: system git executable for fetch/push: "git"
2025-10-24T23:20:30.134509Z  INFO crates/gitbutler-tauri/src/main.rs:101: starting app version=0.13.8 name=GitButler
Gdk-Message: 01:20:30.337: Error 71 (Protocol error) dispatching to Wayland display.

aur:

2025-10-24T23:22:33.788420Z  INFO crates/gitbutler-tauri/src/main.rs:401: TERM is set - assuming the app is run from a terminal with suitable environment variables
2025-10-24T23:22:33.788432Z  INFO crates/gitbutler-tauri/src/main.rs:91: system git executable for fetch/push: "git"
2025-10-24T23:22:33.788444Z  INFO crates/gitbutler-tauri/src/main.rs:98: SHELL env: Some("/usr/bin/zsh")
2025-10-24T23:22:33.788480Z  INFO crates/gitbutler-tauri/src/main.rs:133: starting app version=0.16.10 name=GitButler
Gdk-Message: 01:22:34.094: Error 71 (Protocol error) dispatching to Wayland display.                     

StefanH-AT avatar Oct 24 '25 23:10 StefanH-AT

App image works interestingly enough!

StefanH-AT avatar Oct 24 '25 23:10 StefanH-AT

I made a fairly lengthy comment here regarding distro compat: https://github.com/gitbutlerapp/gitbutler/issues/7671#issuecomment-3591558807

I think it should be relatively straightforward getting Ubuntu 22.04 compatibility to work (at least for the moment), and along with that many older distros than are currently supported. I'll try to put some time in on this tomorrow.

slarse avatar Nov 29 '25 10:11 slarse