Going Official: Migrating from the Unofficial Claude Desktop Build to Anthropic’s Linux Beta

Right after chasing down a singleton-lock bug in the unofficial Claude Desktop build, Anthropic's official Linux beta landed — signed, apt-installable, and free of the workaround entirely. Here's the migration: a package-name collision to watch for, GPG key verification, and cleaning up the old launcher override left behind by the previous fix.

The Trigger

Right after documenting the singleton-lock bug in the unofficial Claude Desktop build, the obvious next question came up: does this problem exist because the build itself is unofficial? As it turns out, timing worked out well — Anthropic shipped an official Claude Desktop beta for Debian and Ubuntu (via apt) back on June 30, 2026. Since the Debian laptop in this lab already runs Debian 13 (trixie), well within the supported range (Debian 12+, x86_64/arm64), migrating off the community-repackaged build was worth doing properly rather than patching around it forever.

What “Official” Actually Buys You

The unofficial build (claude-desktop-unofficial, from the well-known aaddrick/claude-desktop-debian project) works by extracting and repackaging Anthropic’s Windows release for Linux. It’s a genuinely useful project — but it’s unsigned, maintained by volunteers, and inherits whatever quirks come with running a Windows-targeted Electron build on a different OS. The stale singleton-lock bug from the last post is exactly the kind of edge case more likely to slip through that path.

The official build, by contrast:

  • Is signed with Anthropic’s own GPG key
  • Installs and updates through a normal apt repository — no more manual .deb downloads or waiting on a third-party maintainer to catch up
  • Ships the same Chat, Cowork, and Claude Code experience as macOS and Windows

It’s still in beta on Linux, though, and two features aren’t there yet: Computer Use (screen/app control) and voice dictation. Both are available on macOS/Windows already, and Anthropic says Computer Use is coming to Linux later. Fedora and RHEL aren’t supported yet either — Debian and Ubuntu only, for now.

The One Gotcha: A Package Name Collision

Before installing anything new, dpkg -l | grep -i claude turned up something worth flagging for anyone doing this same migration:

ii  claude-desktop              1.16000.0-1      all     Transitional package for the rename to claude-desktop-unofficial
ii  claude-desktop-unofficial   1.40609.1-3.2.3  amd64   Claude Desktop for Linux

The unofficial project had, at some point, renamed its own package from claude-desktop to claude-desktop-unofficial, leaving behind a small transitional stub still called claude-desktop. That’s exactly the same name the official Anthropic package uses. Installing the official version on top of that without cleaning up first risks a naming conflict or, worse, silently keeping the wrong binary wired up to old lock files or launchers.

The fix was simple — remove both first:

bash

sudo apt remove claude-desktop claude-desktop-unofficial

Installing the Real Thing

With the old packages gone, the official install is a standard three-step signed-repository setup.

1. Download and verify Anthropic’s signing key:

bash

sudo curl -fsSLo /usr/share/keyrings/claude-desktop-archive-keyring.asc \
  https://downloads.claude.ai/claude-desktop/key.asc

gpg --show-keys /usr/share/keyrings/claude-desktop-archive-keyring.asc

The fingerprint should read 31DD DE24 DDFA B679 F42D 7BD2 BAA9 29FF 1A7E CACE. Confirming this before trusting the key matters — it’s the whole point of a signed repository. If it doesn’t match, don’t proceed; something’s wrong with the download or you’re being handed a spoofed key.

2. Register the repository and install:

bash

echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/claude-desktop-archive-keyring.asc] https://downloads.claude.ai/claude-desktop/apt/stable stable main" | sudo tee /etc/apt/sources.list.d/claude-desktop.list

sudo apt update && sudo apt install claude-desktop

168 MB later, version 1.46388.2 was in. From here forward, updates arrive with the rest of the system via sudo apt update && sudo apt upgrade — no more checking GitHub for a new .deb.

Cleaning Up After the Old Build

Two loose ends needed tidying up, both artifacts of the workaround built for the unofficial version:

Stale processes. A handful of old claude-desktop processes were still hanging around post-install (ps showed bash, chrome_crashpad, and a few claude-desktop PIDs still alive). A pkill -9 -f claude-desktop cleared them before the first launch of the new build, avoiding any chance of the same lingering-process/lock-file confusion from the last post.

The custom launcher override. Back when fixing the singleton-lock bug, a personal desktop-entry override was created at ~/.local/share/applications/claude-desktop-unofficial.desktop, pointing the app icon at a self-healing wrapper script instead of the raw binary. That override was specific to the unofficial package’s binary name and no longer applied — the official package ships its own clean .desktop file, with its own launcher, unaffected by any of the old workarounds. Removing the stale override and refreshing the desktop database made sure nothing conflicted:

bash

rm ~/.local/share/applications/claude-desktop-unofficial.desktop
update-desktop-database ~/.local/share/applications/

Result

Clicking the taskbar icon now launches the signed, officially-supported build, updated through the normal Debian package pipeline going forward. No more singleton-lock workaround needed — that failure mode was specific to how the unofficial build handled process lifecycle, and the official build is a genuinely different codebase and packaging pipeline.

Takeaway

This is a good reminder to periodically check whether a “best available workaround” has been superseded by an actual first-party solution — especially in a space moving as fast as AI tooling. The unofficial Debian build was the right answer for a long time, and the project behind it deserves credit for filling a real gap. But once Anthropic shipped official support, the calculus changed, and migrating cleanly (rather than layering more patches on the old setup) was worth the twenty minutes it took.


Filed under Lab Journal, following up on The Case of the Vanishing Window.