Updater: Linux package installs update through their package manager #32

Merged
jared merged 1 commits from fix-linux-pkg-update into main 2026-09-30 19:00:55 -04:00
Owner

Fixes the in-app update on Linux package installs. Reported on CachyOS:

The update downloaded but couldn't be installed … Permission denied (os error 13) at path "/usr/bin/tauri_current_app50G5aG"

Tauri's Linux updater can only replace an AppImage. For a copy installed from the Arch package (or the .deb), it tries to write next to the binary in /usr/bin.

Changes

  • New command update_install_kind:
    • in-app on Windows, and for an AppImage ($APPIMAGE set);
    • pacman when /etc/os-release ID/ID_LIKE includes arch (Arch, CachyOS, Manjaro, EndeavourOS…);
    • deb for Debian, Ubuntu and derivatives;
    • manual otherwise.
  • install_update refuses up front on package installs (install: package-managed (…)), so it doesn't download the whole update first.
  • Web client: LotusGuild/cinny linux-package-updates PR, which shows the package-manager command instead.

Tested

  • Unit: CachyOS/Arch → pacman; Ubuntu/Debian/Mint → deb; Fedora/unknown → manual; AppImage and Windows → in-app.
  • Real Linux release build (Debian container, not an AppImage): update_install_kind → deb; install_update → install: package-managed (deb): … with no download.
  • Windows: type-checked; install_kind returns in-app there, so the Windows update path is unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA

Fixes the in-app update on **Linux package installs**. Reported on CachyOS: > The update downloaded but couldn't be installed … Permission denied (os error 13) at path "/usr/bin/tauri_current_app50G5aG" Tauri's Linux updater can only replace an **AppImage**. For a copy installed from the Arch package (or the .deb), it tries to write next to the binary in `/usr/bin`. ## Changes - **New command `update_install_kind`:** - `in-app` on Windows, and for an AppImage (`$APPIMAGE` set); - `pacman` when `/etc/os-release` `ID`/`ID_LIKE` includes `arch` (Arch, CachyOS, Manjaro, EndeavourOS…); - `deb` for Debian, Ubuntu and derivatives; - `manual` otherwise. - **`install_update` refuses up front** on package installs (`install: package-managed (…)`), so it doesn't download the whole update first. - **Web client:** LotusGuild/cinny linux-package-updates PR, which shows the package-manager command instead. ## Tested - **Unit:** CachyOS/Arch → pacman; Ubuntu/Debian/Mint → deb; Fedora/unknown → manual; AppImage and Windows → in-app. - **Real Linux release build (Debian container, not an AppImage):** `update_install_kind` → `deb`; `install_update` → `install: package-managed (deb): …` with no download. - **Windows:** type-checked; `install_kind` returns `in-app` there, so the Windows update path is unchanged. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
jared added 1 commit 2026-09-30 19:00:43 -04:00
On CachyOS the in-app update failed with "Permission denied (os error 13)
at path /usr/bin/tauri_current_app…": the app was installed from the
Arch package, and Tauri's Linux updater can only replace an AppImage — for
anything else it tries to write next to the binary in /usr/bin.

- update_install_kind command: "in-app" on Windows and for an AppImage
  ($APPIMAGE set); on Linux package installs "pacman" (ID/ID_LIKE arch:
  Arch, CachyOS, Manjaro, EndeavourOS…), "deb" (debian/ubuntu and
  derivatives) or "manual". The web UI shows the matching update command.
- install_update refuses up front on a package install
  ("install: package-managed (…)") instead of downloading the whole
  update and failing at the last step.

Tests: CachyOS/Arch → pacman; Ubuntu/Debian/Mint → deb; Fedora/unknown →
manual; AppImage and Windows → in-app.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PPmy3tPq869XDW4njjVaKA
jared merged commit 4e98503c49 into main 2026-09-30 19:00:55 -04:00
Sign in to join this conversation.